radeonsi: fix RB+ and gfx11 issues with framebuffer state
authorMarek Olšák <marek.olsak@amd.com>
Tue, 6 Jun 2023 18:23:02 +0000 (14:23 -0400)
committerMarge Bot <emma+marge@anholt.net>
Sat, 17 Jun 2023 23:42:21 +0000 (23:42 +0000)
This fixes most gfx11 test failures.

Fixes: 9fecac091f31 - radeonsi/gfx11: scattered register deltas

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23687>

src/gallium/drivers/radeonsi/ci/gfx11-gfx1100-fail.csv
src/gallium/drivers/radeonsi/si_gfx_cs.c

index a008189..e61dcb8 100644 (file)
@@ -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
index 243142b..51b6cce 100644 (file)
@@ -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);