[Mesa-dev] Depthbuffer gl_FragDepth / glReadPixels on VMWare
stefanb at starnberg-mail.de
stefanb at starnberg-mail.de
Wed Jan 26 02:25:27 PST 2011
Hi Jose,
thanks for the info, i got it working now:
- Instead of reading depth I just render 256 greylevel quads and
readback the color buffer (performance is not an issue here,
I just need an image that tells me that the depth buffer is ok)
- The GLSL depth-write shader doesn't work when the texture format
is DEPTH_COMPONENT. I've changed it to LUMINANCE16 when running
on Mesa/VMWare.
Again, thanks for the help.
Stefan
Zitat von José Fonseca <jfonseca at vmware.com>:
> D3D9 API limits the blits to/from depth-stencil buffers as well. The API
> is pretty much designed to ensure that depth-stencil buffers stay in
> VRAM (probably in a hardware specific layout) and never get out of
> there.
>
> Several vendors allow binding the depth buffer as a texture, but they
> implicitly do shadow mapping. It might be possible to read the depth
> values with certain non-standard depth formats supported by major
> vendors. Reading the stencil buffer is pretty much impossible AFAICT.
>
> Jose
>
> On Tue, 2011-01-25 at 06:04 -0800, stefanb at starnberg-mail.de wrote:
>> Hi Jose,
>>
>> thanks for the quick reply: I'm using Win7 for both, guest (32bit)
>> and host (64bit).
>>
>> I do the depth buffer reads only for debugging / regression testing.
>> Would a copy depth-to-texture and shader blit to the color channels
>> work ? Reading the color back buffer via glReadPixels is ok.
>>
>> Regards,
>>
>> Stefan
>>
>>
>> Zitat von José Fonseca <jfonseca at vmware.com>:
>>
>> > On Tue, 2011-01-25 at 01:13 -0800, stefanb at starnberg-mail.de wrote:
>> >> Hi,
>> >>
>> >> i'm trying to get one of our testsuites running in VMWare
>> >> (VMware, Inc. Gallium 0.3 on SVGA3D; build: RELEASE; OGL 2.1 Mesa
>> >> 7.7.1-DEVEL).
>> >> With the GDI backend everything works fine (tested in 7.7,7.8,7.10).
>> >>
>> >> I have a glsl shader that writes depth like
>> >>
>> >> void main()
>> >> {
>> >> vec4 v = texure2D(tex,gl_TexCoord[0].st);
>> >>
>> >> gl_FragColor = vec4(0,0,0,0);
>> >> gl_FragDepth = v.x;
>> >> }
>> >>
>> >> which doesn't work when running in VMWare's Mesa.
>> >>
>> >> Even a simple clear and readback of the depth buffer doesn't work, like:
>> >> glClearDepth(0.6f);
>> >> glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
>> >> glReadPixels(0,0,m_Dim[0], m_Dim[1], GL_DEPTH_STENCIL_EXT,
>> >> GL_UNSIGNED_INT_24_8_EXT, tmpBufferInt);
>> >> or
>> >> glReadPixels(0,0,m_Dim[0], m_Dim[1], GL_DEPTH_COMPONENT, GL_FLOAT,
>> >> tmpBuffer);
>> >>
>> >> Both reads return all zeros.
>> >>
>> >> I don't know if VMWare's Mesa is a different branch and if this
>> is the right
>> >> place to report those bugs (if it is a bug)
>> >>
>> >> Stefan
>> >
>> > Stefan,
>> >
>> > What guest OS and host OS are you using?
>> >
>> > We can only comment here on the open sourced Linux OpenGL guest drivers.
>> >
>> > The typical procedure is to file a SR through
>> > http://www.vmware.com/support/contacts/ , which ensures the issue will
>> > be included in our internal bug database, and then triage and addressed
>> > in an eventual release.
>> >
>> > That said, I can advance that reading the depth-stencil buffer currently
>> > doesn't work on Windows hosts due to limitations that D3D9 API imposes
>> > on locking depth-stencil buffers. But it should work on Linux/MacOSX
>> > hosts.
>> >
>> > Jose
>> >
>> >
>> >
>>
>>
>
>
>
>
More information about the mesa-dev
mailing list