blob: b7c1b20aa155a1fd0ffd5f24ff1e008465230625 [file] [log] [blame]
Tony-LunarG7de10e82020-11-24 11:31:55 -07001/* Copyright (c) 2018-2021 The Khronos Group Inc.
2 * Copyright (c) 2018-2021 Valve Corporation
3 * Copyright (c) 2018-2021 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-LunarG7de10e82020-11-24 11:31:55 -070042 CMD_TYPE cmd_type;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060043 GpuAssistedBufferInfo(GpuAssistedDeviceMemoryBlock output_mem_block, GpuAssistedDeviceMemoryBlock di_input_mem_block,
44 GpuAssistedDeviceMemoryBlock bda_input_mem_block, VkDescriptorSet desc_set, VkDescriptorPool desc_pool,
Tony-LunarG7de10e82020-11-24 11:31:55 -070045 VkPipelineBindPoint pipeline_bind_point, CMD_TYPE cmd_type)
Jason Macnak67407e72019-07-11 11:05:09 -070046 : output_mem_block(output_mem_block),
Tony-LunarG8eb5a002019-07-25 16:49:00 -060047 di_input_mem_block(di_input_mem_block),
48 bda_input_mem_block(bda_input_mem_block),
Jason Macnak67407e72019-07-11 11:05:09 -070049 desc_set(desc_set),
50 desc_pool(desc_pool),
Tony-LunarG7de10e82020-11-24 11:31:55 -070051 pipeline_bind_point(pipeline_bind_point),
52 cmd_type(cmd_type){};
Mark Lobodzinski2a3ee4a2019-03-13 13:11:39 -060053};
54
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060055struct GpuAssistedShaderTracker {
56 VkPipeline pipeline;
57 VkShaderModule shader_module;
58 std::vector<unsigned int> pgm;
59};
60
Tony-LunarG7de10e82020-11-24 11:31:55 -070061struct GpuVuid {
62 const char* uniform_access_oob = kVUIDUndefined;
63 const char* storage_access_oob = kVUIDUndefined;
64};
65
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060066struct GpuAssistedAccelerationStructureBuildValidationBufferInfo {
Jason Macnak83cfd582019-07-31 10:14:24 -070067 // The acceleration structure that is being built.
68 VkAccelerationStructureNV acceleration_structure = VK_NULL_HANDLE;
69
70 // The descriptor pool and descriptor set being used to validate a given build.
71 VkDescriptorPool descriptor_pool = VK_NULL_HANDLE;
72 VkDescriptorSet descriptor_set = VK_NULL_HANDLE;
73
74 // The storage buffer used by the validating compute shader whichcontains info about
75 // the valid handles and which is written to communicate found invalid handles.
76 VkBuffer validation_buffer = VK_NULL_HANDLE;
77 VmaAllocation validation_buffer_allocation = VK_NULL_HANDLE;
78};
79
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060080struct GpuAssistedAccelerationStructureBuildValidationState {
Jason Macnak83cfd582019-07-31 10:14:24 -070081 bool initialized = false;
82
83 VkPipeline pipeline = VK_NULL_HANDLE;
84 VkPipelineLayout pipeline_layout = VK_NULL_HANDLE;
85
86 VkAccelerationStructureNV replacement_as = VK_NULL_HANDLE;
87 VmaAllocation replacement_as_allocation = VK_NULL_HANDLE;
88 uint64_t replacement_as_handle = 0;
89
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060090 std::unordered_map<VkCommandBuffer, std::vector<GpuAssistedAccelerationStructureBuildValidationBufferInfo>> validation_buffers;
Jason Macnak83cfd582019-07-31 10:14:24 -070091};
92
Tony-LunarG99b880b2019-09-26 11:19:52 -060093class GpuAssisted : public ValidationStateTracker {
Tony-LunarG1dce2392019-10-23 16:49:29 -060094 VkPhysicalDeviceFeatures supported_features;
Tony-LunarG8eb5a002019-07-25 16:49:00 -060095 VkBool32 shaderInt64;
Tony-LunarG99b880b2019-09-26 11:19:52 -060096 uint32_t unique_shader_module_id = 0;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -060097 std::unordered_map<VkCommandBuffer, std::vector<GpuAssistedBufferInfo>> command_buffer_map; // gpu_buffer_list;
Tony-LunarG0e564722019-03-19 16:09:14 -060098 uint32_t output_buffer_size;
Tony-LunarGc28e28a2020-08-14 10:37:48 -060099 bool buffer_oob_enabled;
Tony-LunarG8eb5a002019-07-25 16:49:00 -0600100 std::map<VkDeviceAddress, VkDeviceSize> buffer_map;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600101 GpuAssistedAccelerationStructureBuildValidationState acceleration_structure_validation_state;
Tony-LunarG1dce2392019-10-23 16:49:29 -0600102
103 public:
Mark Lobodzinski0dcb87d2020-03-30 16:09:24 -0600104 GpuAssisted() { container_type = LayerObjectTypeGpuAssisted; }
105
Tony-LunarG1dce2392019-10-23 16:49:29 -0600106 bool aborted = false;
Tony-LunarG5c38b182020-06-10 16:15:32 -0600107 bool descriptor_indexing = false;
Tony-LunarG1dce2392019-10-23 16:49:29 -0600108 VkDevice device;
109 VkPhysicalDevice physicalDevice;
110 uint32_t adjusted_max_desc_sets;
111 uint32_t desc_set_bind_index;
Tony-LunarG57ada962020-05-01 16:21:00 -0600112 VkDescriptorSetLayout debug_desc_layout = VK_NULL_HANDLE;
113 VkDescriptorSetLayout dummy_desc_layout = VK_NULL_HANDLE;
Tony-LunarGb5fae462020-03-05 12:43:25 -0700114 std::unique_ptr<UtilDescriptorSetManager> desc_set_manager;
Tony-LunarG1dce2392019-10-23 16:49:29 -0600115 std::unordered_map<uint32_t, GpuAssistedShaderTracker> shader_map;
116 PFN_vkSetDeviceLoaderData vkSetDeviceLoaderData;
117 VmaAllocator vmaAllocator = {};
Tony-LunarGb5fae462020-03-05 12:43:25 -0700118 std::map<VkQueue, UtilQueueBarrierCommandInfo> queue_barrier_command_infos;
Tony-LunarG1dce2392019-10-23 16:49:29 -0600119 std::vector<GpuAssistedBufferInfo>& GetBufferInfo(const VkCommandBuffer command_buffer) {
Mark Lobodzinski2a3ee4a2019-03-13 13:11:39 -0600120 auto buffer_list = command_buffer_map.find(command_buffer);
121 if (buffer_list == command_buffer_map.end()) {
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600122 std::vector<GpuAssistedBufferInfo> new_list{};
Mark Lobodzinski2a3ee4a2019-03-13 13:11:39 -0600123 command_buffer_map[command_buffer] = new_list;
124 return command_buffer_map[command_buffer];
125 }
126 return buffer_list->second;
127 }
Mark Lobodzinskia8151b02020-02-27 13:38:08 -0700128
Tony-LunarG1dce2392019-10-23 16:49:29 -0600129 public:
Mark Lobodzinskia8151b02020-02-27 13:38:08 -0700130 template <typename T>
131 void ReportSetupProblem(T object, const char* const specific_message) const;
Tony-LunarG5c38b182020-06-10 16:15:32 -0600132 bool CheckForDescriptorIndexing(DeviceFeatures enabled_features) const;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600133 void PreCallRecordCreateDevice(VkPhysicalDevice gpu, const VkDeviceCreateInfo* pCreateInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700134 const VkAllocationCallbacks* pAllocator, VkDevice* pDevice, void* modified_create_info) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600135 void PostCallRecordCreateDevice(VkPhysicalDevice gpu, const VkDeviceCreateInfo* pCreateInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700136 const VkAllocationCallbacks* pAllocator, VkDevice* pDevice, VkResult result) override;
Mike Schuchardt2df08912020-12-15 16:28:09 -0800137 void PostCallRecordGetBufferDeviceAddress(VkDevice device, const VkBufferDeviceAddressInfo* pInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700138 VkDeviceAddress address) override;
Mike Schuchardt2df08912020-12-15 16:28:09 -0800139 void PostCallRecordGetBufferDeviceAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo* pInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700140 VkDeviceAddress address) override;
Mike Schuchardt2df08912020-12-15 16:28:09 -0800141 void PostCallRecordGetBufferDeviceAddressEXT(VkDevice device, const VkBufferDeviceAddressInfo* pInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700142 VkDeviceAddress address) override;
143 void PreCallRecordDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) override;
144 void PreCallRecordDestroyDevice(VkDevice device, const VkAllocationCallbacks* pAllocator) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600145 void PostCallRecordBindAccelerationStructureMemoryNV(VkDevice device, uint32_t bindInfoCount,
146 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700147 VkResult result) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600148 void PreCallRecordCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo,
149 const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700150 void* cpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600151 void PostCallRecordCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo,
152 const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700153 VkResult result) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600154 void ResetCommandBuffer(VkCommandBuffer commandBuffer);
155 bool PreCallValidateCmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents,
156 VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask,
157 uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers,
158 uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700159 uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600160 void PreCallRecordCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700161 VkBuffer* pBuffer, void* cb_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600162 void CreateAccelerationStructureBuildValidationState(GpuAssisted* device_GpuAssisted);
163 void DestroyAccelerationStructureBuildValidationState();
164 void PreCallRecordCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo,
165 VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update,
166 VkAccelerationStructureNV dst, VkAccelerationStructureNV src,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700167 VkBuffer scratch, VkDeviceSize scratchOffset) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600168 void ProcessAccelerationStructureBuildValidationBuffer(VkQueue queue, CMD_BUFFER_STATE* cb_node);
169 void PreCallRecordCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
170 const VkGraphicsPipelineCreateInfo* pCreateInfos,
171 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700172 void* cgpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600173 void PreCallRecordCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
174 const VkComputePipelineCreateInfo* pCreateInfos,
175 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700176 void* ccpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600177 void PreCallRecordCreateRayTracingPipelinesNV(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
178 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
179 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700180 void* crtpl_state_data) override;
sourav parmarcd5fb182020-07-17 12:58:44 -0700181 void PreCallRecordCreateRayTracingPipelinesKHR(VkDevice device, VkDeferredOperationKHR deferredOperation,
182 VkPipelineCache pipelineCache, uint32_t count,
Jeff Bolz443c2ca2020-03-19 12:11:51 -0500183 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
184 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700185 void* crtpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600186 void PostCallRecordCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
187 const VkGraphicsPipelineCreateInfo* pCreateInfos,
188 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, VkResult result,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700189 void* cgpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600190 void PostCallRecordCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
191 const VkComputePipelineCreateInfo* pCreateInfos,
192 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, VkResult result,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700193 void* ccpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600194 void PostCallRecordCreateRayTracingPipelinesNV(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
195 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
196 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, VkResult result,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700197 void* crtpl_state_data) override;
sourav parmarcd5fb182020-07-17 12:58:44 -0700198 void PostCallRecordCreateRayTracingPipelinesKHR(VkDevice device, VkDeferredOperationKHR deferredOperation,
199 VkPipelineCache pipelineCache, uint32_t count,
Jeff Bolz443c2ca2020-03-19 12:11:51 -0500200 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
201 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700202 VkResult result, void* crtpl_state_data) override;
203 void PreCallRecordDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600204 bool InstrumentShader(const VkShaderModuleCreateInfo* pCreateInfo, std::vector<unsigned int>& new_pgm,
205 uint32_t* unique_shader_id);
206 void PreCallRecordCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo,
207 const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700208 void* csm_state_data) override;
Tony-LunarG7de10e82020-11-24 11:31:55 -0700209 void AnalyzeAndGenerateMessages(VkCommandBuffer command_buffer, VkQueue queue, GpuAssistedBufferInfo &buffer_info,
210 uint32_t operation_index, uint32_t* const debug_output_buffer);
211
Tony-LunarGc28e28a2020-08-14 10:37:48 -0600212 void SetDescriptorInitialized(uint32_t* pData, uint32_t index, const cvdescriptorset::Descriptor* descriptor);
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600213 void UpdateInstrumentationBuffer(CMD_BUFFER_STATE* cb_node);
Tony-LunarG7de10e82020-11-24 11:31:55 -0700214 const GpuVuid& GetGpuVuid(CMD_TYPE cmd_type) const;
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700215 void PreCallRecordQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600216 void PostCallRecordQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700217 VkResult result) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600218 void PreCallRecordCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700219 uint32_t firstInstance) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600220 void PreCallRecordCmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700221 uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600222 void PreCallRecordCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700223 uint32_t stride) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600224 void PreCallRecordCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700225 uint32_t stride) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600226 void PreCallRecordCmdDrawIndirectCountKHR(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 PreCallRecordCmdDrawIndirectCount(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;
Tony-LunarG54176fb2020-12-02 10:47:22 -0700232 void PreCallRecordCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance,
233 VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700234 uint32_t vertexStride) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600235 void PreCallRecordCmdDrawIndexedIndirectCountKHR(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;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600238 void PreCallRecordCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
239 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700240 uint32_t stride) override;
241 void PreCallRecordCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600242 void PreCallRecordCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700243 uint32_t drawCount, uint32_t stride) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600244 void PreCallRecordCmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
245 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700246 uint32_t stride) override;
247 void PreCallRecordCmdDispatch(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z) override;
248 void PreCallRecordCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) override;
Tony-LunarGd13f9b52020-09-08 15:45:45 -0600249 void PreCallRecordCmdDispatchBase(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700250 uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) override;
Tony-LunarG52c8c602020-09-10 16:29:56 -0600251 void PreCallRecordCmdDispatchBaseKHR(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700252 uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY,
253 uint32_t groupCountZ) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600254 void PreCallRecordCmdTraceRaysNV(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer,
255 VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer,
256 VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride,
257 VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset,
258 VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer,
259 VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700260 uint32_t width, uint32_t height, uint32_t depth) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600261 void PostCallRecordCmdTraceRaysNV(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer,
262 VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer,
263 VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride,
264 VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset,
265 VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer,
266 VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700267 uint32_t width, uint32_t height, uint32_t depth) override;
sourav parmarcd5fb182020-07-17 12:58:44 -0700268 void PreCallRecordCmdTraceRaysKHR(VkCommandBuffer commandBuffer,
269 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
270 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
271 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
272 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700273 uint32_t height, uint32_t depth) override;
sourav parmarcd5fb182020-07-17 12:58:44 -0700274 void PostCallRecordCmdTraceRaysKHR(VkCommandBuffer commandBuffer,
275 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
276 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
277 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
278 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700279 uint32_t height, uint32_t depth) override;
Jeff Bolz443c2ca2020-03-19 12:11:51 -0500280 void PreCallRecordCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,
sourav parmarcd5fb182020-07-17 12:58:44 -0700281 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
282 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
283 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
Shannon McPherson54e1f892020-11-27 11:04:19 -0700284 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700285 VkDeviceAddress indirectDeviceAddress) override;
Jeff Bolz443c2ca2020-03-19 12:11:51 -0500286 void PostCallRecordCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,
sourav parmarcd5fb182020-07-17 12:58:44 -0700287 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
288 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
289 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
Shannon McPherson54e1f892020-11-27 11:04:19 -0700290 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700291 VkDeviceAddress indirectDeviceAddress) override;
Tony-LunarG7de10e82020-11-24 11:31:55 -0700292 void AllocateValidationResources(const VkCommandBuffer cmd_buffer, const VkPipelineBindPoint bind_point, CMD_TYPE cmd);
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600293 void PostCallRecordGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700294 VkPhysicalDeviceProperties* pPhysicalDeviceProperties) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600295 void PostCallRecordGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700296 VkPhysicalDeviceProperties2* pPhysicalDeviceProperties2) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600297};