From: Nicolai Hähnle <nicolai.haeh...@amd.com> Some drivers prefer to treat gl_FragCoord as a system value rather than a fragment shader input, see Const.GLSLFragCoordIsSysVal. --- src/compiler/nir/nir.c | 4 ++++ src/compiler/nir/nir_gather_info.c | 1 + src/compiler/nir/nir_intrinsics.h | 1 + 3 files changed, 6 insertions(+)
diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c index f81f4ee..bb4e684 100644 --- a/src/compiler/nir/nir.c +++ b/src/compiler/nir/nir.c @@ -1884,20 +1884,22 @@ nir_intrinsic_from_system_value(gl_system_value val) case SYSTEM_VALUE_DRAW_ID: return nir_intrinsic_load_draw_id; case SYSTEM_VALUE_BASE_INSTANCE: return nir_intrinsic_load_base_instance; case SYSTEM_VALUE_VERTEX_ID_ZERO_BASE: return nir_intrinsic_load_vertex_id_zero_base; case SYSTEM_VALUE_BASE_VERTEX: return nir_intrinsic_load_base_vertex; case SYSTEM_VALUE_INVOCATION_ID: return nir_intrinsic_load_invocation_id; + case SYSTEM_VALUE_FRAG_COORD: + return nir_intrinsic_load_frag_coord; case SYSTEM_VALUE_FRONT_FACE: return nir_intrinsic_load_front_face; case SYSTEM_VALUE_SAMPLE_ID: return nir_intrinsic_load_sample_id; case SYSTEM_VALUE_SAMPLE_POS: return nir_intrinsic_load_sample_pos; case SYSTEM_VALUE_SAMPLE_MASK_IN: return nir_intrinsic_load_sample_mask_in; case SYSTEM_VALUE_LOCAL_INVOCATION_ID: return nir_intrinsic_load_local_invocation_id; @@ -1937,20 +1939,22 @@ nir_system_value_from_intrinsic(nir_intrinsic_op intrin) case nir_intrinsic_load_draw_id: return SYSTEM_VALUE_DRAW_ID; case nir_intrinsic_load_base_instance: return SYSTEM_VALUE_BASE_INSTANCE; case nir_intrinsic_load_vertex_id_zero_base: return SYSTEM_VALUE_VERTEX_ID_ZERO_BASE; case nir_intrinsic_load_base_vertex: return SYSTEM_VALUE_BASE_VERTEX; case nir_intrinsic_load_invocation_id: return SYSTEM_VALUE_INVOCATION_ID; + case nir_intrinsic_load_frag_coord: + return SYSTEM_VALUE_FRAG_COORD; case nir_intrinsic_load_front_face: return SYSTEM_VALUE_FRONT_FACE; case nir_intrinsic_load_sample_id: return SYSTEM_VALUE_SAMPLE_ID; case nir_intrinsic_load_sample_pos: return SYSTEM_VALUE_SAMPLE_POS; case nir_intrinsic_load_sample_mask_in: return SYSTEM_VALUE_SAMPLE_MASK_IN; case nir_intrinsic_load_local_invocation_id: return SYSTEM_VALUE_LOCAL_INVOCATION_ID; diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c index 24ac74e..ac87bec 100644 --- a/src/compiler/nir/nir_gather_info.c +++ b/src/compiler/nir/nir_gather_info.c @@ -220,20 +220,21 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader) for (uint i = 0; i < glsl_count_attribute_slots(var->type, false); i++) { int idx = var->data.location + i; shader->info.double_inputs_read |= BITFIELD64_BIT(idx); } } } break; } case nir_intrinsic_load_draw_id: + case nir_intrinsic_load_frag_coord: case nir_intrinsic_load_front_face: case nir_intrinsic_load_vertex_id: case nir_intrinsic_load_vertex_id_zero_base: case nir_intrinsic_load_base_vertex: case nir_intrinsic_load_base_instance: case nir_intrinsic_load_instance_id: case nir_intrinsic_load_sample_id: case nir_intrinsic_load_sample_pos: case nir_intrinsic_load_sample_mask_in: case nir_intrinsic_load_primitive_id: diff --git a/src/compiler/nir/nir_intrinsics.h b/src/compiler/nir/nir_intrinsics.h index 21e7d90..dcd9642 100644 --- a/src/compiler/nir/nir_intrinsics.h +++ b/src/compiler/nir/nir_intrinsics.h @@ -297,20 +297,21 @@ INTRINSIC(shared_atomic_comp_swap, 3, ARR(1, 1, 1), true, 1, 0, 1, BASE, xx, xx, #ifndef DEFINE_SYSTEM_VALUE #define DEFINE_SYSTEM_VALUE(name) #endif #define SYSTEM_VALUE(name, components, num_indices, idx0, idx1, idx2) \ DEFINE_SYSTEM_VALUE(name) \ INTRINSIC(load_##name, 0, ARR(0), true, components, 0, num_indices, \ idx0, idx1, idx2, \ NIR_INTRINSIC_CAN_ELIMINATE | NIR_INTRINSIC_CAN_REORDER) +SYSTEM_VALUE(frag_coord, 4, 0, xx, xx, xx) SYSTEM_VALUE(front_face, 1, 0, xx, xx, xx) SYSTEM_VALUE(vertex_id, 1, 0, xx, xx, xx) SYSTEM_VALUE(vertex_id_zero_base, 1, 0, xx, xx, xx) SYSTEM_VALUE(base_vertex, 1, 0, xx, xx, xx) SYSTEM_VALUE(instance_id, 1, 0, xx, xx, xx) SYSTEM_VALUE(base_instance, 1, 0, xx, xx, xx) SYSTEM_VALUE(draw_id, 1, 0, xx, xx, xx) SYSTEM_VALUE(sample_id, 1, 0, xx, xx, xx) SYSTEM_VALUE(sample_pos, 2, 0, xx, xx, xx) SYSTEM_VALUE(sample_mask_in, 1, 0, xx, xx, xx) -- 2.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev