diff --git a/.pick_status.json b/.pick_status.json index 5ad13696451..70d5a8729c5 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -463,7 +463,7 @@ "description": "llvmpipe: fix early depth + alpha2coverage + occlusion query interaction", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/llvmpipe/ci/llvmpipe-fails.txt b/src/gallium/drivers/llvmpipe/ci/llvmpipe-fails.txt index 105f4302083..091ac587720 100644 --- a/src/gallium/drivers/llvmpipe/ci/llvmpipe-fails.txt +++ b/src/gallium/drivers/llvmpipe/ci/llvmpipe-fails.txt @@ -76,12 +76,6 @@ spec@arb_post_depth_coverage@arb_post_depth_coverage-multisampling,Fail spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex,Fail spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex@'vs_input2[1][0]' on GL_PROGRAM_INPUT,Fail -# Query result -# Expected: 1536 -# Observed: 768 -spec@arb_shader_image_load_store@early-z,Fail -spec@arb_shader_image_load_store@early-z@occlusion query test/early-z pass,Fail - spec@arb_shader_image_load_store@execution@image-array-out-of-bounds-access-load,Crash spec@arb_shader_image_load_store@execution@image-array-out-of-bounds-access-store,Crash diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index af64469e16c..062d55632d5 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -940,6 +940,12 @@ generate_fs_loop(struct gallivm_state *gallivm, lp_build_pointer_set(builder, z_fb_store, sample_loop_state.counter, z_fb); lp_build_pointer_set(builder, s_fb_store, sample_loop_state.counter, s_fb); } + if (key->occlusion_count && !(depth_mode & EARLY_DEPTH_TEST_INFERRED)) { + LLVMValueRef counter = lp_jit_thread_data_vis_counter(gallivm, thread_data_type, thread_data_ptr); + lp_build_name(counter, "counter"); + lp_build_occlusion_count(gallivm, type, + key->multisample ? s_mask : lp_build_mask_value(&mask), counter); + } } if (key->multisample) { @@ -1345,7 +1351,7 @@ generate_fs_loop(struct gallivm_state *gallivm, z_value, s_value); } - if (key->occlusion_count) { + if (key->occlusion_count && (!(depth_mode & EARLY_DEPTH_TEST) || (depth_mode & EARLY_DEPTH_TEST_INFERRED))) { LLVMValueRef counter = lp_jit_thread_data_vis_counter(gallivm, thread_data_type, thread_data_ptr); lp_build_name(counter, "counter"); diff --git a/src/gallium/drivers/virgl/ci/virpipe-gl-fails.txt b/src/gallium/drivers/virgl/ci/virpipe-gl-fails.txt index d3d44afd2a8..8a53c547e62 100644 --- a/src/gallium/drivers/virgl/ci/virpipe-gl-fails.txt +++ b/src/gallium/drivers/virgl/ci/virpipe-gl-fails.txt @@ -291,8 +291,6 @@ spec@arb_program_interface_query@arb_program_interface_query-getprogramresourcei spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex@'vs_input2[1][0]' on GL_PROGRAM_INPUT,Fail spec@arb_sample_shading@builtin-gl-sample-position 2,Fail -spec@arb_shader_image_load_store@early-z,Fail -spec@arb_shader_image_load_store@early-z@occlusion query test/early-z pass,Fail spec@arb_shader_image_load_store@layer,Fail spec@arb_shader_image_load_store@layer@image2DMS/layered binding test,Fail diff --git a/src/gallium/drivers/zink/ci/zink-lvp-fails.txt b/src/gallium/drivers/zink/ci/zink-lvp-fails.txt index 6ec432b423a..6ed3b0d9a50 100644 --- a/src/gallium/drivers/zink/ci/zink-lvp-fails.txt +++ b/src/gallium/drivers/zink/ci/zink-lvp-fails.txt @@ -152,8 +152,6 @@ spec@khr_texture_compression_astc@sliced-3d-miptree-gles srgb-fp,Fail spec@khr_texture_compression_astc@sliced-3d-miptree-gles srgb-fp@sRGB decode full precision,Fail spec@!opengl 3.0@clearbuffer-depth-cs-probe,Fail spec@arb_post_depth_coverage@arb_post_depth_coverage-multisampling,Fail -spec@arb_shader_image_load_store@early-z,Fail -spec@arb_shader_image_load_store@early-z@occlusion query test/early-z pass,Fail spec@arb_shader_image_load_store@execution@image-array-out-of-bounds-access-load,Crash spec@arb_shader_image_load_store@execution@image-array-out-of-bounds-access-store,Crash