From: Ben Widawsky <b...@bwidawsk.net> FINISHME: Use the kernel's final choice for the fb modifier
bwidawsk@norris2:~/intel-gfx/kmscube (modifiers $) ~/scripts/measure_bandwidth.sh ./kmscube none Read bandwidth: 603.91 MiB/s Write bandwidth: 615.28 MiB/s bwidawsk@norris2:~/intel-gfx/kmscube (modifiers $) ~/scripts/measure_bandwidth.sh ./kmscube ytile Read bandwidth: 571.13 MiB/s Write bandwidth: 555.51 MiB/s bwidawsk@norris2:~/intel-gfx/kmscube (modifiers $) ~/scripts/measure_bandwidth.sh ./kmscube ccs Read bandwidth: 259.34 MiB/s Write bandwidth: 337.83 MiB/s Signed-off-by: Ben Widawsky <b...@bwidawsk.net> --- src/mesa/drivers/dri/i965/intel_screen.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index 7ee21ee..36639f4 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -637,9 +637,15 @@ __intel_create_image(__DRIscreen *dri_screen, if (use & __DRI_IMAGE_USE_LINEAR) tiling = I915_TILING_NONE; + /* This determines the prioritized modifier to pick for later */ for (int i = 0; i < count; i++) { switch (modifiers[i]) { case I915_FORMAT_MOD_Y_TILED: + /* Y-tiling is the lowest priority modifier */ + if (modifier) + continue; + /* fallthrough */ + case /* I915_FORMAT_MOD_CCS */ fourcc_mod_code(INTEL, 4): /* Kernel provides no way to query support for this. Assume GEN check * is enough :/ */ @@ -649,12 +655,11 @@ __intel_create_image(__DRIscreen *dri_screen, } if (tiling == I915_TILING_NONE) { - _mesa_warning(NULL, "Invalid use/modifier combination (%x %llx)\n", - use, I915_FORMAT_MOD_Y_TILED); + _mesa_warning(NULL, "Invalid use/modifier combination (%x %" PRIx64")\n", + use, modifiers[i]); continue; } - - modifier = I915_FORMAT_MOD_Y_TILED; + modifier = modifiers[i]; break; } } @@ -707,7 +712,8 @@ intel_create_image_with_modifiers(__DRIscreen *dri_screen, for (int i = 0; i < count; i++) { switch (modifiers[i]) { case I915_FORMAT_MOD_Y_TILED: - local_mods[local_count++] = I915_FORMAT_MOD_Y_TILED; + case /* I915_FORMAT_MOD_CCS */ fourcc_mod_code(INTEL, 4): + local_mods[local_count++] = modifiers[i]; break; } } -- 2.10.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev