public VkRenderContext(VkSurfaceSource surfaceInfo, int width, int height)
        {
            CreateInstance();
            CreateSurface(surfaceInfo);
            CreatePhysicalDevice();
            CreateLogicalDevice();
            _memoryManager  = new VkDeviceMemoryManager(_device, _physicalDevice);
            ResourceFactory = new VkResourceFactory(this);
            _scInfo         = new VkSwapchainInfo(_device, _physicalDevice, (VkResourceFactory)ResourceFactory, _surface, _graphicsQueueIndex, _presentQueueIndex, width, height);
            SetFramebuffer(_scInfo);
            CreatePerFrameCommandPool();
            CreatePerFrameDescriptorPool();
            CreateGraphicsCommandPool();
            CreateSemaphores();
            _resourceCache = new VkResourceCache(_device, (VkSamplerState)PointSampler);

            PostContextCreated();
        }
 private void CreateSurface(VkSurfaceSource surfaceInfo)
 {
     _surface = surfaceInfo.CreateSurface(_instance);
 }