summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/dri/drm
diff options
context:
space:
mode:
authorEmil Velikov <[email protected]>2014-02-12 19:19:17 +0000
committerEmil Velikov <[email protected]>2014-04-28 19:11:28 +0100
commit98e2a8e2f98dd78de682d92f100598191617ac89 (patch)
tree5b70c9d362ec1e8738dd17c476766f761b4c5215 /src/gallium/state_trackers/dri/drm
parent748b35a69f4b4653ebe1e685ec4fae123d78c68a (diff)
st/dri: cleanup dri extension handling
Explicitly set the version that is implemented, as that may differ from the one defined in dri_interface.h. Use designated initialisers and constify whereever possible. Note: __DRIimageExtension should not be made const as it's modified at runtime. This patch should have no side effects on compilers that do not support designated initialisers, as the existing code in dri/common already uses them. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Kristian Høgsberg <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers/dri/drm')
-rw-r--r--src/gallium/state_trackers/dri/drm/dri2.c41
1 files changed, 22 insertions, 19 deletions
diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c
index 4f2a87e86ce..7dccc5e0ef3 100644
--- a/src/gallium/state_trackers/dri/drm/dri2.c
+++ b/src/gallium/state_trackers/dri/drm/dri2.c
@@ -95,10 +95,11 @@ dri2_invalidate_drawable(__DRIdrawable *dPriv)
}
static const __DRI2flushExtension dri2FlushExtension = {
- { __DRI2_FLUSH, __DRI2_FLUSH_VERSION },
- dri2_flush_drawable,
- dri2_invalidate_drawable,
- dri_flush,
+ .base = { __DRI2_FLUSH, 4 },
+
+ .flush = dri2_flush_drawable,
+ .invalidate = dri2_invalidate_drawable,
+ .flush_with_flags = dri_flush,
};
/**
@@ -110,7 +111,7 @@ dri2_drawable_get_buffers(struct dri_drawable *drawable,
unsigned *count)
{
__DRIdrawable *dri_drawable = drawable->dPriv;
- struct __DRIdri2LoaderExtensionRec *loader = drawable->sPriv->dri2.loader;
+ const __DRIdri2LoaderExtension *loader = drawable->sPriv->dri2.loader;
boolean with_format;
__DRIbuffer *buffers;
int num_buffers;
@@ -522,7 +523,7 @@ dri2_flush_frontbuffer(struct dri_context *ctx,
enum st_attachment_type statt)
{
__DRIdrawable *dri_drawable = drawable->dPriv;
- struct __DRIdri2LoaderExtensionRec *loader = drawable->sPriv->dri2.loader;
+ const __DRIdri2LoaderExtension *loader = drawable->sPriv->dri2.loader;
struct pipe_context *pipe = ctx->st->pipe;
if (statt != ST_ATTACHMENT_FRONT_LEFT)
@@ -557,7 +558,7 @@ dri2_update_tex_buffer(struct dri_drawable *drawable,
static __DRIimage *
dri2_lookup_egl_image(struct dri_screen *screen, void *handle)
{
- __DRIimageLookupExtension *loader = screen->sPriv->dri2.image;
+ const __DRIimageLookupExtension *loader = screen->sPriv->dri2.image;
__DRIimage *img;
if (!loader->lookupEGLImage)
@@ -1035,18 +1036,20 @@ dri2_destroy_image(__DRIimage *img)
FREE(img);
}
-static struct __DRIimageExtensionRec dri2ImageExtension = {
- { __DRI_IMAGE, 6 },
- dri2_create_image_from_name,
- dri2_create_image_from_renderbuffer,
- dri2_destroy_image,
- dri2_create_image,
- dri2_query_image,
- dri2_dup_image,
- dri2_validate_usage,
- dri2_from_names,
- dri2_from_planar,
- dri2_create_from_texture,
+/* The extension is modified during runtime if DRI_PRIME is detected */
+static __DRIimageExtension dri2ImageExtension = {
+ .base = { __DRI_IMAGE, 6 },
+
+ .createImageFromName = dri2_create_image_from_name,
+ .createImageFromRenderbuffer = dri2_create_image_from_renderbuffer,
+ .destroyImage = dri2_destroy_image,
+ .createImage = dri2_create_image,
+ .queryImage = dri2_query_image,
+ .dupImage = dri2_dup_image,
+ .validateUsage = dri2_validate_usage,
+ .createImageFromNames = dri2_from_names,
+ .fromPlanar = dri2_from_planar,
+ .createImageFromTexture = dri2_create_from_texture,
};
/*