mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
mesa: add a GLES3.2 enums section, and expose new MS line width params
This also exposes them for ARB_ES3_2_compatibility. While both specs refer to the new MS line width parameters being separate from the existing AA line widths, reality begs to differ. It's the same on all hardware currently supported by mesa. Should hardware come along that wants these to be different, they're easy enough to separate out. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> (v1) Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
aa7b410592
commit
a69dc2c412
4 changed files with 46 additions and 10 deletions
|
|
@ -317,6 +317,16 @@ _mesa_is_gles31(const struct gl_context *ctx)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks if the context is for GLES 3.2 or later
|
||||
*/
|
||||
static inline bool
|
||||
_mesa_is_gles32(const struct gl_context *ctx)
|
||||
{
|
||||
return ctx->API == API_OPENGLES2 && ctx->Version >= 32;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks if the context supports geometry shaders.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -142,6 +142,7 @@ enum value_extra {
|
|||
EXTRA_API_ES2,
|
||||
EXTRA_API_ES3,
|
||||
EXTRA_API_ES31,
|
||||
EXTRA_API_ES32,
|
||||
EXTRA_NEW_BUFFERS,
|
||||
EXTRA_NEW_FRAG_CLAMP,
|
||||
EXTRA_VALID_DRAW_BUFFER,
|
||||
|
|
@ -416,6 +417,12 @@ static const int extra_ARB_gpu_shader5_or_OES_sample_variables[] = {
|
|||
EXTRA_END
|
||||
};
|
||||
|
||||
static const int extra_ES32[] = {
|
||||
EXT(ARB_ES3_2_compatibility),
|
||||
EXTRA_API_ES32,
|
||||
EXTRA_END
|
||||
};
|
||||
|
||||
EXTRA_EXT(ARB_texture_cube_map);
|
||||
EXTRA_EXT(EXT_texture_array);
|
||||
EXTRA_EXT(NV_fog_distance);
|
||||
|
|
@ -1164,6 +1171,11 @@ check_extra(struct gl_context *ctx, const char *func, const struct value_desc *d
|
|||
if (_mesa_is_gles31(ctx))
|
||||
api_found = GL_TRUE;
|
||||
break;
|
||||
case EXTRA_API_ES32:
|
||||
api_check = GL_TRUE;
|
||||
if (_mesa_is_gles32(ctx))
|
||||
api_found = GL_TRUE;
|
||||
break;
|
||||
case EXTRA_API_GL:
|
||||
api_check = GL_TRUE;
|
||||
if (_mesa_is_desktop_gl(ctx))
|
||||
|
|
@ -1312,12 +1324,14 @@ find_value(const char *func, GLenum pname, void **p, union value *v)
|
|||
* value since it's compatible with GLES2 its entry in table_set[] is at the
|
||||
* end.
|
||||
*/
|
||||
STATIC_ASSERT(ARRAY_SIZE(table_set) == API_OPENGL_LAST + 3);
|
||||
if (_mesa_is_gles3(ctx)) {
|
||||
api = API_OPENGL_LAST + 1;
|
||||
}
|
||||
if (_mesa_is_gles31(ctx)) {
|
||||
api = API_OPENGL_LAST + 2;
|
||||
STATIC_ASSERT(ARRAY_SIZE(table_set) == API_OPENGL_LAST + 4);
|
||||
if (ctx->API == API_OPENGLES2) {
|
||||
if (ctx->Version >= 32)
|
||||
api = API_OPENGL_LAST + 3;
|
||||
else if (ctx->Version >= 31)
|
||||
api = API_OPENGL_LAST + 2;
|
||||
else if (ctx->Version >= 30)
|
||||
api = API_OPENGL_LAST + 1;
|
||||
}
|
||||
mask = ARRAY_SIZE(table(api)) - 1;
|
||||
hash = (pname * prime_factor);
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ prime_factor = 89
|
|||
prime_step = 281
|
||||
hash_table_size = 1024
|
||||
|
||||
gl_apis=set(["GL", "GL_CORE", "GLES", "GLES2", "GLES3", "GLES31"])
|
||||
gl_apis=set(["GL", "GL_CORE", "GLES", "GLES2", "GLES3", "GLES31", "GLES32"])
|
||||
|
||||
def print_header():
|
||||
print "typedef const unsigned short table_t[%d];\n" % (hash_table_size)
|
||||
|
|
@ -69,6 +69,7 @@ api_enum = [
|
|||
'GL_CORE',
|
||||
'GLES3', # Not in gl_api enum in mtypes.h
|
||||
'GLES31', # Not in gl_api enum in mtypes.h
|
||||
'GLES32', # Not in gl_api enum in mtypes.h
|
||||
]
|
||||
|
||||
def api_index(api):
|
||||
|
|
@ -168,13 +169,18 @@ def generate_hash_tables(enum_list, enabled_apis, param_descriptors):
|
|||
|
||||
for api in valid_apis:
|
||||
add_to_hash_table(tables[api], hash_val, len(params))
|
||||
# Also add GLES2 items to the GLES3 and GLES31 hash table
|
||||
# Also add GLES2 items to the GLES3+ hash tables
|
||||
if api == "GLES2":
|
||||
add_to_hash_table(tables["GLES3"], hash_val, len(params))
|
||||
add_to_hash_table(tables["GLES31"], hash_val, len(params))
|
||||
# Also add GLES3 items to the GLES31 hash table
|
||||
add_to_hash_table(tables["GLES32"], hash_val, len(params))
|
||||
# Also add GLES3 items to the GLES31+ hash tables
|
||||
if api == "GLES3":
|
||||
add_to_hash_table(tables["GLES31"], hash_val, len(params))
|
||||
add_to_hash_table(tables["GLES32"], hash_val, len(params))
|
||||
# Also add GLES31 items to the GLES32+ hash tables
|
||||
if api == "GLES31":
|
||||
add_to_hash_table(tables["GLES32"], hash_val, len(params))
|
||||
params.append(["GL_" + enum_name, param[1]])
|
||||
|
||||
sorted_tables={}
|
||||
|
|
@ -210,7 +216,8 @@ if __name__ == '__main__':
|
|||
die("missing descriptor file (-f)\n")
|
||||
|
||||
# generate the code for all APIs
|
||||
enabled_apis = set(["GLES", "GLES2", "GLES3", "GLES31", "GL", "GL_CORE"])
|
||||
enabled_apis = set(["GLES", "GLES2", "GLES3", "GLES31", "GLES32",
|
||||
"GL", "GL_CORE"])
|
||||
|
||||
try:
|
||||
api_desc = gl_XML.parse_GL_API(api_desc_file)
|
||||
|
|
|
|||
|
|
@ -612,6 +612,11 @@ descriptor=[
|
|||
[ "PRIMITIVE_BOUNDING_BOX_ARB", "CONTEXT_FLOAT8(PrimitiveBoundingBox), extra_OES_primitive_bounding_box" ],
|
||||
]},
|
||||
|
||||
{ "apis": ["GL_CORE", "GLES32"], "params": [
|
||||
[ "MULTISAMPLE_LINE_WIDTH_RANGE_ARB", "CONTEXT_FLOAT2(Const.MinLineWidthAA), extra_ES32" ],
|
||||
[ "MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB", "CONTEXT_FLOAT(Const.LineWidthGranularity), extra_ES32" ],
|
||||
]},
|
||||
|
||||
# Remaining enums are only in OpenGL
|
||||
{ "apis": ["GL", "GL_CORE"], "params": [
|
||||
[ "ACCUM_RED_BITS", "BUFFER_INT(Visual.accumRedBits), NO_EXTRA" ],
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue