From: Marek Olšák Date: Tue, 6 Jun 2023 18:23:02 +0000 (-0400) Subject: radeonsi: fix RB+ and gfx11 issues with framebuffer state X-Git-Tag: upstream/23.3.3~6851 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d891bd7c3a939bd92814f709af6705fa83fb4d29;p=platform%2Fupstream%2Fmesa.git 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: --- diff --git a/src/gallium/drivers/radeonsi/ci/gfx11-gfx1100-fail.csv b/src/gallium/drivers/radeonsi/ci/gfx11-gfx1100-fail.csv index a008189..e61dcb8 100644 --- a/src/gallium/drivers/radeonsi/ci/gfx11-gfx1100-fail.csv +++ b/src/gallium/drivers/radeonsi/ci/gfx11-gfx1100-fail.csv @@ -137,54 +137,12 @@ 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.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 KHR-GL46.transform_feedback_overflow_query_ARB.multiple-streams-one-buffer-per-stream,Crash -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.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 diff --git a/src/gallium/drivers/radeonsi/si_gfx_cs.c b/src/gallium/drivers/radeonsi/si_gfx_cs.c index 243142b..51b6cce 100644 --- a/src/gallium/drivers/radeonsi/si_gfx_cs.c +++ b/src/gallium/drivers/radeonsi/si_gfx_cs.c @@ -472,8 +472,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);