i965/dri: Handle X-tiled modifier
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. Running with a modified kmscube, here are the bandwidth measurements. Linear: Read bandwidth: 1039.31 MiB/s Write bandwidth: 1453.56 MiB/s Y-tiled: Read bandwidth: 458.29 MiB/s Write bandwidth: 542.12 MiB/s X-tiled: Read bandwidth: 575.01 MiB/s Write bandwidth: 606.25 MiB/s Cc: Kristian Høgsberg <krh@bitplanet.net> Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Acked-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
7ce0405826
commit
cd6bd7f123
|
@ -519,12 +519,14 @@ intel_destroy_image(__DRIimage *image)
|
|||
enum modifier_priority {
|
||||
MODIFIER_PRIORITY_INVALID = 0,
|
||||
MODIFIER_PRIORITY_LINEAR,
|
||||
MODIFIER_PRIORITY_X,
|
||||
MODIFIER_PRIORITY_Y,
|
||||
};
|
||||
|
||||
const uint64_t priority_to_modifier[] = {
|
||||
[MODIFIER_PRIORITY_INVALID] = DRM_FORMAT_MOD_INVALID,
|
||||
[MODIFIER_PRIORITY_LINEAR] = DRM_FORMAT_MOD_LINEAR,
|
||||
[MODIFIER_PRIORITY_X] = I915_FORMAT_MOD_X_TILED,
|
||||
[MODIFIER_PRIORITY_Y] = I915_FORMAT_MOD_Y_TILED,
|
||||
};
|
||||
|
||||
|
@ -540,6 +542,9 @@ select_best_modifier(struct gen_device_info *devinfo,
|
|||
case I915_FORMAT_MOD_Y_TILED:
|
||||
prio = MAX2(prio, MODIFIER_PRIORITY_Y);
|
||||
break;
|
||||
case I915_FORMAT_MOD_X_TILED:
|
||||
prio = MAX2(prio, MODIFIER_PRIORITY_X);
|
||||
break;
|
||||
case DRM_FORMAT_MOD_LINEAR:
|
||||
prio = MAX2(prio, MODIFIER_PRIORITY_LINEAR);
|
||||
break;
|
||||
|
@ -577,6 +582,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;
|
||||
|
|
Loading…
Reference in New Issue