nir/lower_pntc_ytransform: Support PointCoordIsSysval

Pattern match the point coord sysval and support lowering it as well.
This is required to handle flipped framebuffers on Bifrost. However,
what this pass normalizes to is the opposite of the hardware mode we
used on Bifrost before, so we need to swap modes at the same time to
prevent regressions.

Fixes Piglit glsl-fs-pointcoord and glsl-fs-pointcoord_gles2

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13073>
This commit is contained in:
Alyssa Rosenzweig 2021-09-27 17:15:38 -04:00 committed by Marge Bot
parent 43322ceccd
commit e257344a82
3 changed files with 8 additions and 5 deletions

View File

@ -94,8 +94,10 @@ lower_pntc_ytransform_block(lower_pntc_ytransform_state *state,
nir_deref_instr *deref = nir_src_as_deref(intr->src[0]);
nir_variable *var = nir_deref_instr_get_variable(deref);
if (var->data.mode == nir_var_shader_in &&
var->data.location == VARYING_SLOT_PNTC) {
if ((var->data.mode == nir_var_shader_in &&
var->data.location == VARYING_SLOT_PNTC) ||
(var->data.mode == nir_var_system_value &&
var->data.location == SYSTEM_VALUE_POINT_COORD)) {
lower_load_pointcoord(state, intr);
}
}

View File

@ -18,7 +18,6 @@ glx@glx-swap-pixmap-bad,Fail
glx@glx-visuals-depth -pixmap,Crash
glx@glx-visuals-stencil -pixmap,Crash
shaders@glsl-bug-110796,Fail
shaders@glsl-fs-pointcoord,Fail
shaders@glsl-uniform-interstage-limits@subdivide 5,Crash
shaders@glsl-uniform-interstage-limits@subdivide 5- statechanges,Crash
shaders@glsl-vs-if-bool,Fail
@ -101,7 +100,6 @@ spec@arb_fragment_program@sparse-samplers,Crash
spec@arb_framebuffer_object@arb_framebuffer_object-depth-stencil-blit depth gl_depth32f_stencil8,Fail
spec@arb_framebuffer_object@arb_framebuffer_object-depth-stencil-blit depth_stencil gl_depth32f_stencil8,Fail
spec@arb_framebuffer_object@arb_framebuffer_object-depth-stencil-blit stencil gl_depth32f_stencil8,Fail
spec@arb_framebuffer_object@fbo-gl_pointcoord,Fail
spec@arb_framebuffer_object@fbo-luminance-alpha,Fail
spec@arb_framebuffer_srgb@fbo-fast-clear,Fail
spec@arb_get_program_binary@restore-sso-program,Fail
@ -1282,6 +1280,5 @@ spec@!opengl 3.1@primitive-restart-xfb generated,Fail
spec@!opengl 3.1@primitive-restart-xfb written,Fail
spec@!opengl 3.1@required-texture-attachment-formats,Fail
spec@!opengl 3.2@coord-replace-doesnt-eliminate-frag-tex-coords,Fail
spec@!opengl es 2.0@glsl-fs-pointcoord,Fail
spec@!opengl es 3.0@ext_texture_array-compressed_gles3 texsubimage,Fail
spec@!opengl es 3.0@gles-3.0-transform-feedback-uniform-buffer-object,Fail

View File

@ -142,6 +142,10 @@ pan_shader_prepare_bifrost_rsd(const struct pan_shader_info *info,
rsd->properties.shader_wait_dependency_7 = info->bifrost.wait_7;
#endif
/* Match the mesa/st convention. If this needs to be flipped,
* nir_lower_pntc_ytransform will do so. */
rsd->properties.point_sprite_coord_origin_max_y = true;
rsd->properties.allow_forward_pixel_to_be_killed =
!info->fs.sidefx;