mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
lavapipe: Implement VK_EXT_fragment_shader_interlock
This is a noop implementation because it is not possible for multiple threads to access the same pixel during rasterization since it is tiled. Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33628>
This commit is contained in:
parent
94c8a0e820
commit
3d1072ec26
2 changed files with 12 additions and 0 deletions
|
|
@ -5172,6 +5172,12 @@ visit_intrinsic(struct lp_build_nir_soa_context *bld,
|
|||
result[0] = load_ubo_base_addr(bld, get_src(bld, &instr->src[0], 0));
|
||||
break;
|
||||
}
|
||||
case nir_intrinsic_begin_invocation_interlock:
|
||||
case nir_intrinsic_end_invocation_interlock:
|
||||
/* There is no need to do any synchronization here since llvmpipe rasterizes
|
||||
* geometry using tiles and each tile is handled by only one thread at once.
|
||||
*/
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "Unsupported intrinsic: ");
|
||||
nir_print_instr(&instr->instr, stderr);
|
||||
|
|
|
|||
|
|
@ -213,6 +213,7 @@ static const struct vk_device_extension_table lvp_device_extensions_supported =
|
|||
.EXT_extended_dynamic_state2 = true,
|
||||
.EXT_extended_dynamic_state3 = true,
|
||||
.EXT_external_memory_host = true,
|
||||
.EXT_fragment_shader_interlock = true,
|
||||
.EXT_graphics_pipeline_library = true,
|
||||
.EXT_hdr_metadata = true,
|
||||
.EXT_host_image_copy = true,
|
||||
|
|
@ -763,6 +764,11 @@ lvp_get_features(const struct lvp_physical_device *pdevice,
|
|||
|
||||
/* VK_KHR_shader_quad_control */
|
||||
.shaderQuadControl = true,
|
||||
|
||||
/* VK_EXT_fragment_shader_interlock */
|
||||
.fragmentShaderSampleInterlock = true,
|
||||
.fragmentShaderPixelInterlock = true,
|
||||
.fragmentShaderShadingRateInterlock = false,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue