Ejemplo n.º 1
0
        protected QueryPool(Device device, VkQueryType queryType, VkQueryPipelineStatisticFlags statisticFlags, uint count = 1)
            : base(device)
        {
            createInfos = VkQueryPoolCreateInfo.New(queryType, statisticFlags, count);

            //Activate ();
        }
Ejemplo n.º 2
0
        public PipelineStatisticsQueryPool(Device device, VkQueryPipelineStatisticFlags statisticFlags, uint count = 1)
            : base(device, VkQueryType.PipelineStatistics, statisticFlags, count)
        {
            List <VkQueryPipelineStatisticFlags> requests = new List <VkQueryPipelineStatisticFlags> ();

            if (statisticFlags.HasFlag(VkQueryPipelineStatisticFlags.InputAssemblyVertices))
            {
                requests.Add(VkQueryPipelineStatisticFlags.InputAssemblyVertices);
            }
            if (statisticFlags.HasFlag(VkQueryPipelineStatisticFlags.InputAssemblyPrimitives))
            {
                requests.Add(VkQueryPipelineStatisticFlags.InputAssemblyPrimitives);
            }
            if (statisticFlags.HasFlag(VkQueryPipelineStatisticFlags.VertexShaderInvocations))
            {
                requests.Add(VkQueryPipelineStatisticFlags.VertexShaderInvocations);
            }
            if (statisticFlags.HasFlag(VkQueryPipelineStatisticFlags.GeometryShaderInvocations))
            {
                requests.Add(VkQueryPipelineStatisticFlags.GeometryShaderInvocations);
            }
            if (statisticFlags.HasFlag(VkQueryPipelineStatisticFlags.GeometryShaderPrimitives))
            {
                requests.Add(VkQueryPipelineStatisticFlags.GeometryShaderPrimitives);
            }
            if (statisticFlags.HasFlag(VkQueryPipelineStatisticFlags.ClippingInvocations))
            {
                requests.Add(VkQueryPipelineStatisticFlags.ClippingInvocations);
            }
            if (statisticFlags.HasFlag(VkQueryPipelineStatisticFlags.ClippingPrimitives))
            {
                requests.Add(VkQueryPipelineStatisticFlags.ClippingPrimitives);
            }
            if (statisticFlags.HasFlag(VkQueryPipelineStatisticFlags.FragmentShaderInvocations))
            {
                requests.Add(VkQueryPipelineStatisticFlags.FragmentShaderInvocations);
            }
            if (statisticFlags.HasFlag(VkQueryPipelineStatisticFlags.TessellationControlShaderPatches))
            {
                requests.Add(VkQueryPipelineStatisticFlags.TessellationControlShaderPatches);
            }
            if (statisticFlags.HasFlag(VkQueryPipelineStatisticFlags.TessellationEvaluationShaderInvocations))
            {
                requests.Add(VkQueryPipelineStatisticFlags.TessellationEvaluationShaderInvocations);
            }
            if (statisticFlags.HasFlag(VkQueryPipelineStatisticFlags.ComputeShaderInvocations))
            {
                requests.Add(VkQueryPipelineStatisticFlags.ComputeShaderInvocations);
            }

            RequestedStats = requests.ToArray();

            resultLength = (uint)requests.Count;

            Activate();
        }
Ejemplo n.º 3
0
        public static VkQueryPoolCreateInfo New(VkQueryType queryType,
                                                VkQueryPipelineStatisticFlags statisticFlags = (VkQueryPipelineStatisticFlags)0, uint count = 1)
        {
            VkQueryPoolCreateInfo ret = new VkQueryPoolCreateInfo();

            ret.sType = VkStructureType.QueryPoolCreateInfo;
            ret.pipelineStatistics = statisticFlags;
            ret.queryType          = queryType;
            ret.queryCount         = count;
            return(ret);
        }
Ejemplo n.º 4
0
        public VkQueryPool(VkQueryType queryType, uint queryCount, VkQueryPipelineStatisticFlags pipelineStatistics = VkQueryPipelineStatisticFlags.None)
        {
            var createInfo = new VkQueryPoolCreateInfo
            {
                sType              = VkStructureType.QueryPoolCreateInfo,
                queryType          = queryType,
                queryCount         = queryCount,
                pipelineStatistics = pipelineStatistics,
            };

            Vulkan.vkCreateQueryPool(Vulkan.device, &createInfo, null, out this).CheckResult();
        }
Ejemplo n.º 5
0
        public void Start(VkCommandBufferUsageFlags usage = 0, RenderPass rp = null, uint subpass = 0, FrameBuffer fb = null,
                          bool occlusionQueryEnable       = false, VkQueryControlFlags queryFlags = 0, VkQueryPipelineStatisticFlags statFlags = 0)
        {
            VkCommandBufferInheritanceInfo inheri = VkCommandBufferInheritanceInfo.New();

            inheri.renderPass           = rp == null ? 0 : rp.handle;
            inheri.subpass              = subpass;
            inheri.framebuffer          = fb == null ? 0 : fb.handle;
            inheri.occlusionQueryEnable = occlusionQueryEnable;
            inheri.queryFlags           = queryFlags;
            inheri.pipelineStatistics   = statFlags;
            VkCommandBufferBeginInfo cmdBufInfo = new VkCommandBufferBeginInfo(usage);

            cmdBufInfo.pInheritanceInfo = inheri.Pin();
            Utils.CheckResult(vkBeginCommandBuffer(handle, ref cmdBufInfo));
            inheri.Unpin();
        }
Ejemplo n.º 6
0
 public unsafe CommandBufferInheritanceInfo(Framebuffer framebuffer, RenderPass renderPass, uint subpass, bool occlusionQueryEnable = false,
                                            VkQueryControlFlags queryFlags = VkQueryControlFlags.None, VkQueryPipelineStatisticFlags pipelineStatistics = VkQueryPipelineStatisticFlags.None)
 {
     native = new VkCommandBufferInheritanceInfo
     {
         sType                = VkStructureType.CommandBufferInheritanceInfo,
         renderPass           = renderPass,
         subpass              = subpass,
         framebuffer          = framebuffer,
         occlusionQueryEnable = occlusionQueryEnable,
         queryFlags           = queryFlags,
         pipelineStatistics   = pipelineStatistics
     };
 }