diff --git a/src/amd/vulkan/radv_queue.c b/src/amd/vulkan/radv_queue.c index 59183d506bf..b8bcaaff7e5 100644 --- a/src/amd/vulkan/radv_queue.c +++ b/src/amd/vulkan/radv_queue.c @@ -1643,8 +1643,11 @@ radv_queue_submit_normal(struct radv_queue *queue, struct vk_queue_submit *submi } queue->device->ws->cs_unchain(cmd_buffer->cs); - if (!chainable || !queue->device->ws->cs_chain(chainable, cmd_buffer->cs, queue->state.uses_shadow_regs)) - cs_array[num_submitted_cs++] = cmd_buffer->cs; + if (!chainable || !queue->device->ws->cs_chain(chainable, cmd_buffer->cs, queue->state.uses_shadow_regs)) { + /* don't submit empty command buffers to the kernel. */ + if (radv_queue_ring(queue) != AMD_IP_VCN_ENC || cmd_buffer->cs->cdw != 0) + cs_array[num_submitted_cs++] = cmd_buffer->cs; + } chainable = can_chain_next ? cmd_buffer->cs : NULL; }