Module: Mesa Branch: staging/21.1 Commit: e40c64dfdb3d30de34fb18a4ba9a391a5265f887 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e40c64dfdb3d30de34fb18a4ba9a391a5265f887
Author: Dave Airlie <[email protected]> Date: Thu May 13 09:36:59 2021 +1000 llvmpipe: fix non-multisampled rendering to multisampled framebuffer Don't depend moving between samples on key->multisample Big CI wins Reported-by: Erik Faye-Lund <[email protected]> Reviewed-by: Emma Anholt <[email protected]> Fixes: 210d714f46e7 ("llvmpipe: handle multisample color stores.") Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10780> (cherry picked from commit 172c719baf64294abcabd58543d8a0085584e476) --- .pick_status.json | 2 +- .../drivers/llvmpipe/ci/llvmpipe-quick_gl.txt | 49 ---------------------- src/gallium/drivers/llvmpipe/lp_state_fs.c | 4 +- 3 files changed, 3 insertions(+), 52 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index c837ca6a829..bdb9d5c7cdd 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -418,7 +418,7 @@ "description": "llvmpipe: fix non-multisampled rendering to multisampled framebuffer", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "210d714f46e72c954857ba32ca9ffcffbc264c9c" }, diff --git a/src/gallium/drivers/llvmpipe/ci/llvmpipe-quick_gl.txt b/src/gallium/drivers/llvmpipe/ci/llvmpipe-quick_gl.txt index 326ec8323a9..d4507a5c205 100644 --- a/src/gallium/drivers/llvmpipe/ci/llvmpipe-quick_gl.txt +++ b/src/gallium/drivers/llvmpipe/ci/llvmpipe-quick_gl.txt @@ -512,36 +512,8 @@ spec/arb_sample_shading/interpolate-at-sample-position 8: skip spec/arb_sample_shading/samplemask 0 all: skip spec/arb_sample_shading/samplemask 16: skip spec/arb_sample_shading/samplemask 16 all: skip -spec/arb_sample_shading/samplemask 2 all/0.250000 mask_in_one: fail -spec/arb_sample_shading/samplemask 2 all/0.500000 mask_in_one: fail -spec/arb_sample_shading/samplemask 2 all/1.000000 mask_in_one: fail -spec/arb_sample_shading/samplemask 2 all/noms fix: fail -spec/arb_sample_shading/samplemask 2 all/noms mask_in_one: fail -spec/arb_sample_shading/samplemask 2 all/noms partition: fail -spec/arb_sample_shading/samplemask 2 all/sample mask_in_one: fail -spec/arb_sample_shading/samplemask 2/0.250000 mask_in_one: fail -spec/arb_sample_shading/samplemask 2/0.500000 mask_in_one: fail -spec/arb_sample_shading/samplemask 2/1.000000 mask_in_one: fail -spec/arb_sample_shading/samplemask 2/noms fix: fail -spec/arb_sample_shading/samplemask 2/noms mask_in_one: fail -spec/arb_sample_shading/samplemask 2/noms partition: fail -spec/arb_sample_shading/samplemask 2/sample mask_in_one: fail spec/arb_sample_shading/samplemask 32: skip spec/arb_sample_shading/samplemask 32 all: skip -spec/arb_sample_shading/samplemask 4 all/0.250000 mask_in_one: fail -spec/arb_sample_shading/samplemask 4 all/0.500000 mask_in_one: fail -spec/arb_sample_shading/samplemask 4 all/1.000000 mask_in_one: fail -spec/arb_sample_shading/samplemask 4 all/noms fix: fail -spec/arb_sample_shading/samplemask 4 all/noms mask_in_one: fail -spec/arb_sample_shading/samplemask 4 all/noms partition: fail -spec/arb_sample_shading/samplemask 4 all/sample mask_in_one: fail -spec/arb_sample_shading/samplemask 4/0.250000 mask_in_one: fail -spec/arb_sample_shading/samplemask 4/0.500000 mask_in_one: fail -spec/arb_sample_shading/samplemask 4/1.000000 mask_in_one: fail -spec/arb_sample_shading/samplemask 4/noms fix: fail -spec/arb_sample_shading/samplemask 4/noms mask_in_one: fail -spec/arb_sample_shading/samplemask 4/noms partition: fail -spec/arb_sample_shading/samplemask 4/sample mask_in_one: fail spec/arb_sample_shading/samplemask 6: skip spec/arb_sample_shading/samplemask 6 all: skip spec/arb_sample_shading/samplemask 8: skip @@ -718,9 +690,7 @@ spec/arb_sparse_buffer/minmax: skip spec/arb_tessellation_shader/arb_tessellation_shader-immediate-mode-draw-patches: skip spec/arb_texture_buffer_object/negative-unsupported: skip spec/arb_texture_cube_map/copyteximage cube samples=16: skip -spec/arb_texture_cube_map/copyteximage cube samples=2: fail spec/arb_texture_cube_map/copyteximage cube samples=32: skip -spec/arb_texture_cube_map/copyteximage cube samples=4: fail spec/arb_texture_cube_map/copyteximage cube samples=6: skip spec/arb_texture_cube_map/copyteximage cube samples=8: skip spec/arb_texture_float/multisample-formats 16 gl_arb_texture_float: skip @@ -814,9 +784,7 @@ spec/arb_texture_multisample/texelfetch/8-vs-sampler2dmsarray: skip spec/arb_texture_multisample/texelfetch/8-vs-usampler2dms: skip spec/arb_texture_multisample/texelfetch/8-vs-usampler2dmsarray: skip spec/arb_texture_rectangle/copyteximage rect samples=16: skip -spec/arb_texture_rectangle/copyteximage rect samples=2: fail spec/arb_texture_rectangle/copyteximage rect samples=32: skip -spec/arb_texture_rectangle/copyteximage rect samples=4: fail spec/arb_texture_rectangle/copyteximage rect samples=6: skip spec/arb_texture_rectangle/copyteximage rect samples=8: skip spec/arb_texture_rg/multisample-formats 16 gl_arb_texture_rg: skip @@ -1099,15 +1067,11 @@ spec/ext_framebuffer_multisample/alpha-to-one-dual-src-blend 32: skip spec/ext_framebuffer_multisample/alpha-to-one-dual-src-blend 6: skip spec/ext_framebuffer_multisample/alpha-to-one-dual-src-blend 8: skip spec/ext_framebuffer_multisample/alpha-to-one-msaa-disabled 16: skip -spec/ext_framebuffer_multisample/alpha-to-one-msaa-disabled 2: fail spec/ext_framebuffer_multisample/alpha-to-one-msaa-disabled 32: skip -spec/ext_framebuffer_multisample/alpha-to-one-msaa-disabled 4: fail spec/ext_framebuffer_multisample/alpha-to-one-msaa-disabled 6: skip spec/ext_framebuffer_multisample/alpha-to-one-msaa-disabled 8: skip spec/ext_framebuffer_multisample/bitmap 16: skip -spec/ext_framebuffer_multisample/bitmap 2: fail spec/ext_framebuffer_multisample/bitmap 32: skip -spec/ext_framebuffer_multisample/bitmap 4: fail spec/ext_framebuffer_multisample/bitmap 6: skip spec/ext_framebuffer_multisample/bitmap 8: skip spec/ext_framebuffer_multisample/blit-flipped 16 x: skip @@ -1163,7 +1127,6 @@ spec/ext_framebuffer_multisample/draw-buffers-alpha-to-one 16: skip spec/ext_framebuffer_multisample/draw-buffers-alpha-to-one 32: skip spec/ext_framebuffer_multisample/draw-buffers-alpha-to-one 6: skip spec/ext_framebuffer_multisample/draw-buffers-alpha-to-one 8: skip -spec/ext_framebuffer_multisample/enable-flag: fail spec/ext_framebuffer_multisample/formats 16: skip spec/ext_framebuffer_multisample/formats 32: skip spec/ext_framebuffer_multisample/formats 6: skip @@ -1183,11 +1146,7 @@ spec/ext_framebuffer_multisample/interpolation 16 centroid-edges: skip spec/ext_framebuffer_multisample/interpolation 16 non-centroid-deriv: skip spec/ext_framebuffer_multisample/interpolation 16 non-centroid-deriv-disabled: skip spec/ext_framebuffer_multisample/interpolation 16 non-centroid-disabled: skip -spec/ext_framebuffer_multisample/interpolation 2 centroid-deriv-disabled: fail -spec/ext_framebuffer_multisample/interpolation 2 centroid-disabled: fail spec/ext_framebuffer_multisample/interpolation 2 centroid-edges: fail -spec/ext_framebuffer_multisample/interpolation 2 non-centroid-deriv-disabled: fail -spec/ext_framebuffer_multisample/interpolation 2 non-centroid-disabled: fail spec/ext_framebuffer_multisample/interpolation 32 centroid-deriv: skip spec/ext_framebuffer_multisample/interpolation 32 centroid-deriv-disabled: skip spec/ext_framebuffer_multisample/interpolation 32 centroid-disabled: skip @@ -1195,11 +1154,7 @@ spec/ext_framebuffer_multisample/interpolation 32 centroid-edges: skip spec/ext_framebuffer_multisample/interpolation 32 non-centroid-deriv: skip spec/ext_framebuffer_multisample/interpolation 32 non-centroid-deriv-disabled: skip spec/ext_framebuffer_multisample/interpolation 32 non-centroid-disabled: skip -spec/ext_framebuffer_multisample/interpolation 4 centroid-deriv-disabled: fail -spec/ext_framebuffer_multisample/interpolation 4 centroid-disabled: fail spec/ext_framebuffer_multisample/interpolation 4 centroid-edges: fail -spec/ext_framebuffer_multisample/interpolation 4 non-centroid-deriv-disabled: fail -spec/ext_framebuffer_multisample/interpolation 4 non-centroid-disabled: fail spec/ext_framebuffer_multisample/interpolation 6 centroid-deriv: skip spec/ext_framebuffer_multisample/interpolation 6 centroid-deriv-disabled: skip spec/ext_framebuffer_multisample/interpolation 6 centroid-disabled: skip @@ -1432,15 +1387,11 @@ spec/ext_shader_samples_identical/ext_shader_samples_identical-simple-fs 4: skip spec/ext_shader_samples_identical/ext_shader_samples_identical-simple-fs 6: skip spec/ext_shader_samples_identical/ext_shader_samples_identical-simple-fs 8: skip spec/ext_texture_array/copyteximage 1d_array samples=16: skip -spec/ext_texture_array/copyteximage 1d_array samples=2: fail spec/ext_texture_array/copyteximage 1d_array samples=32: skip -spec/ext_texture_array/copyteximage 1d_array samples=4: fail spec/ext_texture_array/copyteximage 1d_array samples=6: skip spec/ext_texture_array/copyteximage 1d_array samples=8: skip spec/ext_texture_array/copyteximage 2d_array samples=16: skip -spec/ext_texture_array/copyteximage 2d_array samples=2: fail spec/ext_texture_array/copyteximage 2d_array samples=32: skip -spec/ext_texture_array/copyteximage 2d_array samples=4: fail spec/ext_texture_array/copyteximage 2d_array samples=6: skip spec/ext_texture_array/copyteximage 2d_array samples=8: skip spec/ext_texture_integer/fbo-integer: fail diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 43e543b1d0a..2fe01ce48d6 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -3291,7 +3291,7 @@ generate_fragment(struct llvmpipe_context *lp, LLVMBuildGEP(builder, stride_ptr, &index, 1, ""), ""); - if (key->multisample) + if (key->cbuf_nr_samples[cbuf] > 1) sample_stride = LLVMBuildLoad(builder, LLVMBuildGEP(builder, color_sample_stride_ptr, &index, 1, ""), ""); @@ -3301,7 +3301,7 @@ generate_fragment(struct llvmpipe_context *lp, unsigned out_idx = key->min_samples == 1 ? 0 : s; LLVMValueRef out_ptr = color_ptr;; - if (key->multisample) { + if (sample_stride) { LLVMValueRef sample_offset = LLVMBuildMul(builder, sample_stride, lp_build_const_int32(gallivm, s), ""); out_ptr = LLVMBuildGEP(builder, out_ptr, &sample_offset, 1, ""); } _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
