[Mesa-dev] [PATCH 04/16] st/dri: cleanup dri extension handling
Kristian Høgsberg
krh at bitplanet.net
Fri Apr 25 10:55:46 PDT 2014
On Sun, Mar 16, 2014 at 6:48 AM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
> 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 <emil.l.velikov at gmail.com>
That all makes sense,
Reviewed-by: Kristian Høgsberg <krh at bitplanet.net>
> ---
> .../state_trackers/dri/common/dri_drawable.c | 14 ++++----
> src/gallium/state_trackers/dri/drm/dri2.c | 41 ++++++++++++----------
> 2 files changed, 30 insertions(+), 25 deletions(-)
>
> diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.c b/src/gallium/state_trackers/dri/common/dri_drawable.c
> index a399938..b7df053 100644
> --- a/src/gallium/state_trackers/dri/common/dri_drawable.c
> +++ b/src/gallium/state_trackers/dri/common/dri_drawable.c
> @@ -258,10 +258,11 @@ dri_set_tex_buffer(__DRIcontext *pDRICtx, GLint target,
> }
>
> const __DRItexBufferExtension driTexBufferExtension = {
> - { __DRI_TEX_BUFFER, __DRI_TEX_BUFFER_VERSION },
> - dri_set_tex_buffer,
> - dri_set_tex_buffer2,
> - NULL,
> + .base = { __DRI_TEX_BUFFER, 2 },
> +
> + .setTexBuffer = dri_set_tex_buffer,
> + .setTexBuffer2 = dri_set_tex_buffer2,
> + .releaseTexBuffer = NULL,
> };
>
> /**
> @@ -561,8 +562,9 @@ dri_throttle(__DRIcontext *cPriv, __DRIdrawable *dPriv,
>
>
> const __DRI2throttleExtension dri2ThrottleExtension = {
> - .base = { __DRI2_THROTTLE, __DRI2_THROTTLE_VERSION },
> - .throttle = dri_throttle,
> + .base = { __DRI2_THROTTLE, 1 },
> +
> + .throttle = dri_throttle,
> };
>
>
> diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c
> index 4f2a87e..7dccc5e 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,
> };
>
> /*
> --
> 1.9.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list