[Mesa-dev] [PATCH 1/2] gallium/st: Clean up Haiku depth mapping, fix colorspace errors
kallisti5
kallisti5 at ssl.unixzen.com
Sat Dec 27 17:58:55 PST 2014
On 2014-12-27 11:41, Ilia Mirkin wrote:
> On Sat, Dec 27, 2014 at 1:13 AM, Alexander von Gluck IV
> <kallisti5 at unixzen.com> wrote:
>> ---
>> src/gallium/state_trackers/hgl/hgl.c | 48
>> +++++++++++++--------------------
>> 1 files changed, 19 insertions(+), 29 deletions(-)
>>
>> diff --git a/src/gallium/state_trackers/hgl/hgl.c
>> b/src/gallium/state_trackers/hgl/hgl.c
>> index 4d7c479..0b30290 100644
>> --- a/src/gallium/state_trackers/hgl/hgl.c
>> +++ b/src/gallium/state_trackers/hgl/hgl.c
>> @@ -232,9 +232,10 @@ hgl_create_st_visual(ulong options)
>> const GLboolean alphaFlag = ((options & BGL_ALPHA) ==
>> BGL_ALPHA);
>> const GLboolean dblFlag = ((options & BGL_DOUBLE) ==
>> BGL_DOUBLE);
>> const GLboolean stereoFlag = false;
>> - const GLint depth = (options & BGL_DEPTH) ? 24 : 0;
>> - const GLint stencil = (options & BGL_STENCIL) ? 8 : 0;
>> - const GLint accum = (options & BGL_ACCUM) ? 16 : 0;
>> + const GLboolean depthFlag = ((options & BGL_DEPTH) ==
>> BGL_DEPTH);
>> + const GLboolean stencilFlag = ((options & BGL_STENCIL) ==
>> BGL_STENCIL);
>> + const GLboolean accumFlag = ((options & BGL_ACCUM) ==
>> BGL_ACCUM);
>> +
>> const GLint red = rgbFlag ? 8 : 5;
>> const GLint green = rgbFlag ? 8 : 5;
>> const GLint blue = rgbFlag ? 8 : 5;
>> @@ -244,9 +245,9 @@ hgl_create_st_visual(ulong options)
>> TRACE("alpha :\t%d\n", (bool)alphaFlag);
>> TRACE("dbl :\t%d\n", (bool)dblFlag);
>> TRACE("stereo :\t%d\n", (bool)stereoFlag);
>> - TRACE("depth :\t%d\n", depth);
>> - TRACE("stencil :\t%d\n", stencil);
>> - TRACE("accum :\t%d\n", accum);
>> + TRACE("depth :\t%d\n", (bool)depthFlag);
>> + TRACE("stencil :\t%d\n", (bool)stencilFlag);
>> + TRACE("accum :\t%d\n", (bool)accumFlag);
>> TRACE("red :\t%d\n", red);
>> TRACE("green :\t%d\n", green);
>> TRACE("blue :\t%d\n", blue);
>> @@ -254,34 +255,23 @@ hgl_create_st_visual(ulong options)
>>
>> // Determine color format
>> if (red == 8) {
>> + // Color format
>> if (alpha == 8)
>> - visual->color_format =
>> PIPE_FORMAT_A8R8G8B8_UNORM;
>> + visual->color_format =
>> PIPE_FORMAT_B8G8R8A8_UNORM;
>> else
>> - visual->color_format =
>> PIPE_FORMAT_X8R8G8B8_UNORM;
>> + visual->color_format =
>> PIPE_FORMAT_B8G8R8X8_UNORM;
>> +
>> + // Depth buffer
>> + if (depthFlag)
>> + visual->depth_stencil_format =
>> PIPE_FORMAT_Z32_UNORM;
>
> I guess you only work with llvmpipe which supports whatever, but I
> don't think a lot of hw drivers support Z32_UNORM. Z24 is much more
> common. Some hardware also supports Z16 and Z32_FLOAT (and
> Z32_FLOAT_S8X24_UNORM for depth/stencil combined version).
Thanks :-). If Z24 is a lot more common i'll go with that one for now.
I'm interested to see if we could figure out something with dri3 and C++
in Haiku
for hardware support, but that seems pretty far off.
> Further you appear to have dropped the stencil format here entirely.
> If that's expected, perhaps get rid of the stencilFlag above?
Yeah, I mostly left it there in-case we wanted to set something based on
it
in the future, that BGL_STENCIL may not be obvious to non-Haiku people
:-)
Here are the list of flags our OpenGL Kit accepts for new GL contexts:
BGL_RGB Use RGB graphics instead of indexed color (8-bit). This
is the default if beither BGL_RGB nor BGL_INDEX is specified.
BGL_INDEX Use indexed color (8-bit graphics). Not currently supported.
BGL_SINGLE Use single-buffering; all rendering is done directly to the
display. This is not currently supported by the BeOS implementation of
OpenGL. This is the default
BGL_DOUBLE Use double-buffered graphics. All rendering is done to an
off-screen buffer and only becomes visible when the SwapBuffers()
function is called.
BGL_ACCUM Requests that the view have an accumulation buffer.
BGL_ALPHA Requests that the view's color buffer include an alpha
component.
BGL_DEPTH Requests that the view have a depth buffer.
BGL_STENCIL Requests that the view have a stencil buffer.
Right now i'm trying to get rid of the last of the _mesa_* calls from
the gallium target
as they're cheating a bit.
-- Alex
More information about the mesa-dev
mailing list