[Mesa-stable] [PATCH 3/3] i965: Use MESA_FORMAT_B8G8R8X8_SRGB for RGB visuals
Ilia Mirkin
imirkin at alum.mit.edu
Fri Dec 11 09:01:01 PST 2015
On Fri, Dec 11, 2015 at 7:32 AM, Neil Roberts <neil at linux.intel.com> wrote:
> Previously if the visual didn't have an alpha channel then it would
> pick a format that is not sRGB-capable. I don't think there's any
> reason not to always have an sRGB-capable visual. Since 28090b30 there
> are now visuals advertised without an alpha channel which means that
> games that don't request alpha bits in the config would end up without
> an sRGB-capable visual. This was breaking supertuxkart which assumes
> the winsys buffer is always sRGB-capable.
>
> The previous code always used an RGBA format if the visual config
> itself was marked as sRGB-capable regardless of whether the visual has
> alpha bits. I think we don't actually advertise any sRGB-capable
> visuals (but we just use sRGB formats anyway) so it shouldn't make any
> difference. However this patch also changes it to use RGBX if an
> sRGB-capable visual is requested without alpha bits for consistency.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92759
> Cc: "11.0 11.1" <mesa-stable at lists.freedesktop.org>
> Cc: Ilia Mirkin <imirkin at alum.mit.edu>
> Suggested-by: Ilia Mirkin <imirkin at alum.mit.edu>
FWIW this all seems reasonable to me, but based on personal
experience, format handling is some of the more subtle code in a
driver, with many different parts relying on cooperative behaviour
between them, so someone more familiar with the specifics will have to
review.
Cheers,
-ilia
> ---
> src/mesa/drivers/dri/i965/intel_screen.c | 13 ++++++-------
> 1 file changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c
> index cc90efe..825a7c1 100644
> --- a/src/mesa/drivers/dri/i965/intel_screen.c
> +++ b/src/mesa/drivers/dri/i965/intel_screen.c
> @@ -999,14 +999,13 @@ intelCreateBuffer(__DRIscreen * driScrnPriv,
> fb->Visual.samples = num_samples;
> }
>
> - if (mesaVis->redBits == 5)
> + if (mesaVis->redBits == 5) {
> rgbFormat = MESA_FORMAT_B5G6R5_UNORM;
> - else if (mesaVis->sRGBCapable)
> - rgbFormat = MESA_FORMAT_B8G8R8A8_SRGB;
> - else if (mesaVis->alphaBits == 0)
> - rgbFormat = MESA_FORMAT_B8G8R8X8_UNORM;
> - else {
> - rgbFormat = MESA_FORMAT_B8G8R8A8_SRGB;
> + } else {
> + if (mesaVis->alphaBits == 0)
> + rgbFormat = MESA_FORMAT_B8G8R8X8_SRGB;
> + else
> + rgbFormat = MESA_FORMAT_B8G8R8A8_SRGB;
> fb->Visual.sRGBCapable = true;
> }
>
> --
> 1.9.3
>
More information about the mesa-stable
mailing list