All of lore.kernel.org
 help / color / mirror / Atom feed
* [Bug 109330] New: GL_ALPHA_BITS set to non-zero with EGL_PLATFORM_GBM_MESA
@ 2019-01-12 13:59 bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
       [not found] ` <bug-109330-8800-V0hAGp6uBxMKqLRl/0Ahz6D7qz1kEfGD2LY78lusg7I@public.gmane.org/>
  0 siblings, 1 reply; 8+ messages in thread
From: bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ @ 2019-01-12 13:59 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW


[-- Attachment #1.1: Type: text/plain, Size: 1937 bytes --]

https://bugs.freedesktop.org/show_bug.cgi?id=109330

            Bug ID: 109330
           Summary: GL_ALPHA_BITS set to non-zero with
                    EGL_PLATFORM_GBM_MESA
           Product: Mesa
           Version: unspecified
          Hardware: Other
                OS: All
            Status: NEW
          Severity: normal
          Priority: medium
         Component: Drivers/DRI/nouveau
          Assignee: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
          Reporter: contact-sV0wSBM+kKVWj0EZb7rXcA@public.gmane.org
        QA Contact: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org

When creating an EGL context with EGL_PLATFORM_GBM_MESA and EGL_ALPHA_SIZE=1,
Nouveau produces completely transparent images when using glReadPixels. Note
that my code works with other drivers (i915, amdgpu), only Nouveau is affected.

How to reproduce:

1. Create an EGL context with these attribs:

static const EGLint config_attribs[] = {
        EGL_RED_SIZE, 1,
        EGL_GREEN_SIZE, 1,
        EGL_BLUE_SIZE, 1,
        EGL_ALPHA_SIZE, 1,
        EGL_NONE,
};

Set platform to EGL_PLATFORM_GBM_MESA and visual to GBM_FORMAT_ARGB8888.

2. Try to get the alpha size:

eglGetConfigAttrib(EGL_ALPHA_SIZE)
glGetIntegerv(GL_ALPHA_BITS)

Both return 8, meaning an alpha channel is present.

3. Try to read pixels with glReadPixels and GL_BGRA_EXT. The resulting image
has an alpha channel which sets the pixels to be completely transparent.
Editing the image with gimp reveals that inverting the alpha channel makes the
image correct.

Software is wlroots [1] with grim [2]. To reproduce, compile both, start
rootston, run grim. Let me know if you need more info.

[1]: https://github.com/swaywm/wlroots
[2]: https://github.com/emersion/grim

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.

[-- Attachment #1.2: Type: text/html, Size: 3327 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug 109330] GL_ALPHA_BITS set to non-zero with EGL_PLATFORM_GBM_MESA
       [not found] ` <bug-109330-8800-V0hAGp6uBxMKqLRl/0Ahz6D7qz1kEfGD2LY78lusg7I@public.gmane.org/>
@ 2019-01-13  0:29   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
  2019-01-13  2:30   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
                     ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ @ 2019-01-13  0:29 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW


[-- Attachment #1.1: Type: text/plain, Size: 458 bytes --]

https://bugs.freedesktop.org/show_bug.cgi?id=109330

--- Comment #1 from Ilia Mirkin <imirkin-FrUbXkNCsVf2fBVCVOL8/A@public.gmane.org> ---
A few questions:

1. Which hardware was this tested on? (lspci -nn -d 10de: should produce the
requisite info)
2. What mesa version
3. Is glReadPixels reading into a PBO or a client-side buffer?

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are the QA Contact for the bug.

[-- Attachment #1.2: Type: text/html, Size: 1247 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug 109330] GL_ALPHA_BITS set to non-zero with EGL_PLATFORM_GBM_MESA
       [not found] ` <bug-109330-8800-V0hAGp6uBxMKqLRl/0Ahz6D7qz1kEfGD2LY78lusg7I@public.gmane.org/>
  2019-01-13  0:29   ` [Bug 109330] " bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
@ 2019-01-13  2:30   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
  2019-01-13  3:14   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
                     ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ @ 2019-01-13  2:30 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW


[-- Attachment #1.1: Type: text/plain, Size: 549 bytes --]

https://bugs.freedesktop.org/show_bug.cgi?id=109330

--- Comment #2 from emersion <contact-sV0wSBM+kKVWj0EZb7rXcA@public.gmane.org> ---
The downstream bug is at [1].

1. So far I've received bug reports for these cards:

NVIDIA Quadro FX 580
NVIDIA GT218M NVS 3100M
NVIDIA GT216M GeForce GT 320M

2. Mesa 18.2.6

3. glReadPixels is reading into a client-side buffer

[1]: https://github.com/swaywm/wlroots/issues/1438

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are the QA Contact for the bug.

[-- Attachment #1.2: Type: text/html, Size: 1393 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug 109330] GL_ALPHA_BITS set to non-zero with EGL_PLATFORM_GBM_MESA
       [not found] ` <bug-109330-8800-V0hAGp6uBxMKqLRl/0Ahz6D7qz1kEfGD2LY78lusg7I@public.gmane.org/>
  2019-01-13  0:29   ` [Bug 109330] " bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
  2019-01-13  2:30   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
@ 2019-01-13  3:14   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
  2019-01-13 16:17   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
                     ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ @ 2019-01-13  3:14 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW


[-- Attachment #1.1: Type: text/plain, Size: 365 bytes --]

https://bugs.freedesktop.org/show_bug.cgi?id=109330

--- Comment #3 from Wesley Moore <wes-1ec+ouG+Y3M@public.gmane.org> ---
I'm seeing this issue on the following hardware too:

NVIDIA Corporation GP107 [GeForce GTX 1050] [10de:1c81] (rev a1)

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are the QA Contact for the bug.

[-- Attachment #1.2: Type: text/html, Size: 1154 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug 109330] GL_ALPHA_BITS set to non-zero with EGL_PLATFORM_GBM_MESA
       [not found] ` <bug-109330-8800-V0hAGp6uBxMKqLRl/0Ahz6D7qz1kEfGD2LY78lusg7I@public.gmane.org/>
                     ` (2 preceding siblings ...)
  2019-01-13  3:14   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
@ 2019-01-13 16:17   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
  2019-01-21  0:30   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
                     ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ @ 2019-01-13 16:17 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW


[-- Attachment #1.1: Type: text/plain, Size: 1496 bytes --]

https://bugs.freedesktop.org/show_bug.cgi?id=109330

--- Comment #4 from Ilia Mirkin <imirkin-FrUbXkNCsVf2fBVCVOL8/A@public.gmane.org> ---
OK, so the 3 GPUs listed by emersion are all nv50, while the GP107 would be
covered by the nvc0 driver backend. Unfortunately I have a nv42 plugged in ATM,
but I'll have a look when I'm back on something a bit more modern.

If someone with C/C++ development experience and the requisite hardware is
interested, feel free to join in #nouveau on irc.freenode.net and I can provide
advice for things to investigate.

Lastly, if someone can provide an apitrace of the application doing
glReadPixels and getting unexpected results, that would avoid the need to have
to reproduce the software setup. I believe it's possible to look at
glReadPixels results in qapitrace ... would have to double-check though.

One guess is that we're copying from a RGBX surface to a RGBA surface, and not
whacking alpha to 1. However that should generally work, so one would have to
identify the precise code-path followed whereby that does not work.

Another guess is that the result of the rendering really does produce an alpha
of 0, either due to an earlier bug (unrelated to glReadPixels) happening, or
due to something specific to the drm formats exposed by nouveau and/or order of
gl configs, which causes something funny to happen..

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.

[-- Attachment #1.2: Type: text/html, Size: 2285 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug 109330] GL_ALPHA_BITS set to non-zero with EGL_PLATFORM_GBM_MESA
       [not found] ` <bug-109330-8800-V0hAGp6uBxMKqLRl/0Ahz6D7qz1kEfGD2LY78lusg7I@public.gmane.org/>
                     ` (3 preceding siblings ...)
  2019-01-13 16:17   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
@ 2019-01-21  0:30   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
  2019-01-22 13:15   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
  2019-01-22 13:19   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
  6 siblings, 0 replies; 8+ messages in thread
From: bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ @ 2019-01-21  0:30 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW


[-- Attachment #1.1: Type: text/plain, Size: 1832 bytes --]

https://bugs.freedesktop.org/show_bug.cgi?id=109330

Ilia Mirkin <imirkin-FrUbXkNCsVf2fBVCVOL8/A@public.gmane.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |NOTOURBUG

--- Comment #5 from Ilia Mirkin <imirkin-FrUbXkNCsVf2fBVCVOL8/A@public.gmane.org> ---
As per my comments on IRC, I think this is a wlroots bug:
drm_connector_set_mode calls init_drm_plane_surfaces (which in turn creates a
gbm surface) with GBM_FORMAT_XRGB8888. Flipping that to ARGB8888 resolves the
issue.

As per my understanding, the config has to match the surface format, otherwise
you get stuff like this. (At the extreme, imagine one said RGB10A2.)

The more detailed issue is that the winsys fb calls dri2_drm_image_get_buffers
(via the getBuffers loader API call), which in turn uses the surface's format
to create a backing bo. That format is XRGB8888, which becomes
PIPE_FORMAT_BGRX8888_UNORM. The pipe_surface also has this format. However the
GL believes that the format should be MESA_FORMAT_BGRA8888 (since that's what
the config said), and since that matches the glReadPixels format, decides it
can just do a memcpy.

Perhaps the pipe_surface should ignore the resource's format in this case, but
that's not how the current logic flows. In st_framebuffer_validate, it calls
u_surface_default_template which copies the format out of the given resource.
AFAIK having mismatches between surface format and config format is really bad
though, and not really supported. But I'm not a gbm API expert.

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are the QA Contact for the bug.

[-- Attachment #1.2: Type: text/html, Size: 3330 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug 109330] GL_ALPHA_BITS set to non-zero with EGL_PLATFORM_GBM_MESA
       [not found] ` <bug-109330-8800-V0hAGp6uBxMKqLRl/0Ahz6D7qz1kEfGD2LY78lusg7I@public.gmane.org/>
                     ` (4 preceding siblings ...)
  2019-01-21  0:30   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
@ 2019-01-22 13:15   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
  2019-01-22 13:19   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
  6 siblings, 0 replies; 8+ messages in thread
From: bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ @ 2019-01-22 13:15 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW


[-- Attachment #1.1: Type: text/plain, Size: 808 bytes --]

https://bugs.freedesktop.org/show_bug.cgi?id=109330

--- Comment #6 from Daniel Stone <daniel-rLtY4a/8tF1rovVCs/uTlw@public.gmane.org> ---
Yeah, I think it's reasonable. The render target is XRGB8888, and X really does
mean undefined, including 'throw content away on render' and 'invent fake
content on sample'.

I'd suggest allocating the gbm_surface as GBM_SURFACE_ARGB8888, then taking
those BOs and passing DRM_FORMAT_XRGB8888 to AddFB2. This is totally safe to
do, and will ensure that drivers preserve the alpha channel when you write out.

(I was going to say about matching EGL_NATIVE_VISUAL_ID as well given your
short example, but you already do that properly - nice!)

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are the QA Contact for the bug.

[-- Attachment #1.2: Type: text/html, Size: 1659 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug 109330] GL_ALPHA_BITS set to non-zero with EGL_PLATFORM_GBM_MESA
       [not found] ` <bug-109330-8800-V0hAGp6uBxMKqLRl/0Ahz6D7qz1kEfGD2LY78lusg7I@public.gmane.org/>
                     ` (5 preceding siblings ...)
  2019-01-22 13:15   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
@ 2019-01-22 13:19   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
  6 siblings, 0 replies; 8+ messages in thread
From: bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ @ 2019-01-22 13:19 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW


[-- Attachment #1.1: Type: text/plain, Size: 636 bytes --]

https://bugs.freedesktop.org/show_bug.cgi?id=109330

emersion <contact-sV0wSBM+kKVWj0EZb7rXcA@public.gmane.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |CLOSED

--- Comment #7 from emersion <contact-sV0wSBM+kKVWj0EZb7rXcA@public.gmane.org> ---
Thanks for the explanation, this makes sense. We'll fix this in wlroots.

Again, sorry for filling an invalid bug!

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.

[-- Attachment #1.2: Type: text/html, Size: 2004 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2019-01-22 13:19 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-12 13:59 [Bug 109330] New: GL_ALPHA_BITS set to non-zero with EGL_PLATFORM_GBM_MESA bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
     [not found] ` <bug-109330-8800-V0hAGp6uBxMKqLRl/0Ahz6D7qz1kEfGD2LY78lusg7I@public.gmane.org/>
2019-01-13  0:29   ` [Bug 109330] " bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
2019-01-13  2:30   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
2019-01-13  3:14   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
2019-01-13 16:17   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
2019-01-21  0:30   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
2019-01-22 13:15   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ
2019-01-22 13:19   ` bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.