Module: Mesa Branch: master Commit: 66d95919d55098b96281e5144b6839627ad3d053 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=66d95919d55098b96281e5144b6839627ad3d053
Author: Brian Paul <[email protected]> Date: Wed Apr 27 09:06:07 2011 -0600 st/mesa: choose 3-component float formats before 4-component formats If GL_RGB16F or GL_RGB32F is specified let's try the 3-component float texture formats before trying the 4-component ones. Before this, GL_RGB16/32F were treated the same as GL_RGBA16/32F. Reviewed-by: Marek Olšák <[email protected]> --- src/mesa/state_tracker/st_format.c | 23 +++++++++++++++++++++-- 1 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index 8e50dbd..4e7bef2 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -954,14 +954,24 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat, /* prefer formats in order of data size, choosing 16-bit ones if equal sized */ case GL_RGBA16F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } case GL_RGB16F_ARB: { static const enum pipe_format formats[] = { + PIPE_FORMAT_R16G16B16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_R32G32B32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT }; return find_supported_format(screen, formats, Elements(formats), - target, sample_count, bindings); + target, sample_count, bindings); } case GL_LUMINANCE_ALPHA16F_ARB: { @@ -1040,14 +1050,23 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat, /* try a 32-bit format if available, otherwise fallback to a 16-bit one */ case GL_RGBA32F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } case GL_RGB32F_ARB: { static const enum pipe_format formats[] = { + PIPE_FORMAT_R32G32B32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT }; return find_supported_format(screen, formats, Elements(formats), - target, sample_count, bindings); + target, sample_count, bindings); } case GL_LUMINANCE_ALPHA32F_ARB: { _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
