blob: 1edf3e78c2174f76496a5417c6243dbc384dc2a3 [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
Jeremy Gebbena3705f42021-01-19 16:47:43 -0700103 void PreRecordCommandBuffer(VkCommandBuffer command_buffer);
104 bool CommandBufferNeedsProcessing(VkCommandBuffer command_buffer);
105 void ProcessCommandBuffer(VkQueue queue, VkCommandBuffer command_buffer);
106
Tony-LunarG1dce2392019-10-23 16:49:29 -0600107 public:
Mark Lobodzinski0dcb87d2020-03-30 16:09:24 -0600108 GpuAssisted() { container_type = LayerObjectTypeGpuAssisted; }
109
Tony-LunarG1dce2392019-10-23 16:49:29 -0600110 bool aborted = false;
Tony-LunarG5c38b182020-06-10 16:15:32 -0600111 bool descriptor_indexing = false;
Tony-LunarG1dce2392019-10-23 16:49:29 -0600112 VkDevice device;
113 VkPhysicalDevice physicalDevice;
114 uint32_t adjusted_max_desc_sets;
115 uint32_t desc_set_bind_index;
Tony-LunarG57ada962020-05-01 16:21:00 -0600116 VkDescriptorSetLayout debug_desc_layout = VK_NULL_HANDLE;
117 VkDescriptorSetLayout dummy_desc_layout = VK_NULL_HANDLE;
Tony-LunarGb5fae462020-03-05 12:43:25 -0700118 std::unique_ptr<UtilDescriptorSetManager> desc_set_manager;
Tony-LunarG1dce2392019-10-23 16:49:29 -0600119 std::unordered_map<uint32_t, GpuAssistedShaderTracker> shader_map;
120 PFN_vkSetDeviceLoaderData vkSetDeviceLoaderData;
121 VmaAllocator vmaAllocator = {};
Tony-LunarGb5fae462020-03-05 12:43:25 -0700122 std::map<VkQueue, UtilQueueBarrierCommandInfo> queue_barrier_command_infos;
Tony-LunarG1dce2392019-10-23 16:49:29 -0600123 std::vector<GpuAssistedBufferInfo>& GetBufferInfo(const VkCommandBuffer command_buffer) {
Mark Lobodzinski2a3ee4a2019-03-13 13:11:39 -0600124 auto buffer_list = command_buffer_map.find(command_buffer);
125 if (buffer_list == command_buffer_map.end()) {
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600126 std::vector<GpuAssistedBufferInfo> new_list{};
Mark Lobodzinski2a3ee4a2019-03-13 13:11:39 -0600127 command_buffer_map[command_buffer] = new_list;
128 return command_buffer_map[command_buffer];
129 }
130 return buffer_list->second;
131 }
Mark Lobodzinskia8151b02020-02-27 13:38:08 -0700132
Tony-LunarG1dce2392019-10-23 16:49:29 -0600133 public:
Mark Lobodzinskia8151b02020-02-27 13:38:08 -0700134 template <typename T>
135 void ReportSetupProblem(T object, const char* const specific_message) const;
Tony-LunarG5c38b182020-06-10 16:15:32 -0600136 bool CheckForDescriptorIndexing(DeviceFeatures enabled_features) const;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600137 void PreCallRecordCreateDevice(VkPhysicalDevice gpu, const VkDeviceCreateInfo* pCreateInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700138 const VkAllocationCallbacks* pAllocator, VkDevice* pDevice, void* modified_create_info) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600139 void PostCallRecordCreateDevice(VkPhysicalDevice gpu, const VkDeviceCreateInfo* pCreateInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700140 const VkAllocationCallbacks* pAllocator, VkDevice* pDevice, VkResult result) override;
Mike Schuchardt2df08912020-12-15 16:28:09 -0800141 void PostCallRecordGetBufferDeviceAddress(VkDevice device, const VkBufferDeviceAddressInfo* pInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700142 VkDeviceAddress address) override;
Mike Schuchardt2df08912020-12-15 16:28:09 -0800143 void PostCallRecordGetBufferDeviceAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo* pInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700144 VkDeviceAddress address) override;
Mike Schuchardt2df08912020-12-15 16:28:09 -0800145 void PostCallRecordGetBufferDeviceAddressEXT(VkDevice device, const VkBufferDeviceAddressInfo* pInfo,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700146 VkDeviceAddress address) override;
147 void PreCallRecordDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) override;
148 void PreCallRecordDestroyDevice(VkDevice device, const VkAllocationCallbacks* pAllocator) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600149 void PostCallRecordBindAccelerationStructureMemoryNV(VkDevice device, uint32_t bindInfoCount,
150 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700151 VkResult result) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600152 void PreCallRecordCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo,
153 const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700154 void* cpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600155 void PostCallRecordCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo,
156 const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700157 VkResult result) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600158 void ResetCommandBuffer(VkCommandBuffer commandBuffer);
159 bool PreCallValidateCmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents,
160 VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask,
161 uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers,
162 uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700163 uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const override;
Jeremy Gebbena3705f42021-01-19 16:47:43 -0700164 bool PreCallValidateCmdWaitEvents2KHR(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents,
165 const VkDependencyInfoKHR* pDependencyInfos) const override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600166 void PreCallRecordCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700167 VkBuffer* pBuffer, void* cb_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600168 void CreateAccelerationStructureBuildValidationState(GpuAssisted* device_GpuAssisted);
169 void DestroyAccelerationStructureBuildValidationState();
170 void PreCallRecordCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo,
171 VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update,
172 VkAccelerationStructureNV dst, VkAccelerationStructureNV src,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700173 VkBuffer scratch, VkDeviceSize scratchOffset) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600174 void ProcessAccelerationStructureBuildValidationBuffer(VkQueue queue, CMD_BUFFER_STATE* cb_node);
175 void PreCallRecordCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
176 const VkGraphicsPipelineCreateInfo* pCreateInfos,
177 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700178 void* cgpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600179 void PreCallRecordCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
180 const VkComputePipelineCreateInfo* pCreateInfos,
181 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700182 void* ccpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600183 void PreCallRecordCreateRayTracingPipelinesNV(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
184 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
185 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700186 void* crtpl_state_data) override;
sourav parmarcd5fb182020-07-17 12:58:44 -0700187 void PreCallRecordCreateRayTracingPipelinesKHR(VkDevice device, VkDeferredOperationKHR deferredOperation,
188 VkPipelineCache pipelineCache, uint32_t count,
Jeff Bolz443c2ca2020-03-19 12:11:51 -0500189 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
190 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700191 void* crtpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600192 void PostCallRecordCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
193 const VkGraphicsPipelineCreateInfo* pCreateInfos,
194 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, VkResult result,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700195 void* cgpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600196 void PostCallRecordCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
197 const VkComputePipelineCreateInfo* pCreateInfos,
198 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, VkResult result,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700199 void* ccpl_state_data) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600200 void PostCallRecordCreateRayTracingPipelinesNV(VkDevice device, VkPipelineCache pipelineCache, uint32_t count,
201 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
202 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, VkResult result,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700203 void* crtpl_state_data) override;
sourav parmarcd5fb182020-07-17 12:58:44 -0700204 void PostCallRecordCreateRayTracingPipelinesKHR(VkDevice device, VkDeferredOperationKHR deferredOperation,
205 VkPipelineCache pipelineCache, uint32_t count,
Jeff Bolz443c2ca2020-03-19 12:11:51 -0500206 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
207 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700208 VkResult result, void* crtpl_state_data) override;
209 void PreCallRecordDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600210 bool InstrumentShader(const VkShaderModuleCreateInfo* pCreateInfo, std::vector<unsigned int>& new_pgm,
211 uint32_t* unique_shader_id);
212 void PreCallRecordCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo,
213 const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700214 void* csm_state_data) override;
Tony-LunarG7de10e82020-11-24 11:31:55 -0700215 void AnalyzeAndGenerateMessages(VkCommandBuffer command_buffer, VkQueue queue, GpuAssistedBufferInfo &buffer_info,
216 uint32_t operation_index, uint32_t* const debug_output_buffer);
217
Tony-LunarGc28e28a2020-08-14 10:37:48 -0600218 void SetDescriptorInitialized(uint32_t* pData, uint32_t index, const cvdescriptorset::Descriptor* descriptor);
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600219 void UpdateInstrumentationBuffer(CMD_BUFFER_STATE* cb_node);
Tony-LunarG7de10e82020-11-24 11:31:55 -0700220 const GpuVuid& GetGpuVuid(CMD_TYPE cmd_type) const;
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700221 void PreCallRecordQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600222 void PostCallRecordQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700223 VkResult result) override;
Jeremy Gebbena3705f42021-01-19 16:47:43 -0700224 void PreCallRecordQueueSubmit2KHR(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2KHR* pSubmits,
225 VkFence fence) override;
226 void PostCallRecordQueueSubmit2KHR(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2KHR* pSubmits, VkFence fence,
227 VkResult result) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600228 void PreCallRecordCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700229 uint32_t firstInstance) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600230 void PreCallRecordCmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700231 uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600232 void PreCallRecordCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700233 uint32_t stride) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600234 void PreCallRecordCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700235 uint32_t stride) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600236 void PreCallRecordCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
237 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700238 uint32_t stride) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600239 void PreCallRecordCmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
240 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700241 uint32_t stride) override;
Tony-LunarG54176fb2020-12-02 10:47:22 -0700242 void PreCallRecordCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance,
243 VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700244 uint32_t vertexStride) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600245 void PreCallRecordCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
246 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700247 uint32_t stride) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600248 void PreCallRecordCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
249 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700250 uint32_t stride) override;
251 void PreCallRecordCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600252 void PreCallRecordCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700253 uint32_t drawCount, uint32_t stride) override;
Tony-LunarG2fb8ff02020-06-11 12:45:07 -0600254 void PreCallRecordCmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
255 VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700256 uint32_t stride) override;
257 void PreCallRecordCmdDispatch(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z) override;
258 void PreCallRecordCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) override;
Tony-LunarGd13f9b52020-09-08 15:45:45 -0600259 void PreCallRecordCmdDispatchBase(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700260 uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) override;
Tony-LunarG52c8c602020-09-10 16:29:56 -0600261 void PreCallRecordCmdDispatchBaseKHR(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700262 uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY,
263 uint32_t groupCountZ) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600264 void PreCallRecordCmdTraceRaysNV(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer,
265 VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer,
266 VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride,
267 VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset,
268 VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer,
269 VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700270 uint32_t width, uint32_t height, uint32_t depth) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600271 void PostCallRecordCmdTraceRaysNV(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer,
272 VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer,
273 VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride,
274 VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset,
275 VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer,
276 VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700277 uint32_t width, uint32_t height, uint32_t depth) override;
sourav parmarcd5fb182020-07-17 12:58:44 -0700278 void PreCallRecordCmdTraceRaysKHR(VkCommandBuffer commandBuffer,
279 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
280 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
281 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
282 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700283 uint32_t height, uint32_t depth) override;
sourav parmarcd5fb182020-07-17 12:58:44 -0700284 void PostCallRecordCmdTraceRaysKHR(VkCommandBuffer commandBuffer,
285 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
286 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
287 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
288 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700289 uint32_t height, uint32_t depth) override;
Jeff Bolz443c2ca2020-03-19 12:11:51 -0500290 void PreCallRecordCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,
sourav parmarcd5fb182020-07-17 12:58:44 -0700291 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
292 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
293 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
Shannon McPherson54e1f892020-11-27 11:04:19 -0700294 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700295 VkDeviceAddress indirectDeviceAddress) override;
Jeff Bolz443c2ca2020-03-19 12:11:51 -0500296 void PostCallRecordCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,
sourav parmarcd5fb182020-07-17 12:58:44 -0700297 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
298 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
299 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
Shannon McPherson54e1f892020-11-27 11:04:19 -0700300 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700301 VkDeviceAddress indirectDeviceAddress) override;
Tony-LunarG7de10e82020-11-24 11:31:55 -0700302 void AllocateValidationResources(const VkCommandBuffer cmd_buffer, const VkPipelineBindPoint bind_point, CMD_TYPE cmd);
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600303 void PostCallRecordGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700304 VkPhysicalDeviceProperties* pPhysicalDeviceProperties) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600305 void PostCallRecordGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
Mark Lobodzinskib8e22b52020-12-03 15:22:35 -0700306 VkPhysicalDeviceProperties2* pPhysicalDeviceProperties2) override;
Tony-LunarG2ba1cb32019-09-25 15:16:11 -0600307};