summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/llvmpipe/lp_screen.c
diff options
context:
space:
mode:
authorJosé Fonseca <jfonseca@vmware.com>2010-04-06 22:49:57 +0100
committerJosé Fonseca <jfonseca@vmware.com>2010-04-06 22:52:33 +0100
commitfe130a7e5e3e7cc31e070d8088203706c687e6e8 (patch)
treee8483fcf9d34154ca8f324d1c49db7ba675a08b6 /src/gallium/drivers/llvmpipe/lp_screen.c
parent728741a3bd27a3aaab50393665d25776ad06fcb3 (diff)
llvmpipe: Support S3TC when util_format_s3tc_enabled is set.
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_screen.c')
-rw-r--r--src/gallium/drivers/llvmpipe/lp_screen.c28
1 files changed, 10 insertions, 18 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c
index 625d4092db..6999599558 100644
--- a/src/gallium/drivers/llvmpipe/lp_screen.c
+++ b/src/gallium/drivers/llvmpipe/lp_screen.c
@@ -28,6 +28,7 @@
#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"
@@ -186,19 +187,19 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen,
case PIPE_FORMAT_DXT1_RGBA:
case PIPE_FORMAT_DXT3_RGBA:
case PIPE_FORMAT_DXT5_RGBA:
- return FALSE;
+ return util_format_s3tc_enabled;
default:
break;
}
- if(format_desc->block.width != 1 ||
- format_desc->block.height != 1)
- return FALSE;
+ if(tex_usage & PIPE_TEXTURE_USAGE_RENDER_TARGET) {
+ if(format_desc->layout != UTIL_FORMAT_LAYOUT_PLAIN)
+ return FALSE;
- if(format_desc->layout != UTIL_FORMAT_LAYOUT_PLAIN)
- return FALSE;
+ if(format_desc->block.width != 1 ||
+ format_desc->block.height != 1)
+ return FALSE;
- if(tex_usage & PIPE_TEXTURE_USAGE_RENDER_TARGET) {
if(format_desc->colorspace != UTIL_FORMAT_COLORSPACE_RGB &&
format_desc->colorspace != UTIL_FORMAT_COLORSPACE_SRGB)
return FALSE;
@@ -220,17 +221,6 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen,
return FALSE;
}
- /* FIXME: Temporary restrictions. See lp_bld_sample_soa.c */
- if(tex_usage & PIPE_TEXTURE_USAGE_SAMPLER) {
- if(!format_desc->is_bitmask &&
- format != PIPE_FORMAT_R32_FLOAT)
- return FALSE;
-
- if(format_desc->colorspace != UTIL_FORMAT_COLORSPACE_RGB &&
- format_desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS)
- return FALSE;
- }
-
return TRUE;
}
@@ -297,6 +287,8 @@ llvmpipe_create_screen(struct sw_winsys *winsys)
screen->base.context_create = llvmpipe_create_context;
screen->base.flush_frontbuffer = llvmpipe_flush_frontbuffer;
+ util_format_s3tc_init();
+
llvmpipe_init_screen_texture_funcs(&screen->base);
llvmpipe_init_screen_buffer_funcs(&screen->base);
llvmpipe_init_screen_fence_funcs(&screen->base);