diff options
| author | Chia-I Wu <olv@lunarg.com> | 2015-10-26 20:14:54 +0800 |
|---|---|---|
| committer | Chia-I Wu <olv@lunarg.com> | 2015-10-30 20:49:24 +0800 |
| commit | ef79bc8e5a81cc33257f1192e341cbea8d83ab7a (patch) | |
| tree | fab671f4695bb7a4c10761bb979fd69c5feb3d2e | |
| parent | 1c4086aa360cad856d5f5e94779121ddb870cad6 (diff) | |
| download | usermoji-ef79bc8e5a81cc33257f1192e341cbea8d83ab7a.tar.xz | |
bug 14876: Can timestamps be written inside a renderpass? (WIP)
Timestamps are written to a query pool.
https://cvs.khronos.org/bugzilla/show_bug.cgi?id=14876
| -rw-r--r-- | icd/nulldrv/nulldrv.c | 4 | ||||
| -rw-r--r-- | include/vulkan.h | 11 | ||||
| -rwxr-xr-x | layers/draw_state.cpp | 4 | ||||
| -rw-r--r-- | layers/param_checker.cpp | 12 | ||||
| -rw-r--r-- | loader/trampoline.c | 4 | ||||
| -rwxr-xr-x | vulkan.py | 4 |
6 files changed, 20 insertions, 19 deletions
diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c index 3c7f4bfe..cc837867 100644 --- a/icd/nulldrv/nulldrv.c +++ b/icd/nulldrv/nulldrv.c @@ -1062,8 +1062,8 @@ ICD_EXPORT void VKAPI vkCmdCopyQueryPoolResults( ICD_EXPORT void VKAPI vkCmdWriteTimestamp( VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, - VkBuffer destBuffer, - VkDeviceSize destOffset) + VkQueryPool queryPool, + uint32_t slot) { NULLDRV_LOG_FUNC; } diff --git a/include/vulkan.h b/include/vulkan.h index e17207b3..514c118d 100644 --- a/include/vulkan.h +++ b/include/vulkan.h @@ -412,9 +412,10 @@ typedef enum { typedef enum { VK_QUERY_TYPE_OCCLUSION = 0, VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, + VK_QUERY_TYPE_TIMESTAMP = 2, VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION, - VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_PIPELINE_STATISTICS, - VK_QUERY_TYPE_NUM = (VK_QUERY_TYPE_PIPELINE_STATISTICS - VK_QUERY_TYPE_OCCLUSION + 1), + VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP, + VK_QUERY_TYPE_NUM = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1), VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF } VkQueryType; @@ -2177,7 +2178,7 @@ typedef void (VKAPI *PFN_vkCmdPipelineBarrier)(VkCmdBuffer cmdBuffer, VkPipeline typedef void (VKAPI *PFN_vkCmdBeginQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags); typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot); typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount); -typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer destBuffer, VkDeviceSize destOffset); +typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot); typedef void (VKAPI *PFN_vkCmdCopyQueryPoolResults)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize stride, VkQueryResultFlags flags); typedef void (VKAPI *PFN_vkCmdPushConstants)(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values); typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents); @@ -2913,8 +2914,8 @@ void VKAPI vkCmdResetQueryPool( void VKAPI vkCmdWriteTimestamp( VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, - VkBuffer destBuffer, - VkDeviceSize destOffset); + VkQueryPool queryPool, + uint32_t slot); void VKAPI vkCmdCopyQueryPoolResults( VkCmdBuffer cmdBuffer, diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index 2b6d55ee..fec569f9 100755 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -3236,7 +3236,7 @@ VK_LAYER_EXPORT void VKAPI vkCmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQu startQuery, queryCount, destBuffer, destOffset, stride, flags); } -VK_LAYER_EXPORT void VKAPI vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer destBuffer, VkDeviceSize destOffset) +VK_LAYER_EXPORT void VKAPI vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot) { VkBool32 skipCall = VK_FALSE; layer_data* dev_data = get_my_data_ptr(get_dispatch_key(cmdBuffer), layer_data_map); @@ -3250,7 +3250,7 @@ VK_LAYER_EXPORT void VKAPI vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipeline } } if (VK_FALSE == skipCall) - dev_data->device_dispatch_table->CmdWriteTimestamp(cmdBuffer, pipelineStage, destBuffer, destOffset); + dev_data->device_dispatch_table->CmdWriteTimestamp(cmdBuffer, pipelineStage, queryPool, slot); } VK_LAYER_EXPORT VkResult VKAPI vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer) diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index d7c13d40..bdb5dad6 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -6362,8 +6362,8 @@ VK_LAYER_EXPORT void VKAPI vkCmdResetQueryPool( bool PostCmdWriteTimestamp( VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, - VkBuffer destBuffer, - VkDeviceSize destOffset) + VkQueryPool queryPool, + uint32_t slot) { ValidateEnumerator(pipelineStage); @@ -6374,12 +6374,12 @@ bool PostCmdWriteTimestamp( VK_LAYER_EXPORT void VKAPI vkCmdWriteTimestamp( VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, - VkBuffer destBuffer, - VkDeviceSize destOffset) + VkQueryPool queryPool, + uint32_t slot) { - get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdWriteTimestamp(cmdBuffer, pipelineStage, destBuffer, destOffset); + get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdWriteTimestamp(cmdBuffer, pipelineStage, queryPool, slot); - PostCmdWriteTimestamp(cmdBuffer, pipelineStage, destBuffer, destOffset); + PostCmdWriteTimestamp(cmdBuffer, pipelineStage, queryPool, slot); } bool PostCmdCopyQueryPoolResults( diff --git a/loader/trampoline.c b/loader/trampoline.c index 53a1a685..d2f28a82 100644 --- a/loader/trampoline.c +++ b/loader/trampoline.c @@ -1405,13 +1405,13 @@ LOADER_EXPORT void VKAPI vkCmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool disp->CmdResetQueryPool(cmdBuffer, queryPool, startQuery, queryCount); } -LOADER_EXPORT void VKAPI vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer destBuffer, VkDeviceSize destOffset) +LOADER_EXPORT void VKAPI vkCmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot) { const VkLayerDispatchTable *disp; disp = loader_get_dispatch(cmdBuffer); - disp->CmdWriteTimestamp(cmdBuffer, pipelineStage, destBuffer, destOffset); + disp->CmdWriteTimestamp(cmdBuffer, pipelineStage, queryPool, slot); } LOADER_EXPORT void VKAPI vkCmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize stride, VkFlags flags) @@ -938,8 +938,8 @@ core = Extension( Proto("void", "CmdWriteTimestamp", [Param("VkCmdBuffer", "cmdBuffer"), Param("VkPipelineStageFlagBits", "pipelineStage"), - Param("VkBuffer", "destBuffer"), - Param("VkDeviceSize", "destOffset")]), + Param("VkQueryPool", "queryPool"), + Param("uint32_t", "slot")]), Proto("void", "CmdCopyQueryPoolResults", [Param("VkCmdBuffer", "cmdBuffer"), |
