diff options
author | Marek Olšák <maraeo@gmail.com> | 2012-07-05 20:21:29 +0200 |
---|---|---|
committer | Marek Olšák <maraeo@gmail.com> | 2012-07-10 19:04:12 +0200 |
commit | d5a7866902af2a60a2d350c0d4970b30aed0b97a (patch) | |
tree | dbcfc0e5c8341a178fb25065064bbdb042b0fe31 | |
parent | 509453304087d58b61b6d69d82e9b231da8a9a4c (diff) |
mesa: implement glGet(GL_TIMESTAMP) v2
This is adds a new driver function to retrieve the timestamp.
Reviewed-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | src/mesa/main/dd.h | 6 | ||||
-rw-r--r-- | src/mesa/main/get.c | 15 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 687a38f4487..c8a765f47aa 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -820,6 +820,12 @@ struct dd_function_table { GLuint name); void (*DeleteSamplerObject)(struct gl_context *ctx, struct gl_sampler_object *samp); + + /** + * \name Return a timestamp in nanoseconds as defined by GL_ARB_timer_query. + * This should be equivalent to glGetInteger64v(GL_TIMESTAMP); + */ + uint64_t (*GetTimestamp)(struct gl_context *ctx); }; diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index a83d3672121..cff4cf39455 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -342,6 +342,7 @@ EXTRA_EXT(ARB_texture_buffer_object); EXTRA_EXT(OES_EGL_image_external); EXTRA_EXT(ARB_blend_func_extended); EXTRA_EXT(ARB_uniform_buffer_object); +EXTRA_EXT(ARB_timer_query); static const int extra_ARB_vertex_program_ARB_fragment_program_NV_vertex_program[] = { @@ -1353,6 +1354,9 @@ static const struct value_desc values[] = { { GL_UNIFORM_BUFFER_BINDING, LOC_CUSTOM, TYPE_INT, 0, extra_ARB_uniform_buffer_object }, + /* GL_ARB_timer_query */ + { GL_TIMESTAMP, LOC_CUSTOM, TYPE_INT64, 0, extra_ARB_timer_query } + #endif /* FEATURE_GL */ }; @@ -1807,7 +1811,16 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu case GL_UNIFORM_BUFFER_BINDING: v->value_int = ctx->UniformBuffer->Name; break; - } + /* GL_ARB_timer_query */ + case GL_TIMESTAMP: + if (ctx->Driver.GetTimestamp) { + v->value_int64 = ctx->Driver.GetTimestamp(ctx); + } + else { + _mesa_problem(ctx, "driver doesn't implement GetTimestamp"); + } + break; + } } /** |