From f1da97ef7a8408155d2627ef55092c2aa78c81ac Mon Sep 17 00:00:00 2001 From: Nicolai Hähnle Date: Tue, 4 Jul 2017 10:34:02 +0200 Subject: nir: add load_frag_coord system value intrinsic Some drivers prefer to treat gl_FragCoord as a system value rather than a fragment shader input, see Const.GLSLFragCoordIsSysVal. Reviewed-by: Jason Ekstrand --- 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(+) (limited to 'src/compiler') diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c index b33f56d3d3a..841b7f427ab 100644 --- a/src/compiler/nir/nir.c +++ b/src/compiler/nir/nir.c @@ -1891,6 +1891,8 @@ nir_intrinsic_from_system_value(gl_system_value val) 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: @@ -1958,6 +1960,8 @@ nir_system_value_from_intrinsic(nir_intrinsic_op intrin) 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: diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c index 24ac74ee79d..ac87bec46c0 100644 --- a/src/compiler/nir/nir_gather_info.c +++ b/src/compiler/nir/nir_gather_info.c @@ -227,6 +227,7 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader) } 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: diff --git a/src/compiler/nir/nir_intrinsics.h b/src/compiler/nir/nir_intrinsics.h index 96ecfbc338d..ea51525056d 100644 --- a/src/compiler/nir/nir_intrinsics.h +++ b/src/compiler/nir/nir_intrinsics.h @@ -322,6 +322,7 @@ INTRINSIC(shared_atomic_comp_swap, 3, ARR(1, 1, 1), true, 1, 0, 1, BASE, xx, xx, 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) -- cgit v1.2.3