glsl: Optionally declare gl_PointCoord as a system value

Signed-off-by: Andreas Baierl <ichgeh@imkreisrum.de>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Andreas Baierl
2019-06-04 13:23:44 +02:00
committed by Qiang Yu
parent b178fdf486
commit 24af57407c
5 changed files with 15 additions and 3 deletions

View File

@@ -1258,8 +1258,12 @@ builtin_variable_generator::generate_fs_special_vars()
add_input(VARYING_SLOT_FACE, bool_t, "gl_FrontFacing");
if (state->is_version(120, 100)) {
add_input(VARYING_SLOT_PNTC, vec2_t, GLSL_PRECISION_MEDIUM,
"gl_PointCoord");
if (this->state->ctx->Const.GLSLPointCoordIsSysVal)
add_system_value(SYSTEM_VALUE_POINT_COORD, vec2_t,
GLSL_PRECISION_MEDIUM, "gl_PointCoord");
else
add_input(VARYING_SLOT_PNTC, vec2_t, GLSL_PRECISION_MEDIUM,
"gl_PointCoord");
}
if (state->has_geometry_shader() || state->EXT_gpu_shader4_enable) {

View File

@@ -226,6 +226,7 @@ gl_system_value_name(gl_system_value sysval)
ENUM(SYSTEM_VALUE_DRAW_ID),
ENUM(SYSTEM_VALUE_INVOCATION_ID),
ENUM(SYSTEM_VALUE_FRAG_COORD),
ENUM(SYSTEM_VALUE_POINT_COORD),
ENUM(SYSTEM_VALUE_FRONT_FACE),
ENUM(SYSTEM_VALUE_SAMPLE_ID),
ENUM(SYSTEM_VALUE_SAMPLE_POS),

View File

@@ -575,6 +575,7 @@ typedef enum
*/
/*@{*/
SYSTEM_VALUE_FRAG_COORD,
SYSTEM_VALUE_POINT_COORD,
SYSTEM_VALUE_FRONT_FACE,
SYSTEM_VALUE_SAMPLE_ID,
SYSTEM_VALUE_SAMPLE_POS,

View File

@@ -3912,8 +3912,12 @@ struct gl_constants
*/
GLboolean GLSLSkipStrictMaxUniformLimitCheck;
/** Whether gl_FragCoord and gl_FrontFacing are system values. */
/**
* Whether gl_FragCoord, gl_PointCoord and gl_FrontFacing
* are system values.
**/
bool GLSLFragCoordIsSysVal;
bool GLSLPointCoordIsSysVal;
bool GLSLFrontFacingIsSysVal;
/**

View File

@@ -5774,6 +5774,8 @@ _mesa_sysval_to_semantic(unsigned sysval)
/* Fragment shader */
case SYSTEM_VALUE_FRAG_COORD:
return TGSI_SEMANTIC_POSITION;
case SYSTEM_VALUE_POINT_COORD:
return TGSI_SEMANTIC_PCOORD;
case SYSTEM_VALUE_FRONT_FACE:
return TGSI_SEMANTIC_FACE;
case SYSTEM_VALUE_SAMPLE_ID: