From b2aaa91e8db006adbd2ca672756b3fdb23c5b589 Mon Sep 17 00:00:00 2001 From: Andres Rodriguez Date: Wed, 12 Jul 2017 18:45:24 -0400 Subject: mesa: hook up UUID queries for driver and device v2: respective changes for new gallium interface v3: fix UUID size asserts Signed-off-by: Andres Rodriguez Reviewed-by: Timothy Arceri Reviewed-by: Samuel Pitoiset --- src/mesa/main/dd.h | 15 +++++++++++++++ src/mesa/main/get.c | 17 +++++++++++++++++ src/mesa/main/version.c | 13 +++++++++++++ src/mesa/main/version.h | 6 ++++++ 4 files changed, 51 insertions(+) (limited to 'src/mesa/main') diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index a1c9e8e793d..7b2fe8b519c 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -1109,6 +1109,21 @@ struct dd_function_table { GLenum usage, struct gl_buffer_object *bufObj); + /** + * Fill uuid with an unique identifier for this driver + * + * uuid must point to GL_UUID_SIZE_EXT bytes of available memory + */ + void (*GetDriverUuid)(struct gl_context *ctx, char *uuid); + + /** + * Fill uuid with an unique identifier for the device associated + * to this driver + * + * uuid must point to GL_UUID_SIZE_EXT bytes of available memory + */ + void (*GetDeviceUuid)(struct gl_context *ctx, char *uuid); + /*@}*/ /** diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index 75d77c80b0a..93dd927bb01 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -40,6 +40,7 @@ #include "framebuffer.h" #include "samplerobj.h" #include "stencil.h" +#include "version.h" /* This is a table driven implemetation of the glGet*v() functions. * The basic idea is that most getters just look up an int somewhere @@ -839,6 +840,14 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu ctx->Texture.Unit[unit].CurrentTex[d->offset]->Name; break; + /* GL_EXT_external_objects */ + case GL_DRIVER_UUID_EXT: + _mesa_get_driver_uuid(ctx, v->value_int_4); + break; + case GL_DEVICE_UUID_EXT: + _mesa_get_device_uuid(ctx, v->value_int_4); + break; + /* GL_EXT_packed_float */ case GL_RGBA_SIGNED_COMPONENTS_EXT: { @@ -2501,6 +2510,14 @@ find_value_indexed(const char *func, GLenum pname, GLuint index, union value *v) goto invalid_value; v->value_int = ctx->Const.MaxComputeVariableGroupSize[index]; return TYPE_INT; + + /* GL_EXT_external_objects */ + case GL_DRIVER_UUID_EXT: + _mesa_get_driver_uuid(ctx, v->value_int_4); + return TYPE_INT_4; + case GL_DEVICE_UUID_EXT: + _mesa_get_device_uuid(ctx, v->value_int_4); + return TYPE_INT_4; } invalid_enum: diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c index f04c43ddf57..fe82b4674d7 100644 --- a/src/mesa/main/version.c +++ b/src/mesa/main/version.c @@ -651,3 +651,16 @@ _mesa_compute_version(struct gl_context *ctx) break; } } + + +void +_mesa_get_driver_uuid(struct gl_context *ctx, GLint *uuid) +{ + ctx->Driver.GetDriverUuid(ctx, (char*) uuid); +} + +void +_mesa_get_device_uuid(struct gl_context *ctx, GLint *uuid) +{ + ctx->Driver.GetDeviceUuid(ctx, (char*) uuid); +} diff --git a/src/mesa/main/version.h b/src/mesa/main/version.h index ee7cb7501eb..4cb5e5f0fa9 100644 --- a/src/mesa/main/version.h +++ b/src/mesa/main/version.h @@ -47,4 +47,10 @@ _mesa_override_gl_version(struct gl_context *ctx); extern void _mesa_override_glsl_version(struct gl_constants *consts); +extern void +_mesa_get_driver_uuid(struct gl_context *ctx, GLint *uuid); + +extern void +_mesa_get_device_uuid(struct gl_context *ctx, GLint *uuid); + #endif /* VERSION_H */ -- cgit v1.2.3