This doesn't really "do" anything because the default tiling for the winsys buffer is X tiled. We do however want the X tiled modifier to work correctly from the API perspective, which would imply that if you set this modifier, and later do a get_modifier, you get back at least X tiled.
v2: priority lits was in reverse order. Cc: Kristian Høgsberg <k...@bitplanet.net> Signed-off-by: Ben Widawsky <b...@bwidawsk.net> Acked-by: Daniel Stone <dani...@collabora.com> --- src/mesa/drivers/dri/i965/intel_screen.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index 1954757d1e..ca725d9202 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -521,10 +521,14 @@ select_best_modifier(struct gen_device_info *devinfo, const uint64_t *modifiers, const unsigned count) { -#define YTILE (1 << 1) +#define YTILE (1 << 2) +#define XTILE (1 << 1) #define LINEAR (1 << 0) - const uint64_t prio_modifiers[] = { I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_MOD_LINEAR }; + const uint64_t prio_modifiers[] = { + DRM_FORMAT_MOD_LINEAR, + I915_FORMAT_MOD_X_TILED, + I915_FORMAT_MOD_Y_TILED}; uint32_t modifier_bitmask = 0; /* API only allows 32 */ for (int i = 0; i < count; i++) { @@ -532,6 +536,9 @@ select_best_modifier(struct gen_device_info *devinfo, case DRM_FORMAT_MOD_LINEAR: modifier_bitmask |= LINEAR; break; + case I915_FORMAT_MOD_X_TILED: + modifier_bitmask |= XTILE; + break; case I915_FORMAT_MOD_Y_TILED: if (devinfo->gen < 9) { _mesa_warning(NULL, "Invalid Y-tiling parameter\n"); @@ -549,6 +556,7 @@ select_best_modifier(struct gen_device_info *devinfo, return DRM_FORMAT_MOD_INVALID; #undef LINEAR +#undef XTILE #undef YTILE } @@ -577,6 +585,9 @@ intel_create_image_common(__DRIscreen *dri_screen, uint64_t modifier = select_best_modifier(&screen->devinfo, modifiers, count); switch (modifier) { + case I915_FORMAT_MOD_X_TILED: + assert(tiling == I915_TILING_X); + break; case DRM_FORMAT_MOD_LINEAR: tiling = I915_TILING_NONE; break; @@ -641,6 +652,7 @@ intel_create_image_with_modifiers(__DRIscreen *dri_screen, for (int i = 0; i < count; i++) { switch (modifiers[i]) { case I915_FORMAT_MOD_Y_TILED: + case I915_FORMAT_MOD_X_TILED: case DRM_FORMAT_MOD_LINEAR: local_mods[local_count++] = modifiers[i]; break; -- 2.12.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev