On Mon, Jan 23, 2017 at 10:21 PM, Ben Widawsky <b...@bwidawsk.net> wrote:
> 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 > > v2: Move all references to the new fourcc code(s) to this patch. > > Signed-off-by: Ben Widawsky <b...@bwidawsk.net> > Acked-by: Daniel Stone <dani...@collabora.com> > --- > src/mesa/drivers/dri/i965/intel_screen.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/intel_screen.c > b/src/mesa/drivers/dri/i965/intel_screen.c > index 12b3b071e4..9914eff6e0 100644 > --- a/src/mesa/drivers/dri/i965/intel_screen.c > +++ b/src/mesa/drivers/dri/i965/intel_screen.c > @@ -560,11 +560,15 @@ select_best_modifier(struct gen_device_info *devinfo, > const uint64_t *modifiers, > const unsigned count) > { > +#define YTILE_CCS_Yf (1 << 4) > Why not YfTILE_CCS? Y_TILE_*_Yf makes very little sense. I mean, it sort-of does with the weird way the docs like to say things, but Y and Yf are different tiling formats. > +#define YTILE_CCS (1 << 3) > #define YTILE (1 << 2) > #define XTILE (1 << 1) > #define LINEAR (1 << 0) > > const uint64_t prio_modifiers[] = { > + /* I915_FORMAT_MOD_Yf_TILED_CCS */ fourcc_mod_code(INTEL, 5), > + /* I915_FORMAT_MOD_Y_TILED_CCS */ fourcc_mod_code(INTEL, 4), > I915_FORMAT_MOD_Y_TILED, > I915_FORMAT_MOD_X_TILED, > DRM_FORMAT_MOD_LINEAR }; > @@ -586,6 +590,12 @@ select_best_modifier(struct gen_device_info *devinfo, > > modifier_bitmask |= YTILE; > break; > + case /* I915_FORMAT_MOD_Y_TILED_CCS */ fourcc_mod_code(INTEL, 4): > + modifier_bitmask |= YTILE_CCS; > + break; > + case /* I915_FORMAT_MOD_Yf_TILED_CCS */ fourcc_mod_code(INTEL, 5): > + modifier_bitmask |= YTILE_CCS_Yf; > + break; > } > } > > @@ -597,6 +607,8 @@ select_best_modifier(struct gen_device_info *devinfo, > #undef LINEAR > #undef XTILE > #undef YTILE > +#undef YTILE_CCS > +#undef YTILE_CCS_Yf > } > > static int > @@ -610,6 +622,10 @@ create_image_with_modifier(struct intel_screen > *screen, > unsigned ccs_height = 0; > > switch (modifier) { > + case /* I915_FORMAT_MOD_Yf_TILED_CCS */ fourcc_mod_code(INTEL, 5): > + case /* I915_FORMAT_MOD_Y_TILED_CCS */ fourcc_mod_code(INTEL, 4): > + ccs_height = ALIGN(DIV_ROUND_UP(height, 16), 32); > + /* fallthrough */ > case I915_FORMAT_MOD_Y_TILED: > requested_tiling = tiling = I915_TILING_Y; > tiled_height = ALIGN(height, 32); > @@ -761,6 +777,8 @@ intel_create_image_with_modifiers(__DRIscreen > *dri_screen, > /* This compacts the actual modifiers to the ones we know how to > handle */ > for (int i = 0; i < count; i++) { > switch (modifiers[i]) { > + case /* I915_FORMAT_MOD_Yf_TILED_CCS */ fourcc_mod_code(INTEL, 5): > + case /* I915_FORMAT_MOD_Y_TILED_CCS */ fourcc_mod_code(INTEL, 4): > case I915_FORMAT_MOD_Y_TILED: > case I915_FORMAT_MOD_X_TILED: > case DRM_FORMAT_MOD_LINEAR: > -- > 2.11.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev