blob: 291cfb85dd82b42e4c6c64e0fdeac7ef1d9d6c89 [file] [log] [blame]
Mark Lobodzinskia8151b02020-02-27 13:38:08 -07001/* Copyright (c) 2018-2020 The Khronos Group Inc.
2 * Copyright (c) 2018-2020 Valve Corporation
3 * Copyright (c) 2018-2020 LunarG, Inc.
Karl Schultz7b024b42018-08-30 16:18:18 -06004 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060017 * Author: Karl Schultz <karl@lunarg.com>
18 * Author: Tony Barbour <tony@lunarg.com>
Karl Schultz7b024b42018-08-30 16:18:18 -060019 */
20
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060021#pragma once
22
23#include "chassis.h"
24#include "state_tracker.h"
Tony-LunarG0e564722019-03-19 16:09:14 -060025#include "vk_mem_alloc.h"
Tony-LunarGb5fae462020-03-05 12:43:25 -070026#include "gpu_utils.h"
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060027class GpuAssisted;
Tony-LunarG0e564722019-03-19 16:09:14 -060028
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060029struct GpuAssistedDeviceMemoryBlock {
Mark Lobodzinski2a3ee4a2019-03-13 13:11:39 -060030 VkBuffer buffer;
Tony-LunarG0e564722019-03-19 16:09:14 -060031 VmaAllocation allocation;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060032 std::unordered_map<uint32_t, const cvdescriptorset::Descriptor*> update_at_submit;
Mark Lobodzinski2a3ee4a2019-03-13 13:11:39 -060033};
34
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060035struct GpuAssistedBufferInfo {
36 GpuAssistedDeviceMemoryBlock output_mem_block;
37 GpuAssistedDeviceMemoryBlock di_input_mem_block; // Descriptor Indexing input
38 GpuAssistedDeviceMemoryBlock bda_input_mem_block; // Buffer Device Address input
Mark Lobodzinski2a3ee4a2019-03-13 13:11:39 -060039 VkDescriptorSet desc_set;
40 VkDescriptorPool desc_pool;
Jason Macnak67407e72019-07-11 11:05:09 -070041 VkPipelineBindPoint pipeline_bind_point;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060042 GpuAssistedBufferInfo(GpuAssistedDeviceMemoryBlock output_mem_block, GpuAssistedDeviceMemoryBlock di_input_mem_block,
43 GpuAssistedDeviceMemoryBlock bda_input_mem_block, VkDescriptorSet desc_set, VkDescriptorPool desc_pool,
44 VkPipelineBindPoint pipeline_bind_point)
Jason Macnak67407e72019-07-11 11:05:09 -070045 : output_mem_block(output_mem_block),
Tony-LunarG8eb5a002019-07-25 16:49:00 -060046 di_input_mem_block(di_input_mem_block),
47 bda_input_mem_block(bda_input_mem_block),
Jason Macnak67407e72019-07-11 11:05:09 -070048 desc_set(desc_set),
49 desc_pool(desc_pool),
50 pipeline_bind_point(pipeline_bind_point){};
Mark Lobodzinski2a3ee4a2019-03-13 13:11:39 -060051};
52
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060053struct GpuAssistedShaderTracker {
54 VkPipeline pipeline;
55 VkShaderModule shader_module;
56 std::vector<unsigned int> pgm;
57};
58
59struct GpuAssistedAccelerationStructureBuildValidationBufferInfo {
Jason Macnak83cfd582019-07-31 10:14:24 -070060 // The acceleration structure that is being built.
61 VkAccelerationStructureNV acceleration_structure = VK_NULL_HANDLE;
62
63 // The descriptor pool and descriptor set being used to validate a given build.
64 VkDescriptorPool descriptor_pool = VK_NULL_HANDLE;
65 VkDescriptorSet descriptor_set = VK_NULL_HANDLE;
66
67 // The storage buffer used by the validating compute shader whichcontains info about
68 // the valid handles and which is written to communicate found invalid handles.
69 VkBuffer validation_buffer = VK_NULL_HANDLE;
70 VmaAllocation validation_buffer_allocation = VK_NULL_HANDLE;
71};
72
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060073struct GpuAssistedAccelerationStructureBuildValidationState {
Jason Macnak83cfd582019-07-31 10:14:24 -070074 bool initialized = false;
75
76 VkPipeline pipeline = VK_NULL_HANDLE;
77 VkPipelineLayout pipeline_layout = VK_NULL_HANDLE;
78
79 VkAccelerationStructureNV replacement_as = VK_NULL_HANDLE;
80 VmaAllocation replacement_as_allocation = VK_NULL_HANDLE;
81 uint64_t replacement_as_handle = 0;
82
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060083 std::unordered_map<VkCommandBuffer, std::vector<GpuAssistedAccelerationStructureBuildValidationBufferInfo>> validation_buffers;
Jason Macnak83cfd582019-07-31 10:14:24 -070084};
85
Tony-LunarG99b880b2019-09-26 11:19:52 -060086class GpuAssisted : public ValidationStateTracker {
Tony-LunarG1dce2392019-10-23 16:49:29 -060087 VkPhysicalDeviceFeatures supported_features;
Tony-LunarG8eb5a002019-07-25 16:49:00 -060088 VkBool32 shaderInt64;
Tony-LunarG99b880b2019-09-26 11:19:52 -060089 uint32_t unique_shader_module_id = 0;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060090 std::unordered_map<VkCommandBuffer, std::vector<GpuAssistedBufferInfo>> command_buffer_map; // gpu_buffer_list;
Tony-LunarG0e564722019-03-19 16:09:14 -060091 uint32_t output_buffer_size;
Tony-LunarGc28e28a2020-08-14 10:37:48 -060092 bool buffer_oob_enabled;
Tony-LunarG8eb5a002019-07-25 16:49:00 -060093 std::map<VkDeviceAddress, VkDeviceSize> buffer_map;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060094 GpuAssistedAccelerationStructureBuildValidationState acceleration_structure_validation_state;
Tony-LunarG1dce2392019-10-23 16:49:29 -060095
96 public:
Mark Lobodzinski0dcb87d2020-03-30 16:09:24 -060097 GpuAssisted() { container_type = LayerObjectTypeGpuAssisted; }
98
Tony-LunarG1dce2392019-10-23 16:49:29 -060099 bool aborted = false;
Tony-LunarG5c38b182020-06-10 16:15:32 -0600100 bool descriptor_indexing = false;
Tony-LunarG1dce2392019-10-23 16:49:29 -0600101 VkDevice device;
102 VkPhysicalDevice physicalDevice;
103 uint32_t adjusted_max_desc_sets;
104 uint32_t desc_set_bind_index;
Tony-LunarG57ada962020-05-01 16:21:00 -0600105 VkDescriptorSetLayout debug_desc_layout = VK_NULL_HANDLE;
106 VkDescriptorSetLayout dummy_desc_layout = VK_NULL_HANDLE;
Tony-LunarGb5fae462020-03-05 12:43:25 -0700107 std::unique_ptr<UtilDescriptorSetManager> desc_set_manager;
Tony-LunarG1dce2392019-10-23 16:49:29 -0600108 std::unordered_map<uint32_t, GpuAssistedShaderTracker> shader_map;
109 PFN_vkSetDeviceLoaderData vkSetDeviceLoaderData;
110 VmaAllocator vmaAllocator = {};
Tony-LunarGb5fae462020-03-05 12:43:25 -0700111 std::map<VkQueue, UtilQueueBarrierCommandInfo> queue_barrier_command_infos;
Tony-LunarG1dce2392019-10-23 16:49:29 -0600112 std::vector<GpuAssistedBufferInfo>& GetBufferInfo(const VkCommandBuffer command_buffer) {
Mark Lobodzinski2a3ee4a2019-03-13 13:11:39 -0600113 auto buffer_list = command_buffer_map.find(command_buffer);
114 if (buffer_list == command_buffer_map.end()) {
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600115 std::vector<GpuAssistedBufferInfo> new_list{};
Mark Lobodzinski2a3ee4a2019-03-13 13:11:39 -0600116 command_buffer_map[command_buffer] = new_list;
117 return command_buffer_map[command_buffer];
118 }
119 return buffer_list->second;
120 }
Mark Lobodzinskia8151b02020-02-27 13:38:08 -0700121
Tony-LunarG1dce2392019-10-23 16:49:29 -0600122 public:
Mark Lobodzinskia8151b02020-02-27 13:38:08 -0700123 template <typename T>
124 void ReportSetupProblem(T object, const char* const specific_message) const;
Tony-LunarG5c38b182020-06-10 16:15:32 -0600125 bool CheckForDescriptorIndexing(DeviceFeatures enabled_features) const;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600126 void PreCallRecordCreateDevice(VkPhysicalDevice gpu, const VkDeviceCreateInfo* pCreateInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700127 const VkAllocationCallbacks* pAllocator, VkDevice* pDevice, void* modified_create_info) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600128 void PostCallRecordCreateDevice(VkPhysicalDevice gpu, const VkDeviceCreateInfo* pCreateInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700129 const VkAllocationCallbacks* pAllocator, VkDevice* pDevice, VkResult result) override;
130 void PostCallRecordGetBufferDeviceAddress(VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo,
131 VkDeviceAddress address) override;
Tony-LunarG7e0842f2019-12-10 09:26:34 -0700132 void PostCallRecordGetBufferDeviceAddressKHR(VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700133 VkDeviceAddress address) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600134 void PostCallRecordGetBufferDeviceAddressEXT(VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700135 VkDeviceAddress address) override;
136 void PreCallRecordDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) override;
137 void PreCallRecordDestroyDevice(VkDevice device, const VkAllocationCallbacks* pAllocator) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600138 void PostCallRecordBindAccelerationStructureMemoryNV(VkDevice device, uint32_t bindInfoCount,
139 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700140 VkResult result) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600141 void PreCallRecordCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo,
142 const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700143 void* cpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600144 void PostCallRecordCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo,
145 const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700146 VkResult result) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600147 void ResetCommandBuffer(VkCommandBuffer commandBuffer);
148 bool PreCallValidateCmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents,
149 VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask,
150 uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers,
151 uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700152 uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600153 void PreCallRecordCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700154 VkBuffer* pBuffer, void* cb_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600155 void CreateAccelerationStructureBuildValidationState(GpuAssisted* device_GpuAssisted);
156 void DestroyAccelerationStructureBuildValidationState();
157 void PreCallRecordCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo,
158 VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update,
159 VkAccelerationStructureNV dst, VkAccelerationStructureNV src,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700160 VkBuffer scratch, VkDeviceSize scratchOffset) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600161 void ProcessAccelerationStructureBuildValidationBuffer(VkQueue queue, CMD_BUFFER_STATE* cb_node);
162 void PreCallRecordCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
163 const VkGraphicsPipelineCreateInfo* pCreateInfos,
164 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700165 void* cgpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600166 void PreCallRecordCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
167 const VkComputePipelineCreateInfo* pCreateInfos,
168 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700169 void* ccpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600170 void PreCallRecordCreateRayTracingPipelinesNV(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
171 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
172 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700173 void* crtpl_state_data) override;
sourav parmarcd5fb182020-07-17 12:58:44 -0700174 void PreCallRecordCreateRayTracingPipelinesKHR(VkDevice device, VkDeferredOperationKHR deferredOperation,
175 VkPipelineCache pipelineCache, uint32_t count,
Jeff Bolz443c2ca2020-03-19 12:11:51 -0500176 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
177 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700178 void* crtpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600179 void PostCallRecordCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
180 const VkGraphicsPipelineCreateInfo* pCreateInfos,
181 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, VkResult result,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700182 void* cgpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600183 void PostCallRecordCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
184 const VkComputePipelineCreateInfo* pCreateInfos,
185 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, VkResult result,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700186 void* ccpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600187 void PostCallRecordCreateRayTracingPipelinesNV(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
188 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
189 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, VkResult result,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700190 void* crtpl_state_data) override;
sourav parmarcd5fb182020-07-17 12:58:44 -0700191 void PostCallRecordCreateRayTracingPipelinesKHR(VkDevice device, VkDeferredOperationKHR deferredOperation,
192 VkPipelineCache pipelineCache, uint32_t count,
Jeff Bolz443c2ca2020-03-19 12:11:51 -0500193 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
194 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700195 VkResult result, void* crtpl_state_data) override;
196 void PreCallRecordDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600197 bool InstrumentShader(const VkShaderModuleCreateInfo* pCreateInfo, std::vector<unsigned int>& new_pgm,
198 uint32_t* unique_shader_id);
199 void PreCallRecordCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo,
200 const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700201 void* csm_state_data) override;
Tony-LunarG1dce2392019-10-23 16:49:29 -0600202 void AnalyzeAndGenerateMessages(VkCommandBuffer command_buffer, VkQueue queue, VkPipelineBindPoint pipeline_bind_point,
203 uint32_t operation_index, uint32_t* const debug_output_buffer);
Tony-LunarGc28e28a2020-08-14 10:37:48 -0600204 void SetDescriptorInitialized(uint32_t* pData, uint32_t index, const cvdescriptorset::Descriptor* descriptor);
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600205 void UpdateInstrumentationBuffer(CMD_BUFFER_STATE* cb_node);
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700206 void PreCallRecordQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600207 void PostCallRecordQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700208 VkResult result) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600209 void PreCallRecordCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700210 uint32_t firstInstance) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600211 void PreCallRecordCmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700212 uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600213 void PreCallRecordCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700214 uint32_t stride) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600215 void PreCallRecordCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700216 uint32_t stride) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600217 void PreCallRecordCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
218 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700219 uint32_t stride) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600220 void PreCallRecordCmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
221 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700222 uint32_t stride) override;
Tony-LunarG54176fb2020-12-02 10:47:22 -0700223 void PreCallRecordCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance,
224 VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700225 uint32_t vertexStride) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600226 void PreCallRecordCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
227 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700228 uint32_t stride) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600229 void PreCallRecordCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
230 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700231 uint32_t stride) override;
232 void PreCallRecordCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600233 void PreCallRecordCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700234 uint32_t drawCount, uint32_t stride) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600235 void PreCallRecordCmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
236 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700237 uint32_t stride) override;
238 void PreCallRecordCmdDispatch(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z) override;
239 void PreCallRecordCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) override;
Tony-LunarGd13f9b52020-09-08 15:45:45 -0600240 void PreCallRecordCmdDispatchBase(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700241 uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) override;
Tony-LunarG52c8c602020-09-10 16:29:56 -0600242 void PreCallRecordCmdDispatchBaseKHR(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700243 uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY,
244 uint32_t groupCountZ) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600245 void PreCallRecordCmdTraceRaysNV(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer,
246 VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer,
247 VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride,
248 VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset,
249 VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer,
250 VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700251 uint32_t width, uint32_t height, uint32_t depth) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600252 void PostCallRecordCmdTraceRaysNV(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer,
253 VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer,
254 VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride,
255 VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset,
256 VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer,
257 VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700258 uint32_t width, uint32_t height, uint32_t depth) override;
sourav parmarcd5fb182020-07-17 12:58:44 -0700259 void PreCallRecordCmdTraceRaysKHR(VkCommandBuffer commandBuffer,
260 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
261 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
262 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
263 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700264 uint32_t height, uint32_t depth) override;
sourav parmarcd5fb182020-07-17 12:58:44 -0700265 void PostCallRecordCmdTraceRaysKHR(VkCommandBuffer commandBuffer,
266 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
267 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
268 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
269 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700270 uint32_t height, uint32_t depth) override;
Jeff Bolz443c2ca2020-03-19 12:11:51 -0500271 void PreCallRecordCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,
sourav parmarcd5fb182020-07-17 12:58:44 -0700272 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
273 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
274 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
Shannon McPherson54e1f892020-11-27 11:04:19 -0700275 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700276 VkDeviceAddress indirectDeviceAddress) override;
Jeff Bolz443c2ca2020-03-19 12:11:51 -0500277 void PostCallRecordCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,
sourav parmarcd5fb182020-07-17 12:58:44 -0700278 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
279 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
280 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
Shannon McPherson54e1f892020-11-27 11:04:19 -0700281 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700282 VkDeviceAddress indirectDeviceAddress) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600283 void AllocateValidationResources(const VkCommandBuffer cmd_buffer, const VkPipelineBindPoint bind_point);
284 void PostCallRecordGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700285 VkPhysicalDeviceProperties* pPhysicalDeviceProperties) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600286 void PostCallRecordGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700287 VkPhysicalDeviceProperties2* pPhysicalDeviceProperties2) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600288};