Skip to content

Commit 37aa0f0

Browse files
layers: Add Missing vkCmdDrawIndirectByteCount2EXT
1 parent 2cfe351 commit 37aa0f0

4 files changed

Lines changed: 33 additions & 6 deletions

File tree

layers/gpuav/core/gpuav.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,11 @@ class Validator : public GpuShaderInstrumentor {
151151
const RecordObject& record_obj) final;
152152
void PreCallRecordCmdDrawMeshTasksIndirectCount2EXT(VkCommandBuffer commandBuffer, const VkDrawIndirectCount2InfoKHR* pInfo,
153153
const RecordObject& record_obj) final;
154+
void PreCallRecordCmdDrawIndirectByteCount(VkCommandBuffer commandBuffer, const RecordObject& record_obj);
155+
void PreCallRecordCmdDrawIndirectByteCount2EXT(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance,
156+
const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfo,
157+
uint32_t counterOffset, uint32_t vertexStride,
158+
const RecordObject& record_obj) final;
154159
void PreCallRecordCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance,
155160
VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset,
156161
uint32_t vertexStride, const RecordObject& record_obj) final;

layers/gpuav/core/gpuav_record.cpp

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -604,17 +604,28 @@ void Validator::PreCallRecordCmdDrawMeshTasksIndirectCount2EXT(VkCommandBuffer c
604604
PreCallRecordCmdDrawIndirectCount2KHR(commandBuffer, pInfo, record_obj);
605605
}
606606

607-
void Validator::PreCallRecordCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanceCount,
608-
uint32_t firstInstance, VkBuffer counterBuffer,
609-
VkDeviceSize counterBufferOffset, uint32_t counterOffset,
610-
uint32_t vertexStride, const RecordObject& record_obj) {
607+
void Validator::PreCallRecordCmdDrawIndirectByteCount(VkCommandBuffer commandBuffer, const RecordObject& record_obj) {
611608
auto cb_state = GetWrite<vvl::CommandBuffer>(commandBuffer);
612-
613609
auto& sub_state = SubState(*cb_state);
614610
const LastBound& last_bound = cb_state->GetLastBoundGraphics();
615611
PreCallActionCommand(*this, sub_state, last_bound, record_obj.location);
616612
}
617613

614+
void Validator::PreCallRecordCmdDrawIndirectByteCount2EXT(VkCommandBuffer commandBuffer, uint32_t instanceCount,
615+
uint32_t firstInstance,
616+
const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfo,
617+
uint32_t counterOffset, uint32_t vertexStride,
618+
const RecordObject& record_obj) {
619+
PreCallRecordCmdDrawIndirectByteCount(commandBuffer, record_obj);
620+
}
621+
622+
void Validator::PreCallRecordCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanceCount,
623+
uint32_t firstInstance, VkBuffer counterBuffer,
624+
VkDeviceSize counterBufferOffset, uint32_t counterOffset,
625+
uint32_t vertexStride, const RecordObject& record_obj) {
626+
PreCallRecordCmdDrawIndirectByteCount(commandBuffer, record_obj);
627+
}
628+
618629
void Validator::PreCallRecordCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
619630
VkBuffer countBuffer, VkDeviceSize countBufferOffset,
620631
uint32_t maxDrawCount, uint32_t stride,

layers/state_tracker/state_tracker.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3828,11 +3828,19 @@ void DeviceState::PostCallRecordCmdDrawIndirectByteCount2EXT(VkCommandBuffer com
38283828
uint32_t counterOffset, uint32_t vertexStride,
38293829
const RecordObject& record_obj) {
38303830
auto cb_state = GetWrite<CommandBuffer>(commandBuffer);
3831-
cb_state->RecordCommand(record_obj.location);
3831+
cb_state->RecordDraw(record_obj.location);
38323832
TrackDeviceAddressRange(*cb_state, pCounterInfo->addressRange.address, pCounterInfo->addressRange.size,
38333833
VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT);
38343834
}
38353835

3836+
void DeviceState::PostCallRecordCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanceCount,
3837+
uint32_t firstInstance, VkBuffer counterBuffer,
3838+
VkDeviceSize counterBufferOffset, uint32_t counterOffset,
3839+
uint32_t vertexStride, const RecordObject& record_obj) {
3840+
auto cb_state = GetWrite<CommandBuffer>(commandBuffer);
3841+
cb_state->RecordDraw(record_obj.location);
3842+
}
3843+
38363844
void DeviceState::PostCallRecordCmdWriteMarkerToMemoryAMD(VkCommandBuffer commandBuffer, const VkMemoryMarkerInfoAMD* pInfo,
38373845
const RecordObject& record_obj) {
38383846
auto cb_state = GetWrite<CommandBuffer>(commandBuffer);

layers/state_tracker/state_tracker.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1347,6 +1347,9 @@ class DeviceState : public vvl::BaseDevice {
13471347
const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfo,
13481348
uint32_t counterOffset, uint32_t vertexStride,
13491349
const RecordObject& record_obj) override;
1350+
void PostCallRecordCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance,
1351+
VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset,
1352+
uint32_t vertexStride, const RecordObject& record_obj) override;
13501353
void PostCallRecordCmdWriteMarkerToMemoryAMD(VkCommandBuffer commandBuffer, const VkMemoryMarkerInfoAMD* pInfo,
13511354
const RecordObject& record_obj) override;
13521355
void PostCallRecordCmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer,

0 commit comments

Comments
 (0)