if (ctx->gfx_flush_in_progress)
return;
+ /* The amdgpu kernel driver always synchronizes execution for shared DMABUFs
+ * between processes, so we don't have to wait at the end of IBs to make sure
+ * everything is idle.
+ *
+ * The amdgpu winsys synchronizes execution for buffers shared by different
+ * contexts within the same process.
+ *
+ * Interop with AMDVLK, RADV, or OpenCL within the same process requires
+ * explicit fences or glFinish.
+ */
+ if (ctx->screen->info.is_amdgpu)
+ flags |= RADEON_FLUSH_START_NEXT_GFX_IB_NOW;
+
if (!ctx->screen->info.kernel_flushes_tc_l2_after_ib) {
wait_flags |= wait_ps_cs | SI_CONTEXT_INV_L2;
} else if (ctx->chip_class == GFX6) {