Module: Mesa
Branch: master
Commit: a302009b7b8e5d29e9cd78e48e52b897db85e027
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a302009b7b8e5d29e9cd78e48e52b897db85e027

Author: Samuel Pitoiset <[email protected]>
Date:   Wed Dec  6 17:48:41 2017 +0100

radv: only reset command buffers that are not in the initial state

dota2 always calls vkResetCommandBuffer() before
vkBeginCommandBuffer() which is quite useless.

Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>

---

 src/amd/vulkan/radv_cmd_buffer.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 63a5eebab9..8821fcacef 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -2230,11 +2230,16 @@ VkResult radv_BeginCommandBuffer(
        const VkCommandBufferBeginInfo *pBeginInfo)
 {
        RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
-       VkResult result;
+       VkResult result = VK_SUCCESS;
 
-       result = radv_reset_cmd_buffer(cmd_buffer);
-       if (result != VK_SUCCESS)
-               return result;
+       if (cmd_buffer->status != RADV_CMD_BUFFER_STATUS_INITIAL) {
+               /* If the command buffer has already been resetted with
+                * vkResetCommandBuffer, no need to do it again.
+                */
+               result = radv_reset_cmd_buffer(cmd_buffer);
+               if (result != VK_SUCCESS)
+                       return result;
+       }
 
        memset(&cmd_buffer->state, 0, sizeof(cmd_buffer->state));
        cmd_buffer->state.last_primitive_reset_en = -1;

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to