mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 18:18:06 +02:00
glsl: optionally declare gl_FragCoord & gl_FrontFacing as system values
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
c07cf5f5a9
commit
4191c1a57c
5 changed files with 18 additions and 4 deletions
|
|
@ -3517,7 +3517,7 @@ get_variable_being_redeclared(ir_variable *var, YYLTYPE loc,
|
|||
state->is_version(150, 0))
|
||||
&& strcmp(var->name, "gl_FragCoord") == 0
|
||||
&& earlier->type == var->type
|
||||
&& earlier->data.mode == var->data.mode) {
|
||||
&& var->data.mode == ir_var_shader_in) {
|
||||
/* Allow redeclaration of gl_FragCoord for ARB_fcc layout
|
||||
* qualifiers.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1057,8 +1057,16 @@ builtin_variable_generator::generate_fs_special_vars()
|
|||
{
|
||||
ir_variable *var;
|
||||
|
||||
add_input(VARYING_SLOT_POS, vec4_t, "gl_FragCoord");
|
||||
add_input(VARYING_SLOT_FACE, bool_t, "gl_FrontFacing");
|
||||
if (this->state->ctx->Const.GLSLFragCoordIsSysVal)
|
||||
add_system_value(SYSTEM_VALUE_FRAG_COORD, vec4_t, "gl_FragCoord");
|
||||
else
|
||||
add_input(VARYING_SLOT_POS, vec4_t, "gl_FragCoord");
|
||||
|
||||
if (this->state->ctx->Const.GLSLFrontFacingIsSysVal)
|
||||
add_system_value(SYSTEM_VALUE_FRONT_FACE, bool_t, "gl_FrontFacing");
|
||||
else
|
||||
add_input(VARYING_SLOT_FACE, bool_t, "gl_FrontFacing");
|
||||
|
||||
if (state->is_version(120, 100))
|
||||
add_input(VARYING_SLOT_PNTC, vec2_t, "gl_PointCoord");
|
||||
|
||||
|
|
|
|||
|
|
@ -412,7 +412,8 @@ typedef enum
|
|||
* \name Fragment shader system values
|
||||
*/
|
||||
/*@{*/
|
||||
SYSTEM_VALUE_FRONT_FACE, /**< (not done yet) */
|
||||
SYSTEM_VALUE_FRAG_COORD,
|
||||
SYSTEM_VALUE_FRONT_FACE,
|
||||
SYSTEM_VALUE_SAMPLE_ID,
|
||||
SYSTEM_VALUE_SAMPLE_POS,
|
||||
SYSTEM_VALUE_SAMPLE_MASK_IN,
|
||||
|
|
|
|||
|
|
@ -3515,6 +3515,10 @@ struct gl_constants
|
|||
*/
|
||||
GLboolean GLSLSkipStrictMaxUniformLimitCheck;
|
||||
|
||||
/** Whether gl_FragCoord and gl_FrontFacing are system values. */
|
||||
bool GLSLFragCoordIsSysVal;
|
||||
bool GLSLFrontFacingIsSysVal;
|
||||
|
||||
/**
|
||||
* Always use the GetTransformFeedbackVertexCount() driver hook, rather
|
||||
* than passing the transform feedback object to the drawing function.
|
||||
|
|
|
|||
|
|
@ -4459,6 +4459,7 @@ const unsigned _mesa_sysval_to_semantic[SYSTEM_VALUE_MAX] = {
|
|||
|
||||
/* Fragment shader
|
||||
*/
|
||||
TGSI_SEMANTIC_POSITION,
|
||||
TGSI_SEMANTIC_FACE,
|
||||
TGSI_SEMANTIC_SAMPLEID,
|
||||
TGSI_SEMANTIC_SAMPLEPOS,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue