Beispiel #1
0
        public void Destroy()
        {
            DestroySwapStuff();

            mPipeLayout.Dispose();

            foreach (Semaphore sem in mImageAvail)
            {
                sem.Dispose();
            }
            foreach (Semaphore sem in mRenderFinished)
            {
                sem.Dispose();
            }
            foreach (Fence f in mInFlight)
            {
                f.Dispose();
            }
            foreach (KeyValuePair <string, ShaderModule> sm in mShaders)
            {
                sm.Value.Dispose();
            }
            mImageAvail.Clear();
            mRenderFinished.Clear();
            mInFlight.Clear();
            mShaders.Clear();
        }
        public void Build()
        {
            DescriptorSetLayout?.Dispose();
            PipelineLayout?.Dispose();
            //UsingSamplers?.DisposeRange();
            DescriptorPool?.Dispose();
            RenderPass?.Dispose();
            Pipeline?.Dispose();

            DescriptorSetLayout = VKHelper.CreateDescriptorSetLayout(Graphics, DescriptorItems);
            PipelineLayout      = VKHelper.CreatePipelineLayout(Graphics, DescriptorSetLayout);
            DescriptorPool      = VKHelper.CreateDescriptorPool(Graphics, DescriptorItems);
            DescriptorSet       = VKHelper.CreateDescriptorSet(DescriptorPool, DescriptorSetLayout, DescriptorItems, out UsingSamplers);
            RenderPass          = VKHelper.CreateRenderPass(Graphics, ClearDepthOnBeginPass);
            Pipeline            = VKHelper.CreateGraphicsPipeline(Graphics, PipelineLayout, RenderPass, Shaders, DepthTest, DepthWrite, Instancing, InstanceInfoType, BlendMode, PrimitiveType, PrimitiveRenderMode, PrimitiveCullMode, LineWidth, ViewportPos, ViewportSize);
        }
 public void Dispose()
 {
     pipeline?.Dispose();
     pipelineLayout?.Dispose();
     inputBlock?.Free();
     vertModule.Dispose();
     fragModule.Dispose();
 }
Beispiel #4
0
        private void RecreateSwapChain()
        {
            device.WaitIdle();

            commandPool.FreeCommandBuffers(commandBuffers);

            foreach (var frameBuffer in frameBuffers)
            {
                frameBuffer.Dispose();
            }
            frameBuffers = null;

            pipeline.Dispose();
            pipeline = null;

            pipelineLayout.Dispose();
            pipelineLayout = null;

            foreach (var imageView in swapChainImageViews)
            {
                imageView.Dispose();
            }
            swapChainImageViews = null;

            renderPass.Dispose();
            renderPass = null;

            swapChain.Dispose();
            swapChain = null;

            CreateSwapChain();
            CreateImageViews();
            CreateRenderPass();
            CreateGraphicsPipeline();
            CreateFrameBuffers();
            CreateCommandBuffers();
        }
Beispiel #5
0
        public void Dispose()
        {
            if (_disposed)
            {
                return;
            }

            Output.Dispose();
            Inputs.ForEach(input => input.Dispose());
            _descriptorPool.Dispose();
            _pipeline.Dispose();
            _pipelineLayout.Dispose();
            _descriptorSetLayout.Dispose();
            _commandPool.Dispose();
            _fence.Dispose();

            _disposed = true;
        }
 public void Cleanup()
 {
     /*
      * Clean up all Vulkan Resources.
      */
     bufferMemory.Dispose();
     buffer.Dispose();
     computeShaderModule.Dispose();
     descriptorPool.Dispose();
     descriptorSetLayout.Dispose();
     pipelineLayout.Dispose();
     foreach (Pipeline pipeline in pipelines)
     {
         pipeline.Dispose();
     }
     commandPool.Dispose();
     device.Dispose();
     instance.Dispose();
 }