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:
@@ -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) {
|
||||
|
@@ -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),
|
||||
|
@@ -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,
|
||||
|
@@ -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;
|
||||
|
||||
/**
|
||||
|
@@ -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:
|
||||
|
Reference in New Issue
Block a user