From cf19bd944d7be4a4321fe35a04e2fe6ac762ac8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 6 Jun 2023 14:23:02 -0400 Subject: [PATCH] radeonsi: fix RB+ and gfx11 issues with framebuffer state This fixes most gfx11 test failures. Fixes: 9fecac091f31 - radeonsi/gfx11: scattered register deltas Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: (cherry picked from commit d891bd7c3a939bd92814f709af6705fa83fb4d29) --- .pick_status.json | 2 +- .../radeonsi/ci/gfx11-gfx1100-fail.csv | 42 ------------------- src/gallium/drivers/radeonsi/si_gfx_cs.c | 10 +++++ 3 files changed, 11 insertions(+), 43 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 5ae77af4659..02cbf2843d6 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -751,7 +751,7 @@ "description": "radeonsi: fix RB+ and gfx11 issues with framebuffer state", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "9fecac091f3159eb50a3e3dea2312218bb87d8c1" }, diff --git a/src/gallium/drivers/radeonsi/ci/gfx11-gfx1100-fail.csv b/src/gallium/drivers/radeonsi/ci/gfx11-gfx1100-fail.csv index e4ae1b46eef..01ed89231cc 100644 --- a/src/gallium/drivers/radeonsi/ci/gfx11-gfx1100-fail.csv +++ b/src/gallium/drivers/radeonsi/ci/gfx11-gfx1100-fail.csv @@ -137,11 +137,8 @@ KHR-Single-GL46.enhanced_layouts.xfb_capture_inactive_output_component,Fail # gfx11-only failures spec@!opengl 1.1@line-smooth-stipple,Fail -spec@arb_framebuffer_no_attachments@arb_framebuffer_no_attachments-atomic,Fail -spec@arb_framebuffer_no_attachments@arb_framebuffer_no_attachments-atomic@Per-sample,Fail spec@egl 1.4@egl-ext_egl_image_storage,Crash -KHR-GL46.gl_spirv.spirv_validation_builtin_variable_decorations_test,Fail KHR-GL46.packed_pixels.pbo_rectangle.r11f_g11f_b10f,Fail KHR-GL46.packed_pixels.pbo_rectangle.r16,Fail KHR-GL46.packed_pixels.pbo_rectangle.r16_snorm,Fail @@ -182,7 +179,6 @@ KHR-GL46.packed_pixels.pbo_rectangle.rgba8,Fail KHR-GL46.packed_pixels.pbo_rectangle.rgba8_snorm,Fail KHR-GL46.packed_pixels.pbo_rectangle.srgb8,Fail KHR-GL46.packed_pixels.pbo_rectangle.srgb8_alpha8,Fail -KHR-GL46.texture_view.view_sampling,Fail KHR-GL46.transform_feedback_overflow_query_ARB.advanced-single-stream-interleaved-attribs,Fail KHR-GL46.transform_feedback_overflow_query_ARB.advanced-single-stream-separate-attribs,Fail KHR-GL46.transform_feedback_overflow_query_ARB.multiple-streams-multiple-buffers-per-stream,Crash @@ -215,48 +211,10 @@ dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo.rgb5_a1_2d_array,F dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo.rgb5_a1_3d,Fail dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo.rgba4_2d_array,Fail dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo.rgba4_3d,Fail -dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_renderbuffer_samples_2_color,Fail -dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_renderbuffer_samples_2_discard,Fail -dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_renderbuffer_samples_4_color,Fail -dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_renderbuffer_samples_4_discard,Fail -dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_renderbuffer_samples_8_color,Fail -dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_renderbuffer_samples_8_discard,Fail -dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_texture_samples_2_color,Fail -dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_texture_samples_2_discard,Fail -dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_texture_samples_4_color,Fail -dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_texture_samples_4_discard,Fail -dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_texture_samples_8_color,Fail -dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_texture_samples_8_discard,Fail dEQP-GLES31.functional.separate_shader.random.113,Fail dEQP-GLES31.functional.separate_shader.random.82,Fail dEQP-GLES31.functional.separate_shader.random.17,Fail dEQP-GLES31.functional.separate_shader.random.45,Fail -dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_rbo_1,Fail -dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_rbo_2,Fail -dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_rbo_4,Fail -dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_rbo_8,Fail -dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_texture_1,Fail -dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_texture_2,Fail -dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_texture_4,Fail -dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_texture_8,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_id.multisample_rbo_1,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_id.multisample_rbo_2,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_id.multisample_rbo_4,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_id.multisample_texture_2,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_id.multisample_texture_4,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample.multisample_rbo_4,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample.multisample_rbo_8,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample.multisample_texture_4,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample.multisample_texture_8,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_sample.multisample_texture_1,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_sample.multisample_texture_2,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_sample.multisample_texture_8,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_two_samples.multisample_texture_4,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_two_samples.multisample_texture_8,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution.multisample_texture_1,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution.multisample_texture_2,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution.multisample_texture_4,Fail -dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution.multisample_texture_8,Fail dEQP-GLES31.functional.texture.specification.teximage3d_pbo.rgb565_cube_array,Fail dEQP-GLES31.functional.texture.specification.teximage3d_pbo.rgb5_a1_cube_array,Fail dEQP-GLES31.functional.texture.specification.teximage3d_pbo.rgba4_cube_array,Fail diff --git a/src/gallium/drivers/radeonsi/si_gfx_cs.c b/src/gallium/drivers/radeonsi/si_gfx_cs.c index e6e94ce64d0..5ed55a49478 100644 --- a/src/gallium/drivers/radeonsi/si_gfx_cs.c +++ b/src/gallium/drivers/radeonsi/si_gfx_cs.c @@ -476,8 +476,18 @@ void si_begin_new_gfx_cs(struct si_context *ctx, bool first_cs) ctx->framebuffer.dirty_zsbuf = true; } + /* RB+ depth-only rendering needs to set CB_COLOR0_INFO differently from CLEAR_STATE. */ + if (ctx->screen->info.rbplus_allowed) + ctx->framebuffer.dirty_cbufs |= 0x1; + + /* GFX11+ needs to set NUM_SAMPLES differently from CLEAR_STATE. */ + if (ctx->gfx_level >= GFX11) + ctx->framebuffer.dirty_zsbuf = true; + /* Even with shadowed registers, we have to add buffers to the buffer list. * These atoms are the only ones that add buffers. + * + * The framebuffer state also needs to set PA_SC_WINDOW_SCISSOR_BR differently from CLEAR_STATE. */ si_mark_atom_dirty(ctx, &ctx->atoms.s.framebuffer); si_mark_atom_dirty(ctx, &ctx->atoms.s.render_cond);