v3d/compiler: request fragment shader clip lowering to be vulkan compatible.
Vulkan allows fragment shaders to read gl_ClipDistance[], in which case the SPIR-V compiler will inject a compact array variable at VARYING_SLOT_CLIP_DIST0. Request the lowering to always work in terms of a compact array variable so we don't have to care about the API in use. Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6022>
This commit is contained in:
@@ -954,9 +954,15 @@ v3d_nir_lower_fs_late(struct v3d_compile *c)
|
||||
false, NULL);
|
||||
}
|
||||
|
||||
/* In OpenGL the fragment shader can't read gl_ClipDistance[], but
|
||||
* Vulkan allows it, in which case the SPIR-V compiler will declare
|
||||
* VARING_SLOT_CLIP_DIST0 as compact array variable. Pass true as
|
||||
* the last parameter to always operate with a compact array in both
|
||||
* OpenGL and Vulkan so we do't have to care about the API we
|
||||
* are using.
|
||||
*/
|
||||
if (c->key->ucp_enables)
|
||||
NIR_PASS_V(c->s, nir_lower_clip_fs, c->key->ucp_enables,
|
||||
false);
|
||||
NIR_PASS_V(c->s, nir_lower_clip_fs, c->key->ucp_enables, true);
|
||||
|
||||
/* Note: FS input scalarizing must happen after
|
||||
* nir_lower_two_sided_color, which only handles a vec4 at a time.
|
||||
|
Reference in New Issue
Block a user