On 11/29/2017 04:38 PM, Ilia Mirkin wrote:
Why is this required? Can't you just use the BGR10_A2 format directly?


If i don't define this PIPE_FORMAT_B10G10R10X2_UNORM as "TD" = displayable, then it doesn't get exposed by the state tracker as a visual/fbconfig with RGBA = 10 10 10 0 under nouveau.

Wayland's Weston doesn't like that at all and gives a screen with pixel trash instead of a proper desktop, probably because it falls back to a BGRA1010102 format with alpha channel, that might indeed be zero.

On X11, all redirected/composited rendering only gives a black window client area, e.g., glxgears ends up as a black rectangle.

With the patch i get proper Weston display, and proper composited X11. "Proper" within the limitations imposed by my hacks + tbd work on the ddx and kms driver.

The problem with exposing these sorts of formats is that blending with
DST_ALPHA would be incorrect -- it should get read in as 1.0, but will
end up with bogus values.

Hm. My own application uses DST_ALPHA and ONE_MINUS_DST_ALPHA blending on the window system backbuffer in some demos and it seems to work fine on nouveau in depth 30 from what i can see. Not sure if this is due to the way my demos handle this though and there might be other cases that misbehave like you describe.

Unfortunately nv50/g80_defs.xml.h doesn't define a BGR10 surface format without alpha channel.

-mario


Cheers,

   -ilia

On Tue, Nov 28, 2017 at 11:21 PM, Mario Kleiner
<mario.kleiner...@gmail.com> wrote:
Add it as displayable/scanout capable, so it can be
exposed as valid visual/fbconfig.

Signed-off-by: Mario Kleiner <mario.kleiner...@gmail.com>
---
  src/gallium/drivers/nouveau/nv50/nv50_formats.c | 1 +
  1 file changed, 1 insertion(+)

diff --git a/src/gallium/drivers/nouveau/nv50/nv50_formats.c 
b/src/gallium/drivers/nouveau/nv50/nv50_formats.c
index 706c34f..f2f9a4f 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_formats.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_formats.c
@@ -154,6 +154,7 @@ const struct nv50_format 
nv50_format_table[PIPE_FORMAT_COUNT] =

     C4(A, R10G10B10A2_UNORM, RGB10_A2_UNORM, R, G, B, A, UNORM, A2B10G10R10, 
IB),
     C4(A, B10G10R10A2_UNORM, BGR10_A2_UNORM, B, G, R, A, UNORM, A2B10G10R10, 
TD),
+   F3(A, B10G10R10X2_UNORM, BGR10_A2_UNORM, B, G, R, xx, UNORM, A2B10G10R10, 
TD),
     C4(A, R10G10B10A2_SNORM, NONE, R, G, B, A, SNORM, A2B10G10R10, T),
     C4(A, B10G10R10A2_SNORM, NONE, B, G, R, A, SNORM, A2B10G10R10, T),
     C4(A, R10G10B10A2_UINT, RGB10_A2_UINT, R, G, B, A, UINT, A2B10G10R10, TR),
--
2.7.4

_______________________________________________
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

Reply via email to