diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 2cb571715dd..3f254601a43 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -1297,7 +1297,7 @@ radv_gfx10_compute_bin_size(struct radv_cmd_buffer *cmd_buffer) } extent.width = MAX2(extent.width, 128); - extent.height = MAX2(extent.width, 64); + extent.height = MAX2(extent.width, pdev->info.gfx_level >= GFX12 ? 128 : 64); return extent; } @@ -1578,7 +1578,14 @@ radv_get_disabled_binning_state(struct radv_cmd_buffer *cmd_buffer) const struct radv_dynamic_state *d = &cmd_buffer->state.dynamic; uint32_t pa_sc_binner_cntl_0; - if (pdev->info.gfx_level >= GFX10) { + if (pdev->info.gfx_level >= GFX12) { + const uint32_t bin_size_x = 128, bin_size_y = 128; + + pa_sc_binner_cntl_0 = + S_028C44_BINNING_MODE(V_028C44_BINNING_DISABLED) | S_028C44_BIN_SIZE_X_EXTEND(util_logbase2(bin_size_x) - 5) | + S_028C44_BIN_SIZE_Y_EXTEND(util_logbase2(bin_size_y) - 5) | S_028C44_DISABLE_START_OF_PRIM(1) | + S_028C44_FPOVS_PER_BATCH(63) | S_028C44_OPTIMAL_BIN_SELECTION(1) | S_028C44_FLUSH_ON_BINNING_TRANSITION(1); + } else if (pdev->info.gfx_level >= GFX10) { const unsigned binning_disabled = pdev->info.gfx_level >= GFX11_5 ? V_028C44_BINNING_DISABLED : V_028C44_DISABLE_BINNING_USE_NEW_SC; unsigned min_bytes_per_pixel = 0;