struct gl_array_attributes VertexAttrib[VERT_ATTRIB_MAX];
/** Vertex buffer bindings */
- struct gl_vertex_buffer_binding VertexBinding[VERT_ATTRIB_MAX];
+ struct gl_vertex_buffer_binding BufferBinding[VERT_ATTRIB_MAX];
/** Mask indicating which vertex arrays have vertex buffer associated. */
GLbitfield64 VertexAttribBufferMask;
struct shader_info info;
- GLbitfield64 InputsRead; /**< Bitmask of which input regs are read */
- GLbitfield64 DoubleInputsRead; /**< Bitmask of which input regs are read and are doubles */
- GLbitfield64 OutputsWritten; /**< Bitmask of which output regs are written */
GLbitfield64 SecondaryOutputsWritten; /**< Subset of OutputsWritten outputs written with non-zero index. */
- GLbitfield64 OutputsRead; /**< Bitmask of which output regs are read */
- GLbitfield PatchInputsRead; /**< VAR[0..31] usage for patch inputs (user-defined only) */
- GLbitfield PatchOutputsWritten; /**< VAR[0..31] usage for patch outputs (user-defined only) */
- GLbitfield SystemValuesRead; /**< Bitmask of SYSTEM_VALUE_x inputs used */
GLbitfield TexturesUsed[MAX_COMBINED_TEXTURE_IMAGE_UNITS]; /**< TEXTURE_x_BIT bitmask */
GLbitfield SamplersUsed; /**< Bitfield of which samplers are used */
GLbitfield ShadowSamplers; /**< Texture units used for shadow sampling. */
GLbitfield ExternalSamplersUsed; /**< Texture units used for samplerExternalOES */
- GLboolean UsesGather; /**< Does this program use gather4 at all? */
-
- /**
- * For vertex and geometry shaders, true if the program uses the
- * gl_ClipDistance output. Ignored for fragment shaders.
- */
+ /* Vertex and geometry shaders fields */
unsigned ClipDistanceArraySize;
unsigned CullDistanceArraySize;
+ /* Fragement shader only fields */
+ GLboolean OriginUpperLeft;
+ GLboolean PixelCenterInteger;
/** Named parameters, constants, etc. from program text */
struct gl_program_parameter_list *Parameters;
};
-/** Fragment program object */
-struct gl_fragment_program
-{
- struct gl_program Base; /**< base class */
- GLboolean UsesKill; /**< shader uses KIL instruction */
- GLboolean OriginUpperLeft;
- GLboolean PixelCenterInteger;
- enum gl_frag_depth_layout FragDepthLayout;
-
- /**
- * Bitfield indicating, for each fragment shader input, 1 if that input
- * uses sample interpolation, 0 otherwise. Unused inputs are 0.
- */
- GLbitfield64 IsSample;
-};
-
-
/**
* State common to vertex and fragment programs.
*/
{
GLboolean Enabled; /**< User-set fragment program enable flag */
GLboolean _Enabled; /**< Enabled and _valid_ user program? */
- struct gl_fragment_program *Current; /**< User-bound fragment program */
+ struct gl_program *Current; /**< User-bound fragment program */
/** Currently enabled and valid fragment program (including internal
* programs, user-defined fragment programs and GLSL fragment shaders).
* This is the program we must use when rendering.
*/
- struct gl_fragment_program *_Current;
+ struct gl_program *_Current;
GLfloat Parameters[MAX_PROGRAM_ENV_PARAMS][4]; /**< Env params */
GLboolean _MaintainTexEnvProgram;
/** Program to emulate fixed-function texture env/combine (see above) */
- struct gl_fragment_program *_TexEnvProgram;
+ struct gl_program *_TexEnvProgram;
/** Cache of fixed-function programs */
struct gl_program_cache *Cache;
/*@{*/
struct _mesa_HashTable *Programs; /**< All vertex/fragment programs */
struct gl_program *DefaultVertexProgram;
- struct gl_fragment_program *DefaultFragmentProgram;
+ struct gl_program *DefaultFragmentProgram;
/*@}*/
/* GL_ATI_fragment_shader */
/* GL_ARB_robustness */
GLenum ResetStrategy;
+ /* GL_KHR_robustness */
+ GLboolean RobustAccess;
+
/* GL_ARB_blend_func_extended */
GLuint MaxDualSourceDrawBuffers;