summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/softpipe
diff options
context:
space:
mode:
authorJosé Fonseca <[email protected]>2010-04-03 00:51:19 +0100
committerJosé Fonseca <[email protected]>2010-04-03 00:51:19 +0100
commit47e61426586bb9f9f40950e9c4372e4f12bb9ed6 (patch)
tree2387c7c4af139a3a151d52c7d177ab7c739a7cca /src/gallium/drivers/softpipe
parentdd194b6932c9b7bbb87b34b501254ec83d82ba49 (diff)
util: Revert unsolicited, untested, unreviewed, and broken changes to format support.
Not all is bad, but I'm afraid I'll have to throw the baby with the water given they are all tied to together.
Diffstat (limited to 'src/gallium/drivers/softpipe')
-rw-r--r--src/gallium/drivers/softpipe/sp_screen.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c
index ddc53b336fb..be64048abfc 100644
--- a/src/gallium/drivers/softpipe/sp_screen.c
+++ b/src/gallium/drivers/softpipe/sp_screen.c
@@ -27,7 +27,6 @@
#include "util/u_memory.h"
-#include "util/u_format.h"
#include "util/u_format_s3tc.h"
#include "pipe/p_defines.h"
#include "pipe/p_screen.h"
@@ -156,9 +155,25 @@ softpipe_is_format_supported( struct pipe_screen *screen,
target == PIPE_TEXTURE_3D ||
target == PIPE_TEXTURE_CUBE);
- if(!util_format_is_supported(format))
+ switch(format) {
+ case PIPE_FORMAT_YUYV:
+ case PIPE_FORMAT_UYVY:
return FALSE;
+ case PIPE_FORMAT_DXT1_RGB:
+ case PIPE_FORMAT_DXT1_RGBA:
+ case PIPE_FORMAT_DXT3_RGBA:
+ case PIPE_FORMAT_DXT5_RGBA:
+ return util_format_s3tc_enabled;
+
+ case PIPE_FORMAT_Z32_FLOAT:
+ case PIPE_FORMAT_NONE:
+ return FALSE;
+
+ default:
+ break;
+ }
+
if(tex_usage & (PIPE_TEXTURE_USAGE_DISPLAY_TARGET |
PIPE_TEXTURE_USAGE_SCANOUT |
PIPE_TEXTURE_USAGE_SHARED)) {
@@ -166,6 +181,8 @@ softpipe_is_format_supported( struct pipe_screen *screen,
return FALSE;
}
+ /* XXX: this is often a lie. Pull in logic from llvmpipe to fix.
+ */
return TRUE;
}
@@ -224,6 +241,8 @@ softpipe_create_screen(struct sw_winsys *winsys)
screen->base.context_create = softpipe_create_context;
screen->base.flush_frontbuffer = softpipe_flush_frontbuffer;
+ util_format_s3tc_init();
+
softpipe_init_screen_texture_funcs(&screen->base);
softpipe_init_screen_buffer_funcs(&screen->base);
softpipe_init_screen_fence_funcs(&screen->base);