summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers
diff options
context:
space:
mode:
authorBen Widawsky <[email protected]>2017-03-13 14:53:43 -0700
committerBen Widawsky <[email protected]>2017-03-15 10:36:05 -0700
commit5e7d8d396196af61ce0b1663534d97bef7895993 (patch)
treeb10de853aa774f5f32ecea30872f025ddd0e2f27 /src/mesa/drivers
parentd075cce25888f276986bd78c74bc3e029cb29e46 (diff)
i965: Implement basic modifier image creation
This is just a stub for now and will be filled in later. This was split out of an earlier patch Requested-by: Emil Velikov <[email protected]> Signed-off-by: Ben Widawsky <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r--src/mesa/drivers/dri/i965/intel_screen.c38
1 files changed, 34 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c
index 10dab2317eb..5f9dea6f5a1 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.c
+++ b/src/mesa/drivers/dri/i965/intel_screen.c
@@ -506,10 +506,12 @@ intel_destroy_image(__DRIimage *image)
}
static __DRIimage *
-intel_create_image(__DRIscreen *dri_screen,
- int width, int height, int format,
- unsigned int use,
- void *loaderPrivate)
+intel_create_image_common(__DRIscreen *dri_screen,
+ int width, int height, int format,
+ unsigned int use,
+ const uint64_t *modifiers,
+ unsigned count,
+ void *loaderPrivate)
{
__DRIimage *image;
struct intel_screen *screen = dri_screen->driverPrivate;
@@ -517,6 +519,12 @@ intel_create_image(__DRIscreen *dri_screen,
int cpp;
unsigned long pitch;
+ /* Callers of this may specify a modifier, or a dri usage, but not both. The
+ * newer modifier interface deprecates the older usage flags newer modifier
+ * interface deprecates the older usage flags.
+ */
+ assert(!(use && count));
+
tiling = I915_TILING_X;
if (use & __DRI_IMAGE_USE_CURSOR) {
if (width != 64 || height != 64)
@@ -546,6 +554,27 @@ intel_create_image(__DRIscreen *dri_screen,
return image;
}
+static __DRIimage *
+intel_create_image(__DRIscreen *dri_screen,
+ int width, int height, int format,
+ unsigned int use,
+ void *loaderPrivate)
+{
+ return intel_create_image_common(dri_screen, width, height, format, use, NULL, 0,
+ loaderPrivate);
+}
+
+static __DRIimage *
+intel_create_image_with_modifiers(__DRIscreen *dri_screen,
+ int width, int height, int format,
+ const uint64_t *modifiers,
+ const unsigned count,
+ void *loaderPrivate)
+{
+ return intel_create_image_common(dri_screen, width, height, format, 0, NULL,
+ 0, loaderPrivate);
+}
+
static GLboolean
intel_query_image(__DRIimage *image, int attrib, int *value)
{
@@ -836,6 +865,7 @@ static const __DRIimageExtension intelImageExtension = {
.getCapabilities = NULL,
.mapImage = NULL,
.unmapImage = NULL,
+ .createImageWithModifiers = intel_create_image_with_modifiers,
};
static int