diff options
author | Chia-I Wu <[email protected]> | 2010-03-12 11:20:27 +0800 |
---|---|---|
committer | Chia-I Wu <[email protected]> | 2010-03-12 11:20:57 +0800 |
commit | 3475e88442c16fb2b50b903fe246b3ebe49da226 (patch) | |
tree | f0ea9f3f51f0380eee5424ef2e5d1958dd7e889b | |
parent | 72ed7eb15a12ad88647dddefde5999ddd308b9e4 (diff) |
st/glx: Return a better format in choose_depth_stencil_format.
Return a better format instead of an exact format in
choose_depth_stencil_format. Also, prefer formats with stencil bits.
-rw-r--r-- | src/gallium/state_trackers/glx/xlib/xm_api.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c index 6a0f3146dbf..3ea4d77805f 100644 --- a/src/gallium/state_trackers/glx/xlib/xm_api.c +++ b/src/gallium/state_trackers/glx/xlib/xm_api.c @@ -274,7 +274,8 @@ choose_pixel_format(XMesaVisual v) } /** - * Choose a depth/stencil format for the given depth and stencil sizes. + * Choose a depth/stencil format that is "better" than the given depth and + * stencil sizes. */ static enum pipe_format choose_depth_stencil_format(int depth, int stencil) @@ -289,21 +290,16 @@ choose_depth_stencil_format(int depth, int stencil) assert(screen); count = 0; - switch (depth) { - case 16: - if (!stencil) - formats[count++] = PIPE_FORMAT_Z16_UNORM; - break; - case 24: + if (depth <= 24 && stencil <= 8) { formats[count++] = PIPE_FORMAT_S8Z24_UNORM; formats[count++] = PIPE_FORMAT_Z24S8_UNORM; - break; - case 32: - if (!stencil) + } + + if (!stencil) { + if (depth <= 16) + formats[count++] = PIPE_FORMAT_Z16_UNORM; + if (depth <= 32) formats[count++] = PIPE_FORMAT_Z32_UNORM; - break; - default: - break; } fmt = PIPE_FORMAT_NONE; |