mesa: Add state and getters for the GL_ARB_uniform_buffer_object maximums.
Fixes piglit GL_ARB_uniform_buffer_object/minmax. Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -542,6 +542,9 @@ init_program_limits(GLenum type, struct gl_program_constants *prog)
|
|||||||
prog->MediumInt.RangeMax = 24;
|
prog->MediumInt.RangeMax = 24;
|
||||||
prog->MediumInt.Precision = 0;
|
prog->MediumInt.Precision = 0;
|
||||||
prog->LowInt = prog->HighInt = prog->MediumInt;
|
prog->LowInt = prog->HighInt = prog->MediumInt;
|
||||||
|
|
||||||
|
prog->MaxUniformBlocks = 12;
|
||||||
|
prog->MaxCombinedUniformComponents = prog->MaxUniformComponents;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -653,6 +656,12 @@ _mesa_init_constants(struct gl_context *ctx)
|
|||||||
ctx->Const.MaxTransformFeedbackSeparateComponents = 4 * MAX_FEEDBACK_ATTRIBS;
|
ctx->Const.MaxTransformFeedbackSeparateComponents = 4 * MAX_FEEDBACK_ATTRIBS;
|
||||||
ctx->Const.MaxTransformFeedbackInterleavedComponents = 4 * MAX_FEEDBACK_ATTRIBS;
|
ctx->Const.MaxTransformFeedbackInterleavedComponents = 4 * MAX_FEEDBACK_ATTRIBS;
|
||||||
|
|
||||||
|
/** GL_ARB_uniform_buffer_object */
|
||||||
|
ctx->Const.MaxCombinedUniformBlocks = 36;
|
||||||
|
ctx->Const.MaxUniformBufferBindings = 36;
|
||||||
|
ctx->Const.MaxUniformBlockSize = 16384;
|
||||||
|
ctx->Const.UniformBufferOffsetAlignment = 1;
|
||||||
|
|
||||||
/* GL 3.2: hard-coded for now: */
|
/* GL 3.2: hard-coded for now: */
|
||||||
ctx->Const.ProfileMask = GL_CONTEXT_COMPATIBILITY_PROFILE_BIT;
|
ctx->Const.ProfileMask = GL_CONTEXT_COMPATIBILITY_PROFILE_BIT;
|
||||||
|
|
||||||
|
@@ -289,6 +289,12 @@ static const int extra_ARB_sampler_objects[] = {
|
|||||||
EXTRA_END
|
EXTRA_END
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const int extra_ARB_uniform_buffer_object_and_geometry_shader[] = {
|
||||||
|
EXT(ARB_uniform_buffer_object),
|
||||||
|
EXT(ARB_geometry_shader4),
|
||||||
|
EXTRA_END
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
EXTRA_EXT(ARB_ES2_compatibility);
|
EXTRA_EXT(ARB_ES2_compatibility);
|
||||||
EXTRA_EXT(ARB_texture_cube_map);
|
EXTRA_EXT(ARB_texture_cube_map);
|
||||||
@@ -335,6 +341,7 @@ EXTRA_EXT(EXT_framebuffer_sRGB);
|
|||||||
EXTRA_EXT(ARB_texture_buffer_object);
|
EXTRA_EXT(ARB_texture_buffer_object);
|
||||||
EXTRA_EXT(OES_EGL_image_external);
|
EXTRA_EXT(OES_EGL_image_external);
|
||||||
EXTRA_EXT(ARB_blend_func_extended);
|
EXTRA_EXT(ARB_blend_func_extended);
|
||||||
|
EXTRA_EXT(ARB_uniform_buffer_object);
|
||||||
|
|
||||||
static const int
|
static const int
|
||||||
extra_ARB_vertex_program_ARB_fragment_program_NV_vertex_program[] = {
|
extra_ARB_vertex_program_ARB_fragment_program_NV_vertex_program[] = {
|
||||||
@@ -1321,6 +1328,29 @@ static const struct value_desc values[] = {
|
|||||||
|
|
||||||
{ GL_MAX_DUAL_SOURCE_DRAW_BUFFERS, CONTEXT_INT(Const.MaxDualSourceDrawBuffers), extra_ARB_blend_func_extended },
|
{ GL_MAX_DUAL_SOURCE_DRAW_BUFFERS, CONTEXT_INT(Const.MaxDualSourceDrawBuffers), extra_ARB_blend_func_extended },
|
||||||
|
|
||||||
|
/* GL_ARB_uniform_buffer_object */
|
||||||
|
{ GL_MAX_VERTEX_UNIFORM_BLOCKS, CONTEXT_INT(Const.VertexProgram.MaxUniformBlocks),
|
||||||
|
extra_ARB_uniform_buffer_object },
|
||||||
|
{ GL_MAX_FRAGMENT_UNIFORM_BLOCKS, CONTEXT_INT(Const.FragmentProgram.MaxUniformBlocks),
|
||||||
|
extra_ARB_uniform_buffer_object },
|
||||||
|
{ GL_MAX_GEOMETRY_UNIFORM_BLOCKS, CONTEXT_INT(Const.GeometryProgram.MaxUniformBlocks),
|
||||||
|
extra_ARB_uniform_buffer_object_and_geometry_shader },
|
||||||
|
{ GL_MAX_COMBINED_UNIFORM_BLOCKS, CONTEXT_INT(Const.MaxCombinedUniformBlocks),
|
||||||
|
extra_ARB_uniform_buffer_object },
|
||||||
|
{ GL_MAX_UNIFORM_BLOCK_SIZE, CONTEXT_INT(Const.MaxUniformBlockSize),
|
||||||
|
extra_ARB_uniform_buffer_object },
|
||||||
|
{ GL_MAX_UNIFORM_BUFFER_BINDINGS, CONTEXT_INT(Const.MaxUniformBufferBindings),
|
||||||
|
extra_ARB_uniform_buffer_object },
|
||||||
|
|
||||||
|
{ GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, CONTEXT_INT(Const.VertexProgram.MaxCombinedUniformComponents),
|
||||||
|
extra_ARB_uniform_buffer_object },
|
||||||
|
{ GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, CONTEXT_INT(Const.FragmentProgram.MaxCombinedUniformComponents),
|
||||||
|
extra_ARB_uniform_buffer_object },
|
||||||
|
{ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS, CONTEXT_INT(Const.GeometryProgram.MaxCombinedUniformComponents),
|
||||||
|
extra_ARB_uniform_buffer_object_and_geometry_shader },
|
||||||
|
{ GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, CONTEXT_INT(Const.UniformBufferOffsetAlignment),
|
||||||
|
extra_ARB_uniform_buffer_object },
|
||||||
|
|
||||||
#endif /* FEATURE_GL */
|
#endif /* FEATURE_GL */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -2709,6 +2709,9 @@ struct gl_program_constants
|
|||||||
/* ES 2.0 and GL_ARB_ES2_compatibility */
|
/* ES 2.0 and GL_ARB_ES2_compatibility */
|
||||||
struct gl_precision LowFloat, MediumFloat, HighFloat;
|
struct gl_precision LowFloat, MediumFloat, HighFloat;
|
||||||
struct gl_precision LowInt, MediumInt, HighInt;
|
struct gl_precision LowInt, MediumInt, HighInt;
|
||||||
|
/* GL_ARB_uniform_buffer_object */
|
||||||
|
GLuint MaxUniformBlocks;
|
||||||
|
GLuint MaxCombinedUniformComponents;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -2774,6 +2777,15 @@ struct gl_constants
|
|||||||
GLuint MaxVertexVaryingComponents; /**< Between vert and geom shader */
|
GLuint MaxVertexVaryingComponents; /**< Between vert and geom shader */
|
||||||
GLuint MaxGeometryVaryingComponents; /**< Between geom and frag shader */
|
GLuint MaxGeometryVaryingComponents; /**< Between geom and frag shader */
|
||||||
|
|
||||||
|
/** @{
|
||||||
|
* GL_ARB_uniform_buffer_object
|
||||||
|
*/
|
||||||
|
GLuint MaxCombinedUniformBlocks;
|
||||||
|
GLuint MaxUniformBufferBindings;
|
||||||
|
GLuint MaxUniformBlockSize;
|
||||||
|
GLuint UniformBufferOffsetAlignment;
|
||||||
|
/** @} */
|
||||||
|
|
||||||
/** GL_ARB_geometry_shader4 */
|
/** GL_ARB_geometry_shader4 */
|
||||||
GLuint MaxGeometryOutputVertices;
|
GLuint MaxGeometryOutputVertices;
|
||||||
GLuint MaxGeometryTotalOutputComponents;
|
GLuint MaxGeometryTotalOutputComponents;
|
||||||
|
Reference in New Issue
Block a user