GLfloat MaxAnisotropy; /**< GL_EXT_texture_filter_anisotropic */
GLenum CompareMode; /**< GL_ARB_shadow */
GLenum CompareFunc; /**< GL_ARB_shadow */
- GLfloat CompareFailValue; /**< GL_ARB_shadow_ambient */
GLenum sRGBDecode; /**< GL_DECODE_EXT or GL_SKIP_DECODE_EXT */
GLboolean CubeMapSeamless; /**< GL_AMD_seamless_cubemap_per_texture */
-
- /* deprecated sampler state */
- GLenum DepthMode; /**< GL_ARB_depth_texture */
};
struct gl_sampler_object Sampler;
+ GLenum DepthMode; /**< GL_ARB_depth_texture */
+
GLfloat Priority; /**< in [0,1] */
GLint BaseLevel; /**< min mipmap level, OpenGL 1.2 */
GLint MaxLevel; /**< max mipmap level, OpenGL 1.2 */
{
struct gl_program Base; /**< base class */
GLboolean UsesKill; /**< shader uses KIL instruction */
+ GLboolean UsesDFdy; /**< shader uses DDY instruction */
GLboolean OriginUpperLeft;
GLboolean PixelCenterInteger;
enum gl_frag_depth_layout FragDepthLayout;
*/
unsigned num_uniform_components;
+ /**
+ * This shader's uniform block information.
+ *
+ * The offsets of the variables are assigned only for shaders in a program's
+ * _LinkedShaders[].
+ */
+ struct gl_uniform_block *UniformBlocks;
+ unsigned NumUniformBlocks;
+
struct exec_list *ir;
struct glsl_symbol_table *symbols;
MESA_SHADER_TYPES = 3
} gl_shader_type;
+struct gl_uniform_buffer_variable
+{
+ char *Name;
+ const struct glsl_type *Type;
+ unsigned int Buffer;
+ unsigned int Offset;
+ GLboolean RowMajor;
+};
+
+struct gl_uniform_block
+{
+ /** Declared name of the uniform block */
+ char *Name;
+
+ /** Array of supplemental information about UBO ir_variables. */
+ struct gl_uniform_buffer_variable *Uniforms;
+ GLuint NumUniforms;
+
+ /**
+ * Index (GL_UNIFORM_BLOCK_BINDING) into ctx->UniformBufferBindings[] to use
+ * with glBindBufferBase to bind a buffer object to this uniform block. When
+ * updated in the program, _NEW_BUFFER_OBJECT will be set.
+ */
+ GLuint Binding;
+
+ /**
+ * Minimum size of a buffer object to back this uniform buffer
+ * (GL_UNIFORM_BLOCK_DATA_SIZE).
+ */
+ GLuint UniformBufferSize;
+};
/**
* A GLSL program object.
unsigned NumUserUniformStorage;
struct gl_uniform_storage *UniformStorage;
+ struct gl_uniform_block *UniformBlocks;
+ unsigned NumUniformBlocks;
+
+ /**
+ * Indices into the _LinkedShaders's UniformBlocks[] array for each stage
+ * they're used in, or -1.
+ *
+ * This is used to maintain the Binding values of the stage's UniformBlocks[]
+ * and to answer the GL_UNIFORM_BLOCK_REFERENCED_BY_*_SHADER queries.
+ */
+ int *UniformBlockStageIndex[MESA_SHADER_TYPES];
+
/**
* Map of active uniform names to locations
*
GLuint MaxProgramMatrices;
GLuint MaxProgramMatrixStackDepth;
+ struct {
+ GLuint SamplesPassed;
+ GLuint TimeElapsed;
+ GLuint Timestamp;
+ GLuint PrimitivesGenerated;
+ GLuint PrimitivesWritten;
+ } QueryCounterBits;
+
/** vertex array / buffer object bounds checking */
GLboolean CheckArrayBounds;
GLboolean dummy; /* don't remove this! */
GLboolean dummy_true; /* Set true by _mesa_init_extensions(). */
GLboolean dummy_false; /* Set false by _mesa_init_extensions(). */
+ GLboolean ANGLE_texture_compression_dxt;
GLboolean ARB_ES2_compatibility;
GLboolean ARB_base_instance;
GLboolean ARB_blend_func_extended;
GLboolean ARB_occlusion_query;
GLboolean ARB_occlusion_query2;
GLboolean ARB_point_sprite;
- GLboolean ARB_sampler_objects;
GLboolean ARB_seamless_cube_map;
GLboolean ARB_shader_bit_encoding;
GLboolean ARB_shader_objects;
GLboolean ARB_shader_texture_lod;
GLboolean ARB_shading_language_100;
GLboolean ARB_shadow;
- GLboolean ARB_shadow_ambient;
GLboolean ARB_sync;
GLboolean ARB_texture_border_clamp;
GLboolean ARB_texture_buffer_object;
GLboolean ARB_transform_feedback_instanced;
GLboolean ARB_transpose_matrix;
GLboolean ARB_uniform_buffer_object;
- GLboolean ARB_vertex_array_object;
GLboolean ARB_vertex_program;
GLboolean ARB_vertex_shader;
GLboolean ARB_vertex_type_2_10_10_10_rev;
/* vendor extensions */
GLboolean AMD_seamless_cubemap_per_texture;
GLboolean APPLE_packed_pixels;
- GLboolean APPLE_vertex_array_object;
GLboolean APPLE_object_purgeable;
GLboolean ATI_envmap_bumpmap;
GLboolean ATI_texture_compression_3dc;
*/
typedef enum
{
- API_OPENGL,
+ API_OPENGL, /* legacy / compatibility contexts */
API_OPENGLES,
- API_OPENGLES2
+ API_OPENGLES2,
+ API_OPENGL_CORE,
} gl_api;
/**
*/
struct dd_function_table Driver;
- void *DriverCtx; /**< Points to device driver context/state */
-
/** Core/Driver constants */
struct gl_constants Const;
/** Extension information */
struct gl_extensions Extensions;
- /** Version info */
- GLuint VersionMajor, VersionMinor;
+ /** GL version integer, for example 31 for GL 3.1, or 20 for GLES 2.0. */
+ GLuint Version;
char *VersionString;
/** \name State attribute stack (for glPush/PopAttrib) */