llvmpipe: Support S3TC when util_format_s3tc_enabled is set.
This commit is contained in:
parent
728741a3bd
commit
fe130a7e5e
|
@ -28,6 +28,7 @@
|
||||||
|
|
||||||
#include "util/u_memory.h"
|
#include "util/u_memory.h"
|
||||||
#include "util/u_format.h"
|
#include "util/u_format.h"
|
||||||
|
#include "util/u_format_s3tc.h"
|
||||||
#include "pipe/p_defines.h"
|
#include "pipe/p_defines.h"
|
||||||
#include "pipe/p_screen.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_DXT1_RGBA:
|
||||||
case PIPE_FORMAT_DXT3_RGBA:
|
case PIPE_FORMAT_DXT3_RGBA:
|
||||||
case PIPE_FORMAT_DXT5_RGBA:
|
case PIPE_FORMAT_DXT5_RGBA:
|
||||||
return FALSE;
|
return util_format_s3tc_enabled;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(tex_usage & PIPE_TEXTURE_USAGE_RENDER_TARGET) {
|
||||||
|
if(format_desc->layout != UTIL_FORMAT_LAYOUT_PLAIN)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if(format_desc->block.width != 1 ||
|
if(format_desc->block.width != 1 ||
|
||||||
format_desc->block.height != 1)
|
format_desc->block.height != 1)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if(format_desc->layout != UTIL_FORMAT_LAYOUT_PLAIN)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if(tex_usage & PIPE_TEXTURE_USAGE_RENDER_TARGET) {
|
|
||||||
if(format_desc->colorspace != UTIL_FORMAT_COLORSPACE_RGB &&
|
if(format_desc->colorspace != UTIL_FORMAT_COLORSPACE_RGB &&
|
||||||
format_desc->colorspace != UTIL_FORMAT_COLORSPACE_SRGB)
|
format_desc->colorspace != UTIL_FORMAT_COLORSPACE_SRGB)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -220,17 +221,6 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen,
|
||||||
return FALSE;
|
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;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -297,6 +287,8 @@ llvmpipe_create_screen(struct sw_winsys *winsys)
|
||||||
screen->base.context_create = llvmpipe_create_context;
|
screen->base.context_create = llvmpipe_create_context;
|
||||||
screen->base.flush_frontbuffer = llvmpipe_flush_frontbuffer;
|
screen->base.flush_frontbuffer = llvmpipe_flush_frontbuffer;
|
||||||
|
|
||||||
|
util_format_s3tc_init();
|
||||||
|
|
||||||
llvmpipe_init_screen_texture_funcs(&screen->base);
|
llvmpipe_init_screen_texture_funcs(&screen->base);
|
||||||
llvmpipe_init_screen_buffer_funcs(&screen->base);
|
llvmpipe_init_screen_buffer_funcs(&screen->base);
|
||||||
llvmpipe_init_screen_fence_funcs(&screen->base);
|
llvmpipe_init_screen_fence_funcs(&screen->base);
|
||||||
|
|
Loading…
Reference in New Issue