Am Freitag, den 19.05.2017, 10:37 +0100 schrieb Daniel Stone: > From: Varad Gautam <varad.gau...@collabora.com> > > introduce modifier field in DRIimage and set it to > DRM_FORMAT_MOD_INVALID for now. support DRIimage modifier > queries. > > Suggested-by: Daniel Stone <dani...@collabora.com> > Signed-off-by: Varad Gautam <varad.gau...@collabora.com> > Signed-off-by: Daniel Stone <dani...@collabora.com>
Reviewed-by: Lucas Stach <l.st...@pengutronix.de> > --- > src/gallium/state_trackers/dri/dri2.c | 15 +++++++++++++++ > src/gallium/state_trackers/dri/dri_screen.h | 1 + > 2 files changed, 16 insertions(+) > > diff --git a/src/gallium/state_trackers/dri/dri2.c > b/src/gallium/state_trackers/dri/dri2.c > index 0c5783cbd3..7614474e4a 100644 > --- a/src/gallium/state_trackers/dri/dri2.c > +++ b/src/gallium/state_trackers/dri/dri2.c > @@ -52,6 +52,10 @@ > #include "dri_query_renderer.h" > #include "dri2_buffer.h" > > +#ifndef DRM_FORMAT_MOD_INVALID > +#define DRM_FORMAT_MOD_INVALID ((1ULL<<56) - 1) > +#endif > + > /* format list taken from intel_screen.c */ > static struct image_format image_formats[] = { > { __DRI_IMAGE_FOURCC_ARGB8888, __DRI_IMAGE_COMPONENTS_RGBA, 1, > @@ -874,6 +878,7 @@ dri2_create_image_from_winsys(__DRIscreen *_screen, > img->layer = 0; > img->dri_format = format; > img->use = 0; > + img->modifier = DRM_FORMAT_MOD_INVALID; > img->loader_private = loaderPrivate; > > return img; > @@ -1024,6 +1029,7 @@ dri2_create_image(__DRIscreen *_screen, > img->dri_format = format; > img->dri_components = 0; > img->use = use; > + img->modifier = DRM_FORMAT_MOD_INVALID; > > img->loader_private = loaderPrivate; > return img; > @@ -1103,6 +1109,12 @@ dri2_query_image(__DRIimage *image, int attrib, int > *value) > case __DRI_IMAGE_ATTRIB_NUM_PLANES: > *value = 1; > return GL_TRUE; > + case __DRI_IMAGE_ATTRIB_MODIFIER_UPPER: > + *value = ((image->modifier >> 32) & 0xffffffff); > + return GL_TRUE; > + case __DRI_IMAGE_ATTRIB_MODIFIER_LOWER: > + *value = image->modifier & 0xffffffff; > + return GL_TRUE; > default: > return GL_FALSE; > } > @@ -1121,6 +1133,7 @@ dri2_dup_image(__DRIimage *image, void *loaderPrivate) > pipe_resource_reference(&img->texture, image->texture); > img->level = image->level; > img->layer = image->layer; > + img->modifier = image->modifier; > img->dri_format = image->dri_format; > /* This should be 0 for sub images, but dup is also used for base images. > */ > img->dri_components = image->dri_components; > @@ -1250,6 +1263,8 @@ dri2_create_from_texture(__DRIcontext *context, int > target, unsigned texture, > img->level = level; > img->layer = depth; > img->dri_format = > driGLFormatToImageFormat(obj->Image[face][level]->TexFormat); > + /* XXX: no way to retrieve modifier from tex here, we lose the modifier. > */ > + img->modifier = DRM_FORMAT_MOD_INVALID; > > img->loader_private = loaderPrivate; > > diff --git a/src/gallium/state_trackers/dri/dri_screen.h > b/src/gallium/state_trackers/dri/dri_screen.h > index de88cd26db..0fae51bfb5 100644 > --- a/src/gallium/state_trackers/dri/dri_screen.h > +++ b/src/gallium/state_trackers/dri/dri_screen.h > @@ -123,6 +123,7 @@ struct __DRIimageRec { > uint32_t dri_format; > uint32_t dri_components; > unsigned use; > + uint64_t modifier; > > void *loader_private; > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev