i965/dri: Enable modifier queries
authorBen Widawsky <ben@bwidawsk.net>
Fri, 17 Mar 2017 20:29:08 +0000 (13:29 -0700)
committerBen Widawsky <ben@bwidawsk.net>
Tue, 21 Mar 2017 21:48:12 +0000 (14:48 -0700)
New to the patch series after reordering things for landing smaller
chunks.

This will essentially enable modifiers from clients that were just
enabled in previous patches. A client could use the modifiers by
setting all of them at create, but had no way to actually query them
after creating the surface (ie. stupid clients could be broken before
this patch, but in more ways than this).

Obviously, there are no modifiers being actually stored yet - so this
patch shouldn't do anything other than allow the API to get back 0 (or
the LINEAR modifier).

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/mesa/drivers/dri/i965/intel_image.h
src/mesa/drivers/dri/i965/intel_screen.c

index fd63919b2d275b4c3504097df0073a4823d73443..a362c766893790359d1a54bd4aff0d832a4134c5 100644 (file)
@@ -71,6 +71,7 @@ struct __DRIimageRec {
    GLenum internal_format;
    uint32_t dri_format;
    GLuint format;
+   uint64_t modifier; /**< fb modifier (fourcc) */
    uint32_t offset;
 
    /*
index 90223bab2b1ffd20a3dfe07c98980b5cd89f7700..26ab5a8e19463637e988a0527fee822b3ac44a4e 100644 (file)
@@ -635,6 +635,12 @@ intel_query_image(__DRIimage *image, int attrib, int *value)
    case __DRI_IMAGE_ATTRIB_OFFSET:
       *value = image->offset;
       return true;
+   case __DRI_IMAGE_ATTRIB_MODIFIER_LOWER:
+      *value = (image->modifier & 0xffffffff);
+      return true;
+   case __DRI_IMAGE_ATTRIB_MODIFIER_UPPER:
+      *value = ((image->modifier >> 32) & 0xffffffff);
+      return true;
 
   default:
       return false;