mesa: GL_EXT_disjoint_timer_query extension API bits
Patch adds GL_GPU_DISJOINT_EXT and enables to use timer queries when EXT_disjoint_timer_query is enabled. v2: enable extension only when EXT_disjoint_timer_query set Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> (v1) Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
0a202dd5e8
commit
33f73345da
|
@ -210,6 +210,7 @@ EXT(EXT_copy_image , OES_copy_image
|
|||
EXT(EXT_copy_texture , dummy_true , GLL, x , x , x , 1995)
|
||||
EXT(EXT_depth_bounds_test , EXT_depth_bounds_test , GLL, GLC, x , x , 2002)
|
||||
EXT(EXT_discard_framebuffer , dummy_true , x , x , ES1, ES2, 2009)
|
||||
EXT(EXT_disjoint_timer_query , EXT_disjoint_timer_query , x , x , x , ES2, 2016)
|
||||
EXT(EXT_draw_buffers , dummy_true , x , x , x , ES2, 2012)
|
||||
EXT(EXT_draw_buffers2 , EXT_draw_buffers2 , GLL, GLC, x , x , 2006)
|
||||
EXT(EXT_draw_buffers_indexed , ARB_draw_buffers_blend , x , x , x , 30, 2014)
|
||||
|
|
|
@ -578,6 +578,13 @@ static const int extra_EXT_provoking_vertex_32[] = {
|
|||
EXTRA_END
|
||||
};
|
||||
|
||||
static const int extra_EXT_disjoint_timer_query[] = {
|
||||
EXTRA_API_ES2,
|
||||
EXTRA_API_ES3,
|
||||
EXT(EXT_disjoint_timer_query),
|
||||
EXTRA_END
|
||||
};
|
||||
|
||||
|
||||
/* This is the big table describing all the enums we accept in
|
||||
* glGet*v(). The table is partitioned into six parts: enums
|
||||
|
@ -1160,6 +1167,16 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
|
|||
v->value_int_n.ints[0] = GL_PROGRAM_BINARY_FORMAT_MESA;
|
||||
}
|
||||
break;
|
||||
/* GL_EXT_disjoint_timer_query */
|
||||
case GL_GPU_DISJOINT_EXT:
|
||||
{
|
||||
simple_mtx_lock(&ctx->Shared->Mutex);
|
||||
v->value_int = ctx->Shared->DisjointOperation;
|
||||
/* Reset state as expected by the spec. */
|
||||
ctx->Shared->DisjointOperation = false;
|
||||
simple_mtx_unlock(&ctx->Shared->Mutex);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -254,6 +254,11 @@ descriptor=[
|
|||
[ "POINT_SIZE_ARRAY_BUFFER_BINDING_OES", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ],
|
||||
]},
|
||||
|
||||
# Enums in GLES2, GLES3
|
||||
{ "apis": ["GLES2", "GLES3"], "params": [
|
||||
[ "GPU_DISJOINT_EXT", "LOC_CUSTOM, TYPE_INT, 0, extra_EXT_disjoint_timer_query" ],
|
||||
]},
|
||||
|
||||
{ "apis": ["GL", "GL_CORE", "GLES2"], "params": [
|
||||
# == GL_MAX_TEXTURE_COORDS_NV
|
||||
[ "MAX_TEXTURE_COORDS_ARB", "CONTEXT_INT(Const.MaxTextureCoordUnits), extra_ARB_fragment_program" ],
|
||||
|
|
|
@ -144,6 +144,10 @@ typedef void *GLeglImageOES;
|
|||
#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
|
||||
#endif
|
||||
|
||||
#ifndef GL_EXT_disjoint_timer_query
|
||||
#define GL_GPU_DISJOINT_EXT 0x8FBB
|
||||
#endif
|
||||
|
||||
/* Inexplicably, GL_HALF_FLOAT_OES has a different value than GL_HALF_FLOAT.
|
||||
*/
|
||||
#ifndef GL_HALF_FLOAT_OES
|
||||
|
|
|
@ -4168,6 +4168,7 @@ struct gl_extensions
|
|||
GLboolean EXT_blend_func_separate;
|
||||
GLboolean EXT_blend_minmax;
|
||||
GLboolean EXT_depth_bounds_test;
|
||||
GLboolean EXT_disjoint_timer_query;
|
||||
GLboolean EXT_draw_buffers2;
|
||||
GLboolean EXT_framebuffer_multisample;
|
||||
GLboolean EXT_framebuffer_multisample_blit_scaled;
|
||||
|
|
|
@ -822,7 +822,8 @@ get_query_object(struct gl_context *ctx, const char *func,
|
|||
if (buf && buf != ctx->Shared->NullBufferObj) {
|
||||
bool is_64bit = ptype == GL_INT64_ARB ||
|
||||
ptype == GL_UNSIGNED_INT64_ARB;
|
||||
if (!ctx->Extensions.ARB_query_buffer_object) {
|
||||
if (!ctx->Extensions.ARB_query_buffer_object &&
|
||||
!ctx->Extensions.EXT_disjoint_timer_query) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "%s(not supported)", func);
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue