[vulkan, rasterizer] Filling missing byte count handling when TFB is not available

This commit is contained in:
CamilleLaVey 2026-02-16 00:34:08 -04:00 committed by crueter
parent 7b84247964
commit b4ea751a2c
2 changed files with 13 additions and 8 deletions

View File

@ -354,11 +354,18 @@ void RasterizerVulkan::DrawIndirect() {
const auto& buffer = indirect_buffer.first;
const auto& offset = indirect_buffer.second;
if (params.is_byte_count) {
scheduler.Record([buffer_obj = buffer->Handle(), offset,
stride = params.stride](vk::CommandBuffer cmdbuf) {
cmdbuf.DrawIndirectByteCountEXT(1, 0, buffer_obj, offset, 0,
static_cast<u32>(stride));
});
if (!device.IsExtTransformFeedbackSupported()) {
scheduler.Record([buffer_obj = buffer->Handle(), offset,
stride = params.stride](vk::CommandBuffer cmdbuf) {
cmdbuf.DrawIndirect(buffer_obj, offset, 1, static_cast<u32>(stride));
});
} else {
scheduler.Record([buffer_obj = buffer->Handle(), offset,
stride = params.stride](vk::CommandBuffer cmdbuf) {
cmdbuf.DrawIndirectByteCountEXT(1, 0, buffer_obj, offset, 0,
static_cast<u32>(stride));
});
}
return;
}
if (params.include_count) {

View File

@ -542,12 +542,10 @@ public:
return extensions.transform_feedback;
}
/// Returns true if the device supports VK_EXT_transform_feedback.
bool AreTransformFeedbackGeometryStreamsSupported() const {
return features.transform_feedback.geometryStreams;
}
/// Returns true if transform feedback preserves provoking vertex.
bool IsTransformFeedbackProvokingVertexPreserved() const {
return features.provoking_vertex.transformFeedbackPreservesProvokingVertex;
}
@ -714,7 +712,7 @@ public:
return has_renderdoc || has_nsight_graphics || has_radeon_gpu_profiler;
}
/// @returns True if compute pipelines can cause crashing.
/// Returns true if compute pipelines can cause crashing.
bool HasBrokenCompute() const {
return has_broken_compute;
}