Just a matter of passing the bits through in the right place.
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9637>
GL_ARB_fragment_shader_interlock DONE (i965)
GL_ARB_gpu_shader_int64 DONE (i965/gen8+, nvc0, radeonsi, softpipe, llvmpipe, zink)
GL_ARB_parallel_shader_compile DONE (all drivers)
- GL_ARB_post_depth_coverage DONE (i965, nvc0, radeonsi, llvmpipe)
+ GL_ARB_post_depth_coverage DONE (i965, nvc0, radeonsi, llvmpipe, zink)
GL_ARB_robustness_isolation not started
GL_ARB_sample_locations DONE (nvc0)
GL_ARB_seamless_cubemap_per_texture DONE (etnaviv/SEAMLESS_CUBE_MAP, freedreno, i965, nvc0, r600, radeonsi, softpipe, swr, virgl)
GL_EXT_depth_bounds_test on softpipe, zink
GL_EXT_texture_filter_minmax on nvc0 (gm200+)
GL_ARB_texture_filter_minmax on nvc0 (gm200+)
+GL_ARB_post_depth_coverage on zink
break;
case nir_intrinsic_load_sample_mask_in:
+ spirv_builder_emit_cap(&ctx->builder, SpvCapabilitySampleMaskPostDepthCoverage);
emit_load_uint_input(ctx, intr, &ctx->sample_mask_in_var, "gl_SampleMaskIn", SpvBuiltInSampleMask);
break;
if (s->info.fs.early_fragment_tests)
spirv_builder_emit_exec_mode(&ctx.builder, entry_point,
SpvExecutionModeEarlyFragmentTests);
+ if (s->info.fs.post_depth_coverage)
+ spirv_builder_emit_exec_mode(&ctx.builder, entry_point,
+ SpvExecutionModePostDepthCoverage);
break;
case MESA_SHADER_TESS_CTRL:
spirv_builder_emit_exec_mode_literal(&ctx.builder, entry_point,
Extension("VK_KHR_external_memory_fd"),
Extension("VK_KHR_vulkan_memory_model"),
Extension("VK_EXT_shader_viewport_index_layer"),
+ Extension("VK_EXT_post_depth_coverage"),
Extension("VK_KHR_driver_properties",
alias="driver",
properties=True),
case PIPE_CAP_DEPTH_BOUNDS_TEST:
return screen->info.feats.features.depthBounds;
+ case PIPE_CAP_POST_DEPTH_COVERAGE:
+ return screen->info.have_EXT_post_depth_coverage;
+
default:
return u_pipe_screen_get_param_defaults(pscreen, param);
}