Re: [Mesa-dev] [PATCH v13 10/36] st/dri: enable DRIimage modifier queries

2017-05-19 Thread Lucas Stach
Am Freitag, den 19.05.2017, 10:37 +0100 schrieb Daniel Stone:
> From: Varad Gautam 
> 
> introduce modifier field in DRIimage and set it to
> DRM_FORMAT_MOD_INVALID for now. support DRIimage modifier
> queries.
> 
> Suggested-by: Daniel Stone 
> Signed-off-by: Varad Gautam 
> Signed-off-by: Daniel Stone 

Reviewed-by: Lucas Stach 

> ---
>  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_ARGB, __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) & 0x);
> +  return GL_TRUE;
> +   case __DRI_IMAGE_ATTRIB_MODIFIER_LOWER:
> +  *value = image->modifier & 0x;
> +  return GL_TRUE;
> default:
>return GL_FALSE;
> }
> @@ -1121,6 +1133,7 @@ dri2_dup_image(__DRIimage *image, void *loaderPrivate)
> pipe_resource_reference(>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


[Mesa-dev] [PATCH v13 10/36] st/dri: enable DRIimage modifier queries

2017-05-19 Thread Daniel Stone
From: Varad Gautam 

introduce modifier field in DRIimage and set it to
DRM_FORMAT_MOD_INVALID for now. support DRIimage modifier
queries.

Suggested-by: Daniel Stone 
Signed-off-by: Varad Gautam 
Signed-off-by: Daniel Stone 
---
 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_ARGB, __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) & 0x);
+  return GL_TRUE;
+   case __DRI_IMAGE_ATTRIB_MODIFIER_LOWER:
+  *value = image->modifier & 0x;
+  return GL_TRUE;
default:
   return GL_FALSE;
}
@@ -1121,6 +1133,7 @@ dri2_dup_image(__DRIimage *image, void *loaderPrivate)
pipe_resource_reference(>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;
 
-- 
2.13.0

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev