diff options
author | José Fonseca <jfonseca@vmware.com> | 2011-04-27 12:02:08 +0100 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2011-09-23 07:58:47 -0600 |
commit | 974b6413f4540d73c21c092cc0a62abb6d546e21 (patch) | |
tree | 6495d855498199c6fbdd61591bc6ec8b02d550e3 /src/gallium/drivers/svga/svga_resource_texture.c | |
parent | ffeed5da6e568836867f09f1acb7ce660d091d4a (diff) | |
download | external_mesa3d-974b6413f4540d73c21c092cc0a62abb6d546e21.zip external_mesa3d-974b6413f4540d73c21c092cc0a62abb6d546e21.tar.gz external_mesa3d-974b6413f4540d73c21c092cc0a62abb6d546e21.tar.bz2 |
svga: Cleanup format capability checking.
Accurately describe what operations are supported when a format caps
entry is not advertised by the host, and which formats are never
supported, instead of making ad-hoc and often incorrect assumptions.
Diffstat (limited to 'src/gallium/drivers/svga/svga_resource_texture.c')
-rw-r--r-- | src/gallium/drivers/svga/svga_resource_texture.c | 84 |
1 files changed, 1 insertions, 83 deletions
diff --git a/src/gallium/drivers/svga/svga_resource_texture.c b/src/gallium/drivers/svga/svga_resource_texture.c index 8297f83..c8cb4f9 100644 --- a/src/gallium/drivers/svga/svga_resource_texture.c +++ b/src/gallium/drivers/svga/svga_resource_texture.c @@ -33,6 +33,7 @@ #include "util/u_math.h" #include "util/u_memory.h" +#include "svga_format.h" #include "svga_screen.h" #include "svga_context.h" #include "svga_resource_texture.h" @@ -48,89 +49,6 @@ #define SVGA3D_SURFACE_HINT_SCANOUT (1 << 9) -/* - * Helper function and arrays - */ - -SVGA3dSurfaceFormat -svga_translate_format(struct svga_screen *ss, - enum pipe_format format, - unsigned bind) -{ - switch(format) { - - case PIPE_FORMAT_B8G8R8A8_UNORM: - return SVGA3D_A8R8G8B8; - case PIPE_FORMAT_B8G8R8X8_UNORM: - return SVGA3D_X8R8G8B8; - - /* Required for GL2.1: - */ - case PIPE_FORMAT_B8G8R8A8_SRGB: - return SVGA3D_A8R8G8B8; - - case PIPE_FORMAT_B5G6R5_UNORM: - return SVGA3D_R5G6B5; - case PIPE_FORMAT_B5G5R5A1_UNORM: - return SVGA3D_A1R5G5B5; - case PIPE_FORMAT_B4G4R4A4_UNORM: - return SVGA3D_A4R4G4B4; - - - /* XXX: Doesn't seem to work properly. - case PIPE_FORMAT_Z32_UNORM: - return SVGA3D_Z_D32; - */ - case PIPE_FORMAT_Z16_UNORM: - return bind & PIPE_BIND_SAMPLER_VIEW ? ss->depth.z16 : SVGA3D_Z_D16; - case PIPE_FORMAT_S8_USCALED_Z24_UNORM: - return bind & PIPE_BIND_SAMPLER_VIEW ? ss->depth.s8z24 : SVGA3D_Z_D24S8; - case PIPE_FORMAT_X8Z24_UNORM: - return bind & PIPE_BIND_SAMPLER_VIEW ? ss->depth.x8z24 : SVGA3D_Z_D24X8; - - case PIPE_FORMAT_A8_UNORM: - return SVGA3D_ALPHA8; - case PIPE_FORMAT_L8_UNORM: - return SVGA3D_LUMINANCE8; - - case PIPE_FORMAT_DXT1_RGB: - case PIPE_FORMAT_DXT1_RGBA: - return SVGA3D_DXT1; - case PIPE_FORMAT_DXT3_RGBA: - return SVGA3D_DXT3; - case PIPE_FORMAT_DXT5_RGBA: - return SVGA3D_DXT5; - - default: - return SVGA3D_FORMAT_INVALID; - } -} - - -SVGA3dSurfaceFormat -svga_translate_format_render(struct svga_screen *ss, - enum pipe_format format, - unsigned bind) -{ - switch(format) { - case PIPE_FORMAT_B8G8R8A8_UNORM: - case PIPE_FORMAT_B8G8R8X8_UNORM: - case PIPE_FORMAT_B5G5R5A1_UNORM: - case PIPE_FORMAT_B4G4R4A4_UNORM: - case PIPE_FORMAT_B5G6R5_UNORM: - case PIPE_FORMAT_S8_USCALED_Z24_UNORM: - case PIPE_FORMAT_X8Z24_UNORM: - case PIPE_FORMAT_Z32_UNORM: - case PIPE_FORMAT_Z16_UNORM: - case PIPE_FORMAT_L8_UNORM: - return svga_translate_format(ss, format, bind); - - default: - return SVGA3D_FORMAT_INVALID; - } -} - - static INLINE void svga_transfer_dma_band(struct svga_context *svga, struct svga_transfer *st, |