Module: Mesa Branch: master Commit: 11fdc2cd3420aa1541cc4c3c733e9a878308eb55 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=11fdc2cd3420aa1541cc4c3c733e9a878308eb55
Author: Samuel Pitoiset <[email protected]> Date: Mon Oct 30 17:12:05 2017 +0100 radv: bail out when binding the same index buffer DOW3 appears to hit this path. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]> --- src/amd/vulkan/radv_cmd_buffer.c | 9 +++++++++ src/amd/vulkan/radv_private.h | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 12fd70f512..00ed7182a7 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -2281,6 +2281,15 @@ void radv_CmdBindIndexBuffer( RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer); RADV_FROM_HANDLE(radv_buffer, index_buffer, buffer); + if (cmd_buffer->state.index_buffer == index_buffer && + cmd_buffer->state.index_offset == offset && + cmd_buffer->state.index_type == indexType) { + /* No state changes. */ + return; + } + + cmd_buffer->state.index_buffer = index_buffer; + cmd_buffer->state.index_offset = offset; cmd_buffer->state.index_type = indexType; /* vk matches hw */ cmd_buffer->state.index_va = radv_buffer_get_va(index_buffer->bo); cmd_buffer->state.index_va += index_buffer->offset + offset; diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 381afb777f..1b1fa93ee3 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -815,9 +815,14 @@ struct radv_cmd_state { struct radv_descriptor_set * descriptors[MAX_SETS]; struct radv_attachment_state * attachments; VkRect2D render_area; + + /* Index buffer */ + struct radv_buffer *index_buffer; + uint64_t index_offset; uint32_t index_type; uint32_t max_index_count; uint64_t index_va; + int32_t last_primitive_reset_en; uint32_t last_primitive_reset_index; enum radv_cmd_flush_bits flush_bits; _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
