zink: Use PIPE_CAP_FS_POINT_IS_SYSVAL.

This better matches up to how spirv treats the value.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22950>
This commit is contained in:
Emma Anholt 2023-05-08 13:52:44 -07:00 committed by Marge Bot
parent bc773b795c
commit cb965b207e
4 changed files with 4 additions and 10 deletions

View file

@ -75,7 +75,6 @@ spec@!opengl 2.1@pbo@test_polygon_stip,Fail
spec@!opengl 2.1@polygon-stipple-fs,Fail
spec@arb_gpu_shader_fp64@execution@arb_gpu_shader_fp64-tf-separate,Fail
spec@arb_pipeline_statistics_query@arb_pipeline_statistics_query-frag,Fail
spec@arb_point_sprite@arb_point_sprite-checkerboard,Fail
spec@arb_point_sprite@arb_point_sprite-mipmap,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

View file

@ -790,7 +790,6 @@ emit_input(struct ntv_context *ctx, struct nir_variable *var)
else if (ctx->stage == MESA_SHADER_FRAGMENT) {
switch (var->data.location) {
HANDLE_EMIT_BUILTIN(POS, FragCoord);
HANDLE_EMIT_BUILTIN(PNTC, PointCoord);
HANDLE_EMIT_BUILTIN(LAYER, Layer);
HANDLE_EMIT_BUILTIN(PRIMITIVE_ID, PrimitiveId);
HANDLE_EMIT_BUILTIN(CLIP_DIST0, ClipDistance);

View file

@ -2559,7 +2559,6 @@ assign_producer_var_io(gl_shader_stage stage, nir_variable *var, unsigned *reser
switch (slot) {
case -1:
case VARYING_SLOT_POS:
case VARYING_SLOT_PNTC:
case VARYING_SLOT_PSIZ:
case VARYING_SLOT_LAYER:
case VARYING_SLOT_PRIMITIVE_ID:
@ -2610,7 +2609,6 @@ assign_consumer_var_io(gl_shader_stage stage, nir_variable *var, unsigned *reser
unsigned slot = var->data.location;
switch (slot) {
case VARYING_SLOT_POS:
case VARYING_SLOT_PNTC:
case VARYING_SLOT_PSIZ:
case VARYING_SLOT_LAYER:
case VARYING_SLOT_PRIMITIVE_ID:
@ -3486,10 +3484,7 @@ invert_point_coord_instr(nir_builder *b, nir_instr *instr, void *data)
if (instr->type != nir_instr_type_intrinsic)
return false;
nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
if (intr->intrinsic != nir_intrinsic_load_deref)
return false;
nir_variable *deref_var = nir_intrinsic_get_var(intr, 0);
if (deref_var->data.location != VARYING_SLOT_PNTC)
if (intr->intrinsic != nir_intrinsic_load_point_coord)
return false;
b->cursor = nir_after_instr(instr);
nir_ssa_def *def = nir_vec2(b, nir_channel(b, &intr->dest.ssa, 0),
@ -3501,7 +3496,7 @@ invert_point_coord_instr(nir_builder *b, nir_instr *instr, void *data)
static bool
invert_point_coord(nir_shader *nir)
{
if (!(nir->info.inputs_read & BITFIELD64_BIT(VARYING_SLOT_PNTC)))
if (!BITSET_TEST(nir->info.system_values_read, SYSTEM_VALUE_POINT_COORD))
return false;
return nir_shader_instructions_pass(nir, invert_point_coord_instr, nir_metadata_dominance, NULL);
}
@ -3654,7 +3649,7 @@ zink_shader_compile(struct zink_screen *screen, bool can_shobj, struct zink_shad
NIR_PASS_V(nir, lower_dual_blend);
}
if (zink_fs_key_base(key)->coord_replace_bits)
NIR_PASS_V(nir, nir_lower_texcoord_replace, zink_fs_key_base(key)->coord_replace_bits, false, false);
NIR_PASS_V(nir, nir_lower_texcoord_replace, zink_fs_key_base(key)->coord_replace_bits, true, false);
if (zink_fs_key_base(key)->point_coord_yinvert)
NIR_PASS_V(nir, invert_point_coord);
if (zink_fs_key_base(key)->force_persample_interp || zink_fs_key_base(key)->fbfetch_ms) {

View file

@ -960,6 +960,7 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return 1;
case PIPE_CAP_FS_FACE_IS_INTEGER_SYSVAL:
case PIPE_CAP_FS_POINT_IS_SYSVAL:
return 1;
case PIPE_CAP_VIEWPORT_TRANSFORM_LOWERED: