OSDN Git Service

anv: Flag descriptors dirty when gl_NumWorkgroups is used
authorJason Ekstrand <jason@jlekstrand.net>
Wed, 8 Jan 2020 20:47:11 +0000 (14:47 -0600)
committerDylan Baker <dylan@pnwbakers.com>
Tue, 14 Jan 2020 21:26:08 +0000 (13:26 -0800)
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
(cherry picked from commit ae72d1238c758404df045a82c36803dbccd93b31)

src/intel/vulkan/genX_cmd_buffer.c

index 8e696cb..9253b7e 100644 (file)
@@ -3722,6 +3722,9 @@ void genX(CmdDispatchBase)(
          .bo = cmd_buffer->device->dynamic_state_pool.block_pool.bo,
          .offset = state.offset,
       };
+
+      /* The num_workgroups buffer goes in the binding table */
+      cmd_buffer->state.descriptors_dirty |= VK_SHADER_STAGE_COMPUTE_BIT;
    }
 
    genX(cmd_buffer_flush_compute_state)(cmd_buffer);
@@ -3772,9 +3775,13 @@ void genX(CmdDispatchIndirect)(
       return;
 #endif
 
-   if (prog_data->uses_num_work_groups)
+   if (prog_data->uses_num_work_groups) {
       cmd_buffer->state.compute.num_workgroups = addr;
 
+      /* The num_workgroups buffer goes in the binding table */
+      cmd_buffer->state.descriptors_dirty |= VK_SHADER_STAGE_COMPUTE_BIT;
+   }
+
    genX(cmd_buffer_flush_compute_state)(cmd_buffer);
 
    struct gen_mi_builder b;