gallium: remove the geom_flags param from is_format_supported

This commit is contained in:
Marek Olšák 2011-03-08 00:01:58 +01:00
parent bfe88e6998
commit e968975cb5
50 changed files with 208 additions and 283 deletions

View file

@ -464,11 +464,11 @@ util_blit_pixels_writemask(struct blit_state *ctx,
assert(screen->is_format_supported(screen, sampler_view->format, ctx->internal_target, assert(screen->is_format_supported(screen, sampler_view->format, ctx->internal_target,
sampler_view->texture->nr_samples, sampler_view->texture->nr_samples,
PIPE_BIND_SAMPLER_VIEW, 0)); PIPE_BIND_SAMPLER_VIEW));
assert(screen->is_format_supported(screen, dst->format, ctx->internal_target, assert(screen->is_format_supported(screen, dst->format, ctx->internal_target,
dst->texture->nr_samples, dst->texture->nr_samples,
dst_is_depth ? PIPE_BIND_DEPTH_STENCIL : dst_is_depth ? PIPE_BIND_DEPTH_STENCIL :
PIPE_BIND_RENDER_TARGET, 0)); PIPE_BIND_RENDER_TARGET));
/* save state (restored below) */ /* save state (restored below) */
cso_save_blend(ctx->cso); cso_save_blend(ctx->cso);
cso_save_depth_stencil_alpha(ctx->cso); cso_save_depth_stencil_alpha(ctx->cso);
@ -660,8 +660,7 @@ util_blit_pixels_tex(struct blit_state *ctx,
assert(ctx->pipe->screen->is_format_supported(ctx->pipe->screen, dst->format, assert(ctx->pipe->screen->is_format_supported(ctx->pipe->screen, dst->format,
PIPE_TEXTURE_2D, PIPE_TEXTURE_2D,
dst->texture->nr_samples, dst->texture->nr_samples,
PIPE_BIND_RENDER_TARGET, PIPE_BIND_RENDER_TARGET));
0));
/* save state (restored below) */ /* save state (restored below) */
cso_save_blend(ctx->cso); cso_save_blend(ctx->cso);

View file

@ -772,9 +772,9 @@ void util_blitter_copy_region(struct blitter_context *blitter,
/* (assuming copying a stencil buffer is not possible) */ /* (assuming copying a stencil buffer is not possible) */
if ((!ignore_stencil && is_stencil) || if ((!ignore_stencil && is_stencil) ||
!screen->is_format_supported(screen, dst->format, dst->target, !screen->is_format_supported(screen, dst->format, dst->target,
dst->nr_samples, bind, 0) || dst->nr_samples, bind) ||
!screen->is_format_supported(screen, src->format, src->target, !screen->is_format_supported(screen, src->format, src->target,
src->nr_samples, PIPE_BIND_SAMPLER_VIEW, 0)) { src->nr_samples, PIPE_BIND_SAMPLER_VIEW)) {
ctx->base.running = TRUE; ctx->base.running = TRUE;
util_resource_copy_region(pipe, dst, dstlevel, dstx, dsty, dstz, util_resource_copy_region(pipe, dst, dstlevel, dstx, dsty, dstz,
src, srclevel, srcbox); src, srclevel, srcbox);

View file

@ -69,8 +69,7 @@ util_check_caps_out(struct pipe_screen *screen, const unsigned *list, int *out)
list[i++], list[i++],
PIPE_TEXTURE_2D, PIPE_TEXTURE_2D,
0, 0,
PIPE_BIND_SAMPLER_VIEW, PIPE_BIND_SAMPLER_VIEW)) {
0)) {
*out = i - 2; *out = i - 2;
return FALSE; return FALSE;
} }

View file

@ -1539,7 +1539,7 @@ util_gen_mipmap(struct gen_mipmap_state *ctx,
/* check if we can render in the texture's format */ /* check if we can render in the texture's format */
if (!screen->is_format_supported(screen, psv->format, pt->target, if (!screen->is_format_supported(screen, psv->format, pt->target,
pt->nr_samples, PIPE_BIND_RENDER_TARGET, 0)) { pt->nr_samples, PIPE_BIND_RENDER_TARGET)) {
fallback_gen_mipmap(ctx, pt, face, baseLevel, lastLevel); fallback_gen_mipmap(ctx, pt, face, baseLevel, lastLevel);
return; return;
} }

View file

@ -84,7 +84,7 @@ util_create_rgba_surface(struct pipe_context *pipe,
/* Choose surface format */ /* Choose surface format */
for (i = 0; rgbaFormats[i]; i++) { for (i = 0; rgbaFormats[i]; i++) {
if (screen->is_format_supported(screen, rgbaFormats[i], if (screen->is_format_supported(screen, rgbaFormats[i],
target, 0, bind, 0)) { target, 0, bind)) {
format = rgbaFormats[i]; format = rgbaFormats[i];
break; break;
} }

View file

@ -87,27 +87,27 @@ static void u_vbuf_mgr_init_format_caps(struct u_vbuf_mgr_priv *mgr)
mgr->caps.format_fixed32 = mgr->caps.format_fixed32 =
screen->is_format_supported(screen, PIPE_FORMAT_R32_FIXED, PIPE_BUFFER, screen->is_format_supported(screen, PIPE_FORMAT_R32_FIXED, PIPE_BUFFER,
0, PIPE_BIND_VERTEX_BUFFER, 0); 0, PIPE_BIND_VERTEX_BUFFER);
mgr->caps.format_float16 = mgr->caps.format_float16 =
screen->is_format_supported(screen, PIPE_FORMAT_R16_FLOAT, PIPE_BUFFER, screen->is_format_supported(screen, PIPE_FORMAT_R16_FLOAT, PIPE_BUFFER,
0, PIPE_BIND_VERTEX_BUFFER, 0); 0, PIPE_BIND_VERTEX_BUFFER);
mgr->caps.format_float64 = mgr->caps.format_float64 =
screen->is_format_supported(screen, PIPE_FORMAT_R64_FLOAT, PIPE_BUFFER, screen->is_format_supported(screen, PIPE_FORMAT_R64_FLOAT, PIPE_BUFFER,
0, PIPE_BIND_VERTEX_BUFFER, 0); 0, PIPE_BIND_VERTEX_BUFFER);
mgr->caps.format_norm32 = mgr->caps.format_norm32 =
screen->is_format_supported(screen, PIPE_FORMAT_R32_UNORM, PIPE_BUFFER, screen->is_format_supported(screen, PIPE_FORMAT_R32_UNORM, PIPE_BUFFER,
0, PIPE_BIND_VERTEX_BUFFER, 0) && 0, PIPE_BIND_VERTEX_BUFFER) &&
screen->is_format_supported(screen, PIPE_FORMAT_R32_SNORM, PIPE_BUFFER, screen->is_format_supported(screen, PIPE_FORMAT_R32_SNORM, PIPE_BUFFER,
0, PIPE_BIND_VERTEX_BUFFER, 0); 0, PIPE_BIND_VERTEX_BUFFER);
mgr->caps.format_scaled32 = mgr->caps.format_scaled32 =
screen->is_format_supported(screen, PIPE_FORMAT_R32_USCALED, PIPE_BUFFER, screen->is_format_supported(screen, PIPE_FORMAT_R32_USCALED, PIPE_BUFFER,
0, PIPE_BIND_VERTEX_BUFFER, 0) && 0, PIPE_BIND_VERTEX_BUFFER) &&
screen->is_format_supported(screen, PIPE_FORMAT_R32_SSCALED, PIPE_BUFFER, screen->is_format_supported(screen, PIPE_FORMAT_R32_SSCALED, PIPE_BUFFER,
0, PIPE_BIND_VERTEX_BUFFER, 0); 0, PIPE_BIND_VERTEX_BUFFER);
} }
struct u_vbuf_mgr * struct u_vbuf_mgr *

View file

@ -149,8 +149,7 @@ cell_is_format_supported( struct pipe_screen *screen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned tex_usage, unsigned tex_usage)
unsigned geom_flags )
{ {
struct sw_winsys *winsys = cell_screen(screen)->winsys; struct sw_winsys *winsys = cell_screen(screen)->winsys;

View file

@ -106,8 +106,7 @@ galahad_screen_is_format_supported(struct pipe_screen *_screen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned tex_usage, unsigned tex_usage)
unsigned geom_flags)
{ {
struct galahad_screen *glhd_screen = galahad_screen(_screen); struct galahad_screen *glhd_screen = galahad_screen(_screen);
struct pipe_screen *screen = glhd_screen->screen; struct pipe_screen *screen = glhd_screen->screen;
@ -120,8 +119,7 @@ galahad_screen_is_format_supported(struct pipe_screen *_screen,
format, format,
target, target,
sample_count, sample_count,
tex_usage, tex_usage);
geom_flags);
} }
static struct pipe_context * static struct pipe_context *

View file

@ -250,8 +250,7 @@ i915_is_format_supported(struct pipe_screen *screen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned tex_usage, unsigned tex_usage)
unsigned geom_flags)
{ {
static const enum pipe_format tex_supported[] = { static const enum pipe_format tex_supported[] = {
PIPE_FORMAT_B8G8R8A8_UNORM, PIPE_FORMAT_B8G8R8A8_UNORM,

View file

@ -278,8 +278,7 @@ brw_is_format_supported(struct pipe_screen *screen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned tex_usage, unsigned tex_usage)
unsigned geom_flags)
{ {
static const enum pipe_format tex_supported[] = { static const enum pipe_format tex_supported[] = {
PIPE_FORMAT_L8_UNORM, PIPE_FORMAT_L8_UNORM,

View file

@ -103,8 +103,7 @@ identity_screen_is_format_supported(struct pipe_screen *_screen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned tex_usage, unsigned tex_usage)
unsigned geom_flags)
{ {
struct identity_screen *id_screen = identity_screen(_screen); struct identity_screen *id_screen = identity_screen(_screen);
struct pipe_screen *screen = id_screen->screen; struct pipe_screen *screen = id_screen->screen;
@ -113,8 +112,7 @@ identity_screen_is_format_supported(struct pipe_screen *_screen,
format, format,
target, target,
sample_count, sample_count,
tex_usage, tex_usage);
geom_flags);
} }
static struct pipe_context * static struct pipe_context *

View file

@ -225,8 +225,7 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned bind, unsigned bind)
unsigned geom_flags )
{ {
struct llvmpipe_screen *screen = llvmpipe_screen(_screen); struct llvmpipe_screen *screen = llvmpipe_screen(_screen);
struct sw_winsys *winsys = screen->winsys; struct sw_winsys *winsys = screen->winsys;

View file

@ -445,8 +445,7 @@ static boolean noop_is_format_supported(struct pipe_screen* screen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned usage, unsigned usage)
unsigned geom_flags)
{ {
return true; return true;
} }

View file

@ -40,7 +40,7 @@ nv50_screen_is_format_supported(struct pipe_screen *pscreen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned bindings, unsigned geom_flags) unsigned bindings)
{ {
if (sample_count > 1) if (sample_count > 1)
return FALSE; return FALSE;

View file

@ -34,7 +34,7 @@ nvc0_screen_is_format_supported(struct pipe_screen *pscreen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned bindings, unsigned geom_flags) unsigned bindings)
{ {
if (sample_count > 1) if (sample_count > 1)
return FALSE; return FALSE;

View file

@ -138,11 +138,11 @@ nvfx_miptree_create_skeleton(struct pipe_screen *pscreen, const struct pipe_reso
// on our current driver (and the driver too), format support does not depend on geometry, so don't bother computing it // on our current driver (and the driver too), format support does not depend on geometry, so don't bother computing it
// TODO: may want to revisit this // TODO: may want to revisit this
if(!pscreen->is_format_supported(pscreen, pt->format, pt->target, 0, PIPE_BIND_RENDER_TARGET, 0)) if(!pscreen->is_format_supported(pscreen, pt->format, pt->target, 0, PIPE_BIND_RENDER_TARGET))
mt->base.base.bind &=~ PIPE_BIND_RENDER_TARGET; mt->base.base.bind &=~ PIPE_BIND_RENDER_TARGET;
if(!pscreen->is_format_supported(pscreen, pt->format, pt->target, 0, PIPE_BIND_SAMPLER_VIEW, 0)) if(!pscreen->is_format_supported(pscreen, pt->format, pt->target, 0, PIPE_BIND_SAMPLER_VIEW))
mt->base.base.bind &=~ PIPE_BIND_SAMPLER_VIEW; mt->base.base.bind &=~ PIPE_BIND_SAMPLER_VIEW;
if(!pscreen->is_format_supported(pscreen, pt->format, pt->target, 0, PIPE_BIND_DEPTH_STENCIL, 0)) if(!pscreen->is_format_supported(pscreen, pt->format, pt->target, 0, PIPE_BIND_DEPTH_STENCIL))
mt->base.base.bind &=~ PIPE_BIND_DEPTH_STENCIL; mt->base.base.bind &=~ PIPE_BIND_DEPTH_STENCIL;
return mt; return mt;

View file

@ -202,7 +202,7 @@ nvfx_screen_is_format_supported(struct pipe_screen *pscreen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned bind, unsigned geom_flags) unsigned bind)
{ {
struct nvfx_screen *screen = nvfx_screen(pscreen); struct nvfx_screen *screen = nvfx_screen(pscreen);

View file

@ -447,11 +447,11 @@ static void r300_resource_copy_region(struct pipe_context *pipe,
!pipe->screen->is_format_supported(pipe->screen, !pipe->screen->is_format_supported(pipe->screen,
src->format, src->target, src->format, src->target,
src->nr_samples, src->nr_samples,
PIPE_BIND_SAMPLER_VIEW, 0) || PIPE_BIND_SAMPLER_VIEW) ||
!pipe->screen->is_format_supported(pipe->screen, !pipe->screen->is_format_supported(pipe->screen,
dst->format, dst->target, dst->format, dst->target,
dst->nr_samples, dst->nr_samples,
PIPE_BIND_RENDER_TARGET, 0))) { PIPE_BIND_RENDER_TARGET))) {
switch (util_format_get_blocksize(old_dst.format)) { switch (util_format_get_blocksize(old_dst.format)) {
case 1: case 1:
new_dst.format = PIPE_FORMAT_I8_UNORM; new_dst.format = PIPE_FORMAT_I8_UNORM;

View file

@ -306,8 +306,7 @@ static boolean r300_is_format_supported(struct pipe_screen* screen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned usage, unsigned usage)
unsigned geom_flags)
{ {
struct r300_winsys_screen *rws = r300_screen(screen)->rws; struct r300_winsys_screen *rws = r300_screen(screen)->rws;
uint32_t retval = 0; uint32_t retval = 0;

View file

@ -417,8 +417,7 @@ static boolean r600_is_format_supported(struct pipe_screen* screen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned usage, unsigned usage)
unsigned geom_flags)
{ {
unsigned retval = 0; unsigned retval = 0;
if (target >= PIPE_MAX_TEXTURE_TYPES) { if (target >= PIPE_MAX_TEXTURE_TYPES) {

View file

@ -299,14 +299,14 @@ static boolean permit_hardware_blit(struct pipe_screen *screen,
res->format, res->format,
res->target, res->target,
res->nr_samples, res->nr_samples,
bind, 0)) bind))
return FALSE; return FALSE;
if (!screen->is_format_supported(screen, if (!screen->is_format_supported(screen,
res->format, res->format,
res->target, res->target,
res->nr_samples, res->nr_samples,
PIPE_BIND_SAMPLER_VIEW, 0)) PIPE_BIND_SAMPLER_VIEW))
return FALSE; return FALSE;
return TRUE; return TRUE;

View file

@ -106,8 +106,7 @@ rbug_screen_is_format_supported(struct pipe_screen *_screen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned tex_usage, unsigned tex_usage)
unsigned geom_flags)
{ {
struct rbug_screen *rb_screen = rbug_screen(_screen); struct rbug_screen *rb_screen = rbug_screen(_screen);
struct pipe_screen *screen = rb_screen->screen; struct pipe_screen *screen = rb_screen->screen;
@ -116,8 +115,7 @@ rbug_screen_is_format_supported(struct pipe_screen *_screen,
format, format,
target, target,
sample_count, sample_count,
tex_usage, tex_usage);
geom_flags);
} }
static struct pipe_context * static struct pipe_context *

View file

@ -180,8 +180,7 @@ softpipe_is_format_supported( struct pipe_screen *screen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned bind, unsigned bind)
unsigned geom_flags )
{ {
struct sw_winsys *winsys = softpipe_screen(screen)->winsys; struct sw_winsys *winsys = softpipe_screen(screen)->winsys;
const struct util_format_description *format_desc; const struct util_format_description *format_desc;

View file

@ -342,8 +342,7 @@ svga_is_format_supported( struct pipe_screen *screen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned tex_usage, unsigned tex_usage)
unsigned geom_flags )
{ {
struct svga_winsys_screen *sws = svga_screen(screen)->sws; struct svga_winsys_screen *sws = svga_screen(screen)->sws;
SVGA3dDevCapIndex index; SVGA3dDevCapIndex index;

View file

@ -158,8 +158,7 @@ trace_screen_is_format_supported(struct pipe_screen *_screen,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned tex_usage, unsigned tex_usage)
unsigned geom_flags)
{ {
struct trace_screen *tr_scr = trace_screen(_screen); struct trace_screen *tr_scr = trace_screen(_screen);
struct pipe_screen *screen = tr_scr->screen; struct pipe_screen *screen = tr_scr->screen;
@ -172,10 +171,9 @@ trace_screen_is_format_supported(struct pipe_screen *_screen,
trace_dump_arg(int, target); trace_dump_arg(int, target);
trace_dump_arg(uint, sample_count); trace_dump_arg(uint, sample_count);
trace_dump_arg(uint, tex_usage); trace_dump_arg(uint, tex_usage);
trace_dump_arg(uint, geom_flags);
result = screen->is_format_supported(screen, format, target, sample_count, result = screen->is_format_supported(screen, format, target, sample_count,
tex_usage, geom_flags); tex_usage);
trace_dump_ret(bool, result); trace_dump_ret(bool, result);

View file

@ -337,16 +337,6 @@ enum pipe_transfer_usage {
#define PIPE_USAGE_STAGING 5 /* supports data transfers from the GPU to the CPU */ #define PIPE_USAGE_STAGING 5 /* supports data transfers from the GPU to the CPU */
/* These are intended to be used in calls to is_format_supported, but
* no driver actually uses these flags, and only the glx/xlib state
* tracker issues them.
*
* Deprecate?
*/
#define PIPE_TEXTURE_GEOM_NON_SQUARE 0x1
#define PIPE_TEXTURE_GEOM_NON_POWER_OF_TWO 0x2
/** /**
* Flush types: * Flush types:
*/ */

View file

@ -99,14 +99,12 @@ struct pipe_screen {
* Check if the given pipe_format is supported as a texture or * Check if the given pipe_format is supported as a texture or
* drawing surface. * drawing surface.
* \param bindings bitmask of PIPE_BIND_* * \param bindings bitmask of PIPE_BIND_*
* \param geom_flags bitmask of PIPE_TEXTURE_GEOM_*
*/ */
boolean (*is_format_supported)( struct pipe_screen *, boolean (*is_format_supported)( struct pipe_screen *,
enum pipe_format format, enum pipe_format format,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned bindings, unsigned bindings );
unsigned geom_flags );
/** /**
* Create a new texture object, using the given template info. * Create a new texture object, using the given template info.

View file

@ -299,25 +299,25 @@ struct GalliumD3D11ScreenImpl : public GalliumD3D11Screen
sampler_view |= D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON; sampler_view |= D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON;
/* TODO: do this properly when Gallium drivers actually support index/vertex format queries */ /* TODO: do this properly when Gallium drivers actually support index/vertex format queries */
if(screen->is_format_supported(screen, format, PIPE_BUFFER, 0, PIPE_BIND_VERTEX_BUFFER, 0) if(screen->is_format_supported(screen, format, PIPE_BUFFER, 0, PIPE_BIND_VERTEX_BUFFER)
|| (screen->is_format_supported(screen, format, PIPE_BUFFER, 0, PIPE_BIND_INDEX_BUFFER, 0) || (screen->is_format_supported(screen, format, PIPE_BUFFER, 0, PIPE_BIND_INDEX_BUFFER)
|| format == PIPE_FORMAT_R8_UNORM)) || format == PIPE_FORMAT_R8_UNORM))
support |= buffer; support |= buffer;
if(screen->is_format_supported(screen, format, PIPE_BUFFER, 0, PIPE_BIND_STREAM_OUTPUT, 0)) if(screen->is_format_supported(screen, format, PIPE_BUFFER, 0, PIPE_BIND_STREAM_OUTPUT))
support |= buffer | D3D11_FORMAT_SUPPORT_SO_BUFFER; support |= buffer | D3D11_FORMAT_SUPPORT_SO_BUFFER;
if(screen->is_format_supported(screen, format, PIPE_TEXTURE_1D, 0, PIPE_BIND_SAMPLER_VIEW, 0)) if(screen->is_format_supported(screen, format, PIPE_TEXTURE_1D, 0, PIPE_BIND_SAMPLER_VIEW))
support |= D3D11_FORMAT_SUPPORT_TEXTURE1D | sampler_view; support |= D3D11_FORMAT_SUPPORT_TEXTURE1D | sampler_view;
if(screen->is_format_supported(screen, format, PIPE_TEXTURE_2D, 0, PIPE_BIND_SAMPLER_VIEW, 0)) if(screen->is_format_supported(screen, format, PIPE_TEXTURE_2D, 0, PIPE_BIND_SAMPLER_VIEW))
support |= D3D11_FORMAT_SUPPORT_TEXTURE2D | sampler_view; support |= D3D11_FORMAT_SUPPORT_TEXTURE2D | sampler_view;
if(screen->is_format_supported(screen, format, PIPE_TEXTURE_CUBE, 0, PIPE_BIND_SAMPLER_VIEW, 0)) if(screen->is_format_supported(screen, format, PIPE_TEXTURE_CUBE, 0, PIPE_BIND_SAMPLER_VIEW))
support |= D3D11_FORMAT_SUPPORT_TEXTURE2D | sampler_view; support |= D3D11_FORMAT_SUPPORT_TEXTURE2D | sampler_view;
if(screen->is_format_supported(screen, format, PIPE_TEXTURE_3D, 0, PIPE_BIND_SAMPLER_VIEW, 0)) if(screen->is_format_supported(screen, format, PIPE_TEXTURE_3D, 0, PIPE_BIND_SAMPLER_VIEW))
support |= D3D11_FORMAT_SUPPORT_TEXTURE3D | sampler_view; support |= D3D11_FORMAT_SUPPORT_TEXTURE3D | sampler_view;
if(screen->is_format_supported(screen, format, PIPE_TEXTURE_2D, 0, PIPE_BIND_RENDER_TARGET, 0)) if(screen->is_format_supported(screen, format, PIPE_TEXTURE_2D, 0, PIPE_BIND_RENDER_TARGET))
support |= D3D11_FORMAT_SUPPORT_TEXTURE2D | D3D11_FORMAT_SUPPORT_RENDER_TARGET | D3D11_FORMAT_SUPPORT_BLENDABLE; support |= D3D11_FORMAT_SUPPORT_TEXTURE2D | D3D11_FORMAT_SUPPORT_RENDER_TARGET | D3D11_FORMAT_SUPPORT_BLENDABLE;
if(screen->is_format_supported(screen, format, PIPE_TEXTURE_2D, 0, PIPE_BIND_DEPTH_STENCIL, 0)) if(screen->is_format_supported(screen, format, PIPE_TEXTURE_2D, 0, PIPE_BIND_DEPTH_STENCIL))
support |= D3D11_FORMAT_SUPPORT_TEXTURE2D | D3D11_FORMAT_SUPPORT_DEPTH_STENCIL; support |= D3D11_FORMAT_SUPPORT_TEXTURE2D | D3D11_FORMAT_SUPPORT_DEPTH_STENCIL;
if(screen->is_format_supported(screen, format, PIPE_TEXTURE_2D, 0, PIPE_BIND_DISPLAY_TARGET, 0)) if(screen->is_format_supported(screen, format, PIPE_TEXTURE_2D, 0, PIPE_BIND_DISPLAY_TARGET))
support |= D3D11_FORMAT_SUPPORT_DISPLAY; support |= D3D11_FORMAT_SUPPORT_DISPLAY;
format_support[format] = support; format_support[format] = support;
} }

View file

@ -81,34 +81,34 @@ dri_fill_in_modes(struct dri_screen *screen,
pf_x8z24 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z24X8_UNORM, pf_x8z24 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z24X8_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_DEPTH_STENCIL, 0); PIPE_BIND_DEPTH_STENCIL);
pf_z24x8 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_X8Z24_UNORM, pf_z24x8 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_X8Z24_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_DEPTH_STENCIL, 0); PIPE_BIND_DEPTH_STENCIL);
pf_s8z24 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED, pf_s8z24 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_DEPTH_STENCIL, 0); PIPE_BIND_DEPTH_STENCIL);
pf_z24s8 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM, pf_z24s8 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_DEPTH_STENCIL, 0); PIPE_BIND_DEPTH_STENCIL);
pf_a8r8g8b8 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_B8G8R8A8_UNORM, pf_a8r8g8b8 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_B8G8R8A8_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_RENDER_TARGET, 0); PIPE_BIND_RENDER_TARGET);
pf_x8r8g8b8 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_B8G8R8X8_UNORM, pf_x8r8g8b8 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_B8G8R8X8_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_RENDER_TARGET, 0); PIPE_BIND_RENDER_TARGET);
pf_r5g6b5 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_B5G6R5_UNORM, pf_r5g6b5 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_B5G6R5_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_RENDER_TARGET, 0); PIPE_BIND_RENDER_TARGET);
/* We can only get a 16 or 32 bit depth buffer with getBuffersWithFormat */ /* We can only get a 16 or 32 bit depth buffer with getBuffersWithFormat */
if (dri_with_format(screen->sPriv)) { if (dri_with_format(screen->sPriv)) {
pf_z16 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z16_UNORM, pf_z16 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z16_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_DEPTH_STENCIL, 0); PIPE_BIND_DEPTH_STENCIL);
pf_z32 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z32_UNORM, pf_z32 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z32_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_DEPTH_STENCIL, 0); PIPE_BIND_DEPTH_STENCIL);
} else { } else {
pf_z16 = FALSE; pf_z16 = FALSE;
pf_z32 = FALSE; pf_z32 = FALSE;
@ -142,7 +142,7 @@ dri_fill_in_modes(struct dri_screen *screen,
for (i = 1; i < 5; i++) { for (i = 1; i < 5; i++) {
if (p_screen->is_format_supported(p_screen, PIPE_FORMAT_B5G6R5_UNORM, if (p_screen->is_format_supported(p_screen, PIPE_FORMAT_B5G6R5_UNORM,
PIPE_TEXTURE_2D, i*2, PIPE_TEXTURE_2D, i*2,
PIPE_BIND_RENDER_TARGET, 0)) { PIPE_BIND_RENDER_TARGET)) {
msaa_samples_array[msaa_samples_factor] = i * 2; msaa_samples_array[msaa_samples_factor] = i * 2;
msaa_samples_factor++; msaa_samples_factor++;
} }
@ -161,7 +161,7 @@ dri_fill_in_modes(struct dri_screen *screen,
for (i = 1; i < 5; i++) { for (i = 1; i < 5; i++) {
if (p_screen->is_format_supported(p_screen, PIPE_FORMAT_B8G8R8A8_UNORM, if (p_screen->is_format_supported(p_screen, PIPE_FORMAT_B8G8R8A8_UNORM,
PIPE_TEXTURE_2D, i*2, PIPE_TEXTURE_2D, i*2,
PIPE_BIND_RENDER_TARGET, 0)) { PIPE_BIND_RENDER_TARGET)) {
msaa_samples_array[msaa_samples_factor] = i * 2; msaa_samples_array[msaa_samples_factor] = i * 2;
msaa_samples_factor++; msaa_samples_factor++;
} }
@ -183,7 +183,7 @@ dri_fill_in_modes(struct dri_screen *screen,
for (i = 1; i < 5; i++) { for (i = 1; i < 5; i++) {
if (p_screen->is_format_supported(p_screen, PIPE_FORMAT_B8G8R8X8_UNORM, if (p_screen->is_format_supported(p_screen, PIPE_FORMAT_B8G8R8X8_UNORM,
PIPE_TEXTURE_2D, i*2, PIPE_TEXTURE_2D, i*2,
PIPE_BIND_RENDER_TARGET, 0)) { PIPE_BIND_RENDER_TARGET)) {
msaa_samples_array[msaa_samples_factor] = i * 2; msaa_samples_array[msaa_samples_factor] = i * 2;
msaa_samples_factor++; msaa_samples_factor++;
} }

View file

@ -368,7 +368,7 @@ egl_g3d_fill_depth_stencil_formats(_EGLDisplay *dpy,
/* pick the first supported format */ /* pick the first supported format */
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
if (screen->is_format_supported(screen, fmt[i], if (screen->is_format_supported(screen, fmt[i],
PIPE_TEXTURE_2D, 0, PIPE_BIND_DEPTH_STENCIL, 0)) { PIPE_TEXTURE_2D, 0, PIPE_BIND_DEPTH_STENCIL)) {
formats[count++] = fmt[i]; formats[count++] = fmt[i];
break; break;
} }

View file

@ -43,7 +43,7 @@ drm_display_is_format_supported(struct native_display *ndpy,
return ndpy->screen->is_format_supported(ndpy->screen, return ndpy->screen->is_format_supported(ndpy->screen,
fmt, PIPE_TEXTURE_2D, 0, fmt, PIPE_TEXTURE_2D, 0,
(is_color) ? PIPE_BIND_RENDER_TARGET : (is_color) ? PIPE_BIND_RENDER_TARGET :
PIPE_BIND_DEPTH_STENCIL, 0); PIPE_BIND_DEPTH_STENCIL);
} }
static const struct native_config ** static const struct native_config **

View file

@ -422,7 +422,7 @@ fbdev_display_init(struct native_display *ndpy)
if (fbdpy->base.screen) { if (fbdpy->base.screen) {
if (!fbdpy->base.screen->is_format_supported(fbdpy->base.screen, if (!fbdpy->base.screen->is_format_supported(fbdpy->base.screen,
fbdpy->config.color_format, PIPE_TEXTURE_2D, 0, fbdpy->config.color_format, PIPE_TEXTURE_2D, 0,
PIPE_BIND_RENDER_TARGET, 0)) { PIPE_BIND_RENDER_TARGET)) {
fbdpy->base.screen->destroy(fbdpy->base.screen); fbdpy->base.screen->destroy(fbdpy->base.screen);
fbdpy->base.screen = NULL; fbdpy->base.screen = NULL;
} }

View file

@ -285,7 +285,7 @@ fill_color_formats(struct native_display *ndpy, enum pipe_format formats[8])
for (i = 0; i < Elements(candidates); i++) { for (i = 0; i < Elements(candidates); i++) {
if (screen->is_format_supported(screen, candidates[i], if (screen->is_format_supported(screen, candidates[i],
PIPE_TEXTURE_2D, 0, PIPE_BIND_RENDER_TARGET, 0)) PIPE_TEXTURE_2D, 0, PIPE_BIND_RENDER_TARGET))
formats[count++] = candidates[i]; formats[count++] = candidates[i];
} }

View file

@ -541,7 +541,7 @@ is_format_supported(struct pipe_screen *screen,
{ {
return screen->is_format_supported(screen, fmt, PIPE_TEXTURE_2D, sample_count, return screen->is_format_supported(screen, fmt, PIPE_TEXTURE_2D, sample_count,
(is_color) ? PIPE_BIND_RENDER_TARGET : (is_color) ? PIPE_BIND_RENDER_TARGET :
PIPE_BIND_DEPTH_STENCIL, 0); PIPE_BIND_DEPTH_STENCIL);
} }
static boolean static boolean

View file

@ -376,8 +376,6 @@ choose_depth_stencil_format(XMesaDisplay xmdpy, int depth, int stencil)
{ {
const enum pipe_texture_target target = PIPE_TEXTURE_2D; const enum pipe_texture_target target = PIPE_TEXTURE_2D;
const unsigned tex_usage = PIPE_BIND_DEPTH_STENCIL; const unsigned tex_usage = PIPE_BIND_DEPTH_STENCIL;
const unsigned geom_flags = (PIPE_TEXTURE_GEOM_NON_SQUARE |
PIPE_TEXTURE_GEOM_NON_POWER_OF_TWO);
const unsigned sample_count = 0; const unsigned sample_count = 0;
enum pipe_format formats[8], fmt; enum pipe_format formats[8], fmt;
int count, i; int count, i;
@ -403,7 +401,7 @@ choose_depth_stencil_format(XMesaDisplay xmdpy, int depth, int stencil)
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
if (xmdpy->screen->is_format_supported(xmdpy->screen, formats[i], if (xmdpy->screen->is_format_supported(xmdpy->screen, formats[i],
target, sample_count, target, sample_count,
tex_usage, geom_flags)) { tex_usage)) {
fmt = formats[i]; fmt = formats[i];
break; break;
} }

View file

@ -257,7 +257,7 @@ struct vg_image * image_create(VGImageFormat format,
image->sampler.normalized_coords = 1; image->sampler.normalized_coords = 1;
assert(screen->is_format_supported(screen, pformat, PIPE_TEXTURE_2D, assert(screen->is_format_supported(screen, pformat, PIPE_TEXTURE_2D,
0, PIPE_BIND_SAMPLER_VIEW, 0)); 0, PIPE_BIND_SAMPLER_VIEW));
memset(&pt, 0, sizeof(pt)); memset(&pt, 0, sizeof(pt));
pt.target = PIPE_TEXTURE_2D; pt.target = PIPE_TEXTURE_2D;

View file

@ -140,7 +140,7 @@ static VGboolean renderer_can_support(struct renderer *renderer,
struct pipe_screen *screen = renderer->pipe->screen; struct pipe_screen *screen = renderer->pipe->screen;
return screen->is_format_supported(screen, return screen->is_format_supported(screen,
res->format, res->target, 0, bindings, 0); res->format, res->target, 0, bindings);
} }
/** /**
@ -1463,11 +1463,11 @@ void renderer_copy_surface(struct renderer *ctx,
} }
assert(screen->is_format_supported(screen, src->format, PIPE_TEXTURE_2D, assert(screen->is_format_supported(screen, src->format, PIPE_TEXTURE_2D,
0, PIPE_BIND_SAMPLER_VIEW, 0)); 0, PIPE_BIND_SAMPLER_VIEW));
assert(screen->is_format_supported(screen, dst->format, PIPE_TEXTURE_2D, assert(screen->is_format_supported(screen, dst->format, PIPE_TEXTURE_2D,
0, PIPE_BIND_SAMPLER_VIEW, 0)); 0, PIPE_BIND_SAMPLER_VIEW));
assert(screen->is_format_supported(screen, dst->format, PIPE_TEXTURE_2D, assert(screen->is_format_supported(screen, dst->format, PIPE_TEXTURE_2D,
0, PIPE_BIND_RENDER_TARGET, 0)); 0, PIPE_BIND_RENDER_TARGET));
/* /*
* XXX for now we're always creating a temporary texture. * XXX for now we're always creating a temporary texture.

View file

@ -69,7 +69,7 @@ choose_depth_stencil_format(struct vg_context *ctx)
for (fmt = formats; *fmt != PIPE_FORMAT_NONE; fmt++) { for (fmt = formats; *fmt != PIPE_FORMAT_NONE; fmt++) {
if (screen->is_format_supported(screen, *fmt, if (screen->is_format_supported(screen, *fmt,
PIPE_TEXTURE_2D, 0, PIPE_BIND_DEPTH_STENCIL, 0)) PIPE_TEXTURE_2D, 0, PIPE_BIND_DEPTH_STENCIL))
break; break;
} }

View file

@ -225,7 +225,7 @@ stw_pixelformat_init( void )
if(!screen->is_format_supported(screen, color->format, PIPE_TEXTURE_2D, if(!screen->is_format_supported(screen, color->format, PIPE_TEXTURE_2D,
0, PIPE_BIND_RENDER_TARGET | 0, PIPE_BIND_RENDER_TARGET |
PIPE_BIND_DISPLAY_TARGET, 0)) PIPE_BIND_DISPLAY_TARGET))
continue; continue;
for(k = 0; k < Elements(stw_pf_doublebuffer); ++k) { for(k = 0; k < Elements(stw_pf_doublebuffer); ++k) {
@ -235,7 +235,7 @@ stw_pixelformat_init( void )
const struct stw_pf_depth_info *depth = &stw_pf_depth_stencil[l]; const struct stw_pf_depth_info *depth = &stw_pf_depth_stencil[l];
if(!screen->is_format_supported(screen, depth->format, PIPE_TEXTURE_2D, if(!screen->is_format_supported(screen, depth->format, PIPE_TEXTURE_2D,
0, PIPE_BIND_DEPTH_STENCIL, 0)) 0, PIPE_BIND_DEPTH_STENCIL))
continue; continue;
stw_pixelformat_add( stw_dev, color, depth, 0, doublebuffer, samples ); stw_pixelformat_add( stw_dev, color, depth, 0, doublebuffer, samples );

View file

@ -452,12 +452,12 @@ xorg_dri2_init(ScreenPtr pScreen)
ms->screen->is_format_supported(ms->screen, PIPE_FORMAT_Z24X8_UNORM, ms->screen->is_format_supported(ms->screen, PIPE_FORMAT_Z24X8_UNORM,
PIPE_TEXTURE_2D, PIPE_TEXTURE_2D,
0, 0,
PIPE_BIND_DEPTH_STENCIL, 0); PIPE_BIND_DEPTH_STENCIL);
ms->ds_depth_bits_last = ms->ds_depth_bits_last =
ms->screen->is_format_supported(ms->screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED, ms->screen->is_format_supported(ms->screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED,
PIPE_TEXTURE_2D, PIPE_TEXTURE_2D,
0, 0,
PIPE_BIND_DEPTH_STENCIL, 0); PIPE_BIND_DEPTH_STENCIL);
return DRI2ScreenInit(pScreen, &dri2info); return DRI2ScreenInit(pScreen, &dri2info);
} }

View file

@ -349,7 +349,7 @@ ExaPrepareSolid(PixmapPtr pPixmap, int alu, Pixel planeMask, Pixel fg)
if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format, if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format,
priv->tex->target, 0, priv->tex->target, 0,
PIPE_BIND_RENDER_TARGET, 0)) { PIPE_BIND_RENDER_TARGET)) {
XORG_FALLBACK("format %s", util_format_name(priv->tex->format)); XORG_FALLBACK("format %s", util_format_name(priv->tex->format));
} }
@ -430,12 +430,12 @@ ExaPrepareCopy(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, int xdir,
if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format, if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format,
priv->tex->target, 0, priv->tex->target, 0,
PIPE_BIND_RENDER_TARGET, 0)) PIPE_BIND_RENDER_TARGET))
XORG_FALLBACK("pDst format %s", util_format_name(priv->tex->format)); XORG_FALLBACK("pDst format %s", util_format_name(priv->tex->format));
if (!exa->scrn->is_format_supported(exa->scrn, src_priv->tex->format, if (!exa->scrn->is_format_supported(exa->scrn, src_priv->tex->format,
src_priv->tex->target, 0, src_priv->tex->target, 0,
PIPE_BIND_SAMPLER_VIEW, 0)) PIPE_BIND_SAMPLER_VIEW))
XORG_FALLBACK("pSrc format %s", util_format_name(src_priv->tex->format)); XORG_FALLBACK("pSrc format %s", util_format_name(src_priv->tex->format));
exa->copy.src = src_priv; exa->copy.src = src_priv;
@ -630,7 +630,7 @@ ExaPrepareComposite(int op, PicturePtr pSrcPicture,
if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format, if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format,
priv->tex->target, 0, priv->tex->target, 0,
PIPE_BIND_RENDER_TARGET, 0)) PIPE_BIND_RENDER_TARGET))
XORG_FALLBACK("pDst format: %s", util_format_name(priv->tex->format)); XORG_FALLBACK("pDst format: %s", util_format_name(priv->tex->format));
if (priv->picture_format != pDstPicture->format) if (priv->picture_format != pDstPicture->format)
@ -645,7 +645,7 @@ ExaPrepareComposite(int op, PicturePtr pSrcPicture,
if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format, if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format,
priv->tex->target, 0, priv->tex->target, 0,
PIPE_BIND_SAMPLER_VIEW, 0)) PIPE_BIND_SAMPLER_VIEW))
XORG_FALLBACK("pSrc format: %s", util_format_name(priv->tex->format)); XORG_FALLBACK("pSrc format: %s", util_format_name(priv->tex->format));
if (!picture_check_formats(priv, pSrcPicture)) if (!picture_check_formats(priv, pSrcPicture))
@ -662,7 +662,7 @@ ExaPrepareComposite(int op, PicturePtr pSrcPicture,
if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format, if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format,
priv->tex->target, 0, priv->tex->target, 0,
PIPE_BIND_SAMPLER_VIEW, 0)) PIPE_BIND_SAMPLER_VIEW))
XORG_FALLBACK("pMask format: %s", util_format_name(priv->tex->format)); XORG_FALLBACK("pMask format: %s", util_format_name(priv->tex->format));
if (!picture_check_formats(priv, pMaskPicture)) if (!picture_check_formats(priv, pMaskPicture))

View file

@ -450,8 +450,7 @@ void renderer_copy_prepare(struct xorg_renderer *r,
assert(screen->is_format_supported(screen, dst_surface->format, assert(screen->is_format_supported(screen, dst_surface->format,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_RENDER_TARGET, PIPE_BIND_RENDER_TARGET));
0));
(void) screen; (void) screen;
@ -522,7 +521,7 @@ renderer_clone_texture(struct xorg_renderer *r,
/* the coming in texture should already have that invariance */ /* the coming in texture should already have that invariance */
debug_assert(screen->is_format_supported(screen, src->format, debug_assert(screen->is_format_supported(screen, src->format,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0)); PIPE_BIND_SAMPLER_VIEW));
format = src->format; format = src->format;

View file

@ -838,17 +838,17 @@ st_init_bitmap(struct st_context *st)
/* find a usable texture format */ /* find a usable texture format */
if (screen->is_format_supported(screen, PIPE_FORMAT_I8_UNORM, if (screen->is_format_supported(screen, PIPE_FORMAT_I8_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0)) { PIPE_BIND_SAMPLER_VIEW)) {
st->bitmap.tex_format = PIPE_FORMAT_I8_UNORM; st->bitmap.tex_format = PIPE_FORMAT_I8_UNORM;
} }
else if (screen->is_format_supported(screen, PIPE_FORMAT_A8_UNORM, else if (screen->is_format_supported(screen, PIPE_FORMAT_A8_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0)) { PIPE_BIND_SAMPLER_VIEW)) {
st->bitmap.tex_format = PIPE_FORMAT_A8_UNORM; st->bitmap.tex_format = PIPE_FORMAT_A8_UNORM;
} }
else if (screen->is_format_supported(screen, PIPE_FORMAT_L8_UNORM, else if (screen->is_format_supported(screen, PIPE_FORMAT_L8_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0)) { PIPE_BIND_SAMPLER_VIEW)) {
st->bitmap.tex_format = PIPE_FORMAT_L8_UNORM; st->bitmap.tex_format = PIPE_FORMAT_L8_UNORM;
} }
else { else {

View file

@ -1332,7 +1332,7 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy,
if (screen->is_format_supported(screen, srcFormat, st->internal_target, if (screen->is_format_supported(screen, srcFormat, st->internal_target,
sample_count, sample_count,
PIPE_BIND_SAMPLER_VIEW, 0)) { PIPE_BIND_SAMPLER_VIEW)) {
texFormat = srcFormat; texFormat = srcFormat;
} }
else { else {

View file

@ -485,7 +485,7 @@ st_validate_attachment(struct gl_context *ctx,
return screen->is_format_supported(screen, format, return screen->is_format_supported(screen, format,
PIPE_TEXTURE_2D, PIPE_TEXTURE_2D,
stObj->pt->nr_samples, bindings, 0); stObj->pt->nr_samples, bindings);
} }

View file

@ -217,7 +217,6 @@ default_bindings(struct st_context *st, enum pipe_format format)
{ {
struct pipe_screen *screen = st->pipe->screen; struct pipe_screen *screen = st->pipe->screen;
const unsigned target = PIPE_TEXTURE_2D; const unsigned target = PIPE_TEXTURE_2D;
const unsigned geom = 0x0;
unsigned bindings; unsigned bindings;
if (util_format_is_depth_or_stencil(format)) if (util_format_is_depth_or_stencil(format))
@ -225,13 +224,13 @@ default_bindings(struct st_context *st, enum pipe_format format)
else else
bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET; bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET;
if (screen->is_format_supported(screen, format, target, 0, bindings, geom)) if (screen->is_format_supported(screen, format, target, 0, bindings))
return bindings; return bindings;
else { else {
/* Try non-sRGB. */ /* Try non-sRGB. */
format = util_format_linear(format); format = util_format_linear(format);
if (screen->is_format_supported(screen, format, target, 0, bindings, geom)) if (screen->is_format_supported(screen, format, target, 0, bindings))
return bindings; return bindings;
else else
return PIPE_BIND_SAMPLER_VIEW; return PIPE_BIND_SAMPLER_VIEW;
@ -1523,12 +1522,10 @@ st_copy_texsubimage(struct gl_context *ctx,
texBaseFormat != GL_DEPTH_STENCIL && texBaseFormat != GL_DEPTH_STENCIL &&
screen->is_format_supported(screen, src_format, screen->is_format_supported(screen, src_format,
PIPE_TEXTURE_2D, sample_count, PIPE_TEXTURE_2D, sample_count,
PIPE_BIND_SAMPLER_VIEW, PIPE_BIND_SAMPLER_VIEW) &&
0) &&
screen->is_format_supported(screen, dest_format, screen->is_format_supported(screen, dest_format,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_RENDER_TARGET, PIPE_BIND_RENDER_TARGET)) {
0)) {
/* draw textured quad to do the copy */ /* draw textured quad to do the copy */
GLint srcY0, srcY1; GLint srcY0, srcY1;
struct pipe_surface surf_tmpl; struct pipe_surface surf_tmpl;

View file

@ -366,36 +366,36 @@ void st_init_extensions(struct st_context *st)
*/ */
if (screen->is_format_supported(screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM, if (screen->is_format_supported(screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_DEPTH_STENCIL, 0) && PIPE_BIND_DEPTH_STENCIL) &&
screen->is_format_supported(screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM, screen->is_format_supported(screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0)) { PIPE_BIND_SAMPLER_VIEW)) {
ctx->Extensions.EXT_packed_depth_stencil = GL_TRUE; ctx->Extensions.EXT_packed_depth_stencil = GL_TRUE;
} }
else if (screen->is_format_supported(screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED, else if (screen->is_format_supported(screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_DEPTH_STENCIL, 0) && PIPE_BIND_DEPTH_STENCIL) &&
screen->is_format_supported(screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED, screen->is_format_supported(screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0)) { PIPE_BIND_SAMPLER_VIEW)) {
ctx->Extensions.EXT_packed_depth_stencil = GL_TRUE; ctx->Extensions.EXT_packed_depth_stencil = GL_TRUE;
} }
/* sRGB support */ /* sRGB support */
if (screen->is_format_supported(screen, PIPE_FORMAT_A8B8G8R8_SRGB, if (screen->is_format_supported(screen, PIPE_FORMAT_A8B8G8R8_SRGB,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0) || PIPE_BIND_SAMPLER_VIEW) ||
screen->is_format_supported(screen, PIPE_FORMAT_B8G8R8A8_SRGB, screen->is_format_supported(screen, PIPE_FORMAT_B8G8R8A8_SRGB,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0)) { PIPE_BIND_SAMPLER_VIEW)) {
ctx->Extensions.EXT_texture_sRGB = GL_TRUE; ctx->Extensions.EXT_texture_sRGB = GL_TRUE;
ctx->Extensions.EXT_texture_sRGB_decode = GL_TRUE; ctx->Extensions.EXT_texture_sRGB_decode = GL_TRUE;
if (screen->is_format_supported(screen, PIPE_FORMAT_A8B8G8R8_SRGB, if (screen->is_format_supported(screen, PIPE_FORMAT_A8B8G8R8_SRGB,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_RENDER_TARGET, 0) || PIPE_BIND_RENDER_TARGET) ||
screen->is_format_supported(screen, PIPE_FORMAT_B8G8R8A8_SRGB, screen->is_format_supported(screen, PIPE_FORMAT_B8G8R8A8_SRGB,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_RENDER_TARGET, 0)) { PIPE_BIND_RENDER_TARGET)) {
ctx->Extensions.EXT_framebuffer_sRGB = GL_TRUE; ctx->Extensions.EXT_framebuffer_sRGB = GL_TRUE;
ctx->Const.sRGBCapable = GL_TRUE; ctx->Const.sRGBCapable = GL_TRUE;
} }
@ -403,14 +403,14 @@ void st_init_extensions(struct st_context *st)
if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8_UNORM, if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0)) { PIPE_BIND_SAMPLER_VIEW)) {
ctx->Extensions.ARB_texture_rg = GL_TRUE; ctx->Extensions.ARB_texture_rg = GL_TRUE;
} }
/* s3tc support */ /* s3tc support */
if (screen->is_format_supported(screen, PIPE_FORMAT_DXT5_RGBA, if (screen->is_format_supported(screen, PIPE_FORMAT_DXT5_RGBA,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0) && PIPE_BIND_SAMPLER_VIEW) &&
ctx->Mesa_DXTn) { ctx->Mesa_DXTn) {
ctx->Extensions.EXT_texture_compression_s3tc = GL_TRUE; ctx->Extensions.EXT_texture_compression_s3tc = GL_TRUE;
ctx->Extensions.S3_s3tc = GL_TRUE; ctx->Extensions.S3_s3tc = GL_TRUE;
@ -418,48 +418,48 @@ void st_init_extensions(struct st_context *st)
if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC1_UNORM, if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC1_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0) && PIPE_BIND_SAMPLER_VIEW) &&
screen->is_format_supported(screen, PIPE_FORMAT_RGTC1_SNORM, screen->is_format_supported(screen, PIPE_FORMAT_RGTC1_SNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0) && PIPE_BIND_SAMPLER_VIEW) &&
screen->is_format_supported(screen, PIPE_FORMAT_RGTC2_UNORM, screen->is_format_supported(screen, PIPE_FORMAT_RGTC2_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0) && PIPE_BIND_SAMPLER_VIEW) &&
screen->is_format_supported(screen, PIPE_FORMAT_RGTC2_SNORM, screen->is_format_supported(screen, PIPE_FORMAT_RGTC2_SNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0) PIPE_BIND_SAMPLER_VIEW)
) { ) {
ctx->Extensions.ARB_texture_compression_rgtc = GL_TRUE; ctx->Extensions.ARB_texture_compression_rgtc = GL_TRUE;
} }
if (screen->is_format_supported(screen, PIPE_FORMAT_LATC1_UNORM, if (screen->is_format_supported(screen, PIPE_FORMAT_LATC1_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0) && PIPE_BIND_SAMPLER_VIEW) &&
screen->is_format_supported(screen, PIPE_FORMAT_LATC1_SNORM, screen->is_format_supported(screen, PIPE_FORMAT_LATC1_SNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0) && PIPE_BIND_SAMPLER_VIEW) &&
screen->is_format_supported(screen, PIPE_FORMAT_LATC2_UNORM, screen->is_format_supported(screen, PIPE_FORMAT_LATC2_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0) && PIPE_BIND_SAMPLER_VIEW) &&
screen->is_format_supported(screen, PIPE_FORMAT_LATC2_SNORM, screen->is_format_supported(screen, PIPE_FORMAT_LATC2_SNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0)) { PIPE_BIND_SAMPLER_VIEW)) {
ctx->Extensions.EXT_texture_compression_latc = GL_TRUE; ctx->Extensions.EXT_texture_compression_latc = GL_TRUE;
} }
if (screen->is_format_supported(screen, PIPE_FORMAT_LATC2_UNORM, if (screen->is_format_supported(screen, PIPE_FORMAT_LATC2_UNORM,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0)) { PIPE_BIND_SAMPLER_VIEW)) {
ctx->Extensions.ATI_texture_compression_3dc = GL_TRUE; ctx->Extensions.ATI_texture_compression_3dc = GL_TRUE;
} }
/* ycbcr support */ /* ycbcr support */
if (screen->is_format_supported(screen, PIPE_FORMAT_UYVY, if (screen->is_format_supported(screen, PIPE_FORMAT_UYVY,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0) || PIPE_BIND_SAMPLER_VIEW) ||
screen->is_format_supported(screen, PIPE_FORMAT_YUYV, screen->is_format_supported(screen, PIPE_FORMAT_YUYV,
PIPE_TEXTURE_2D, 0, PIPE_TEXTURE_2D, 0,
PIPE_BIND_SAMPLER_VIEW, 0)) { PIPE_BIND_SAMPLER_VIEW)) {
ctx->Extensions.MESA_ycbcr_texture = GL_TRUE; ctx->Extensions.MESA_ycbcr_texture = GL_TRUE;
} }
@ -490,7 +490,7 @@ void st_init_extensions(struct st_context *st)
/* GL_ARB_half_float_vertex */ /* GL_ARB_half_float_vertex */
if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_FLOAT, if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_FLOAT,
PIPE_BUFFER, 0, PIPE_BUFFER, 0,
PIPE_BIND_VERTEX_BUFFER, 0)) { PIPE_BIND_VERTEX_BUFFER)) {
ctx->Extensions.ARB_half_float_vertex = GL_TRUE; ctx->Extensions.ARB_half_float_vertex = GL_TRUE;
} }

View file

@ -432,13 +432,12 @@ find_supported_format(struct pipe_screen *screen,
uint num_formats, uint num_formats,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned tex_usage, unsigned tex_usage)
unsigned geom_flags)
{ {
uint i; uint i;
for (i = 0; i < num_formats; i++) { for (i = 0; i < num_formats; i++) {
if (screen->is_format_supported(screen, formats[i], target, if (screen->is_format_supported(screen, formats[i], target,
sample_count, tex_usage, geom_flags)) { sample_count, tex_usage)) {
return formats[i]; return formats[i];
} }
} }
@ -453,8 +452,7 @@ static enum pipe_format
default_rgba_format(struct pipe_screen *screen, default_rgba_format(struct pipe_screen *screen,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned tex_usage, unsigned tex_usage)
unsigned geom_flags)
{ {
static const enum pipe_format colorFormats[] = { static const enum pipe_format colorFormats[] = {
PIPE_FORMAT_B8G8R8A8_UNORM, PIPE_FORMAT_B8G8R8A8_UNORM,
@ -463,7 +461,7 @@ default_rgba_format(struct pipe_screen *screen,
PIPE_FORMAT_B5G6R5_UNORM PIPE_FORMAT_B5G6R5_UNORM
}; };
return find_supported_format(screen, colorFormats, Elements(colorFormats), return find_supported_format(screen, colorFormats, Elements(colorFormats),
target, sample_count, tex_usage, geom_flags); target, sample_count, tex_usage);
} }
@ -474,8 +472,7 @@ static enum pipe_format
default_rgb_format(struct pipe_screen *screen, default_rgb_format(struct pipe_screen *screen,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned tex_usage, unsigned tex_usage)
unsigned geom_flags)
{ {
static const enum pipe_format colorFormats[] = { static const enum pipe_format colorFormats[] = {
PIPE_FORMAT_B8G8R8X8_UNORM, PIPE_FORMAT_B8G8R8X8_UNORM,
@ -487,7 +484,7 @@ default_rgb_format(struct pipe_screen *screen,
PIPE_FORMAT_B5G6R5_UNORM PIPE_FORMAT_B5G6R5_UNORM
}; };
return find_supported_format(screen, colorFormats, Elements(colorFormats), return find_supported_format(screen, colorFormats, Elements(colorFormats),
target, sample_count, tex_usage, geom_flags); target, sample_count, tex_usage);
} }
/** /**
@ -497,8 +494,7 @@ static enum pipe_format
default_srgba_format(struct pipe_screen *screen, default_srgba_format(struct pipe_screen *screen,
enum pipe_texture_target target, enum pipe_texture_target target,
unsigned sample_count, unsigned sample_count,
unsigned tex_usage, unsigned tex_usage)
unsigned geom_flags)
{ {
static const enum pipe_format colorFormats[] = { static const enum pipe_format colorFormats[] = {
PIPE_FORMAT_B8G8R8A8_SRGB, PIPE_FORMAT_B8G8R8A8_SRGB,
@ -506,7 +502,7 @@ default_srgba_format(struct pipe_screen *screen,
PIPE_FORMAT_A8B8G8R8_SRGB, PIPE_FORMAT_A8B8G8R8_SRGB,
}; };
return find_supported_format(screen, colorFormats, Elements(colorFormats), return find_supported_format(screen, colorFormats, Elements(colorFormats),
target, sample_count, tex_usage, geom_flags); target, sample_count, tex_usage);
} }
@ -528,87 +524,71 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
enum pipe_texture_target target, unsigned sample_count, enum pipe_texture_target target, unsigned sample_count,
unsigned bindings) unsigned bindings)
{ {
unsigned geom_flags = 0; /* we don't care about POT vs. NPOT here, yet */
switch (internalFormat) { switch (internalFormat) {
case GL_RGB10: case GL_RGB10:
case GL_RGB10_A2: case GL_RGB10_A2:
if (screen->is_format_supported( screen, PIPE_FORMAT_B10G10R10A2_UNORM, if (screen->is_format_supported( screen, PIPE_FORMAT_B10G10R10A2_UNORM,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags ))
return PIPE_FORMAT_B10G10R10A2_UNORM; return PIPE_FORMAT_B10G10R10A2_UNORM;
/* Pass through. */ /* Pass through. */
case 4: case 4:
case GL_RGBA: case GL_RGBA:
case GL_RGBA8: case GL_RGBA8:
return default_rgba_format( screen, target, sample_count, bindings, return default_rgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_BGRA: case GL_BGRA:
if (screen->is_format_supported( screen, PIPE_FORMAT_B8G8R8A8_UNORM, if (screen->is_format_supported( screen, PIPE_FORMAT_B8G8R8A8_UNORM,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags ))
return PIPE_FORMAT_B8G8R8A8_UNORM; return PIPE_FORMAT_B8G8R8A8_UNORM;
return default_rgba_format( screen, target, sample_count, bindings, return default_rgba_format( screen, target, sample_count, bindings);
geom_flags );
case 3: case 3:
case GL_RGB: case GL_RGB:
case GL_RGB8: case GL_RGB8:
return default_rgb_format( screen, target, sample_count, bindings, return default_rgb_format( screen, target, sample_count, bindings);
geom_flags );
case GL_RGB12: case GL_RGB12:
case GL_RGB16: case GL_RGB16:
case GL_RGBA12: case GL_RGBA12:
case GL_RGBA16: case GL_RGBA16:
if (screen->is_format_supported( screen, PIPE_FORMAT_R16G16B16A16_UNORM, if (screen->is_format_supported( screen, PIPE_FORMAT_R16G16B16A16_UNORM,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags ))
return PIPE_FORMAT_R16G16B16A16_UNORM; return PIPE_FORMAT_R16G16B16A16_UNORM;
return default_rgba_format( screen, target, sample_count, bindings, return default_rgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_RGBA4: case GL_RGBA4:
case GL_RGBA2: case GL_RGBA2:
if (screen->is_format_supported( screen, PIPE_FORMAT_B4G4R4A4_UNORM, if (screen->is_format_supported( screen, PIPE_FORMAT_B4G4R4A4_UNORM,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags ))
return PIPE_FORMAT_B4G4R4A4_UNORM; return PIPE_FORMAT_B4G4R4A4_UNORM;
return default_rgba_format( screen, target, sample_count, bindings, return default_rgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_RGB5_A1: case GL_RGB5_A1:
if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM, if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags ))
return PIPE_FORMAT_B5G5R5A1_UNORM; return PIPE_FORMAT_B5G5R5A1_UNORM;
return default_rgba_format( screen, target, sample_count, bindings, return default_rgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_R3_G3_B2: case GL_R3_G3_B2:
if (screen->is_format_supported( screen, PIPE_FORMAT_B2G3R3_UNORM, if (screen->is_format_supported( screen, PIPE_FORMAT_B2G3R3_UNORM,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags ))
return PIPE_FORMAT_B2G3R3_UNORM; return PIPE_FORMAT_B2G3R3_UNORM;
/* Pass through. */ /* Pass through. */
case GL_RGB5: case GL_RGB5:
case GL_RGB4: case GL_RGB4:
if (screen->is_format_supported( screen, PIPE_FORMAT_B5G6R5_UNORM, if (screen->is_format_supported( screen, PIPE_FORMAT_B5G6R5_UNORM,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags ))
return PIPE_FORMAT_B5G6R5_UNORM; return PIPE_FORMAT_B5G6R5_UNORM;
if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM, if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags ))
return PIPE_FORMAT_B5G5R5A1_UNORM; return PIPE_FORMAT_B5G5R5A1_UNORM;
return default_rgba_format( screen, target, sample_count, bindings, return default_rgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_ALPHA12: case GL_ALPHA12:
case GL_ALPHA16: case GL_ALPHA16:
if (screen->is_format_supported( screen, PIPE_FORMAT_A16_UNORM, target, if (screen->is_format_supported( screen, PIPE_FORMAT_A16_UNORM, target,
sample_count, bindings, geom_flags )) sample_count, bindings))
return PIPE_FORMAT_A16_UNORM; return PIPE_FORMAT_A16_UNORM;
/* Pass through. */ /* Pass through. */
case GL_ALPHA: case GL_ALPHA:
@ -616,15 +596,14 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_ALPHA8: case GL_ALPHA8:
case GL_COMPRESSED_ALPHA: case GL_COMPRESSED_ALPHA:
if (screen->is_format_supported( screen, PIPE_FORMAT_A8_UNORM, target, if (screen->is_format_supported( screen, PIPE_FORMAT_A8_UNORM, target,
sample_count, bindings, geom_flags )) sample_count, bindings))
return PIPE_FORMAT_A8_UNORM; return PIPE_FORMAT_A8_UNORM;
return default_rgba_format( screen, target, sample_count, bindings, return default_rgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_LUMINANCE12: case GL_LUMINANCE12:
case GL_LUMINANCE16: case GL_LUMINANCE16:
if (screen->is_format_supported( screen, PIPE_FORMAT_L16_UNORM, target, if (screen->is_format_supported( screen, PIPE_FORMAT_L16_UNORM, target,
sample_count, bindings, geom_flags )) sample_count, bindings))
return PIPE_FORMAT_L16_UNORM; return PIPE_FORMAT_L16_UNORM;
/* Pass through. */ /* Pass through. */
case 1: case 1:
@ -632,16 +611,15 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_LUMINANCE4: case GL_LUMINANCE4:
case GL_LUMINANCE8: case GL_LUMINANCE8:
if (screen->is_format_supported( screen, PIPE_FORMAT_L8_UNORM, target, if (screen->is_format_supported( screen, PIPE_FORMAT_L8_UNORM, target,
sample_count, bindings, geom_flags )) sample_count, bindings))
return PIPE_FORMAT_L8_UNORM; return PIPE_FORMAT_L8_UNORM;
return default_rgba_format( screen, target, sample_count, bindings, return default_rgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_LUMINANCE12_ALPHA4: case GL_LUMINANCE12_ALPHA4:
case GL_LUMINANCE12_ALPHA12: case GL_LUMINANCE12_ALPHA12:
case GL_LUMINANCE16_ALPHA16: case GL_LUMINANCE16_ALPHA16:
if (screen->is_format_supported( screen, PIPE_FORMAT_L16A16_UNORM, target, if (screen->is_format_supported( screen, PIPE_FORMAT_L16A16_UNORM, target,
sample_count, bindings, geom_flags )) sample_count, bindings))
return PIPE_FORMAT_L16A16_UNORM; return PIPE_FORMAT_L16A16_UNORM;
/* Pass through. */ /* Pass through. */
case 2: case 2:
@ -649,25 +627,23 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_LUMINANCE6_ALPHA2: case GL_LUMINANCE6_ALPHA2:
case GL_LUMINANCE8_ALPHA8: case GL_LUMINANCE8_ALPHA8:
if (screen->is_format_supported( screen, PIPE_FORMAT_L8A8_UNORM, target, if (screen->is_format_supported( screen, PIPE_FORMAT_L8A8_UNORM, target,
sample_count, bindings, geom_flags )) sample_count, bindings))
return PIPE_FORMAT_L8A8_UNORM; return PIPE_FORMAT_L8A8_UNORM;
return default_rgba_format( screen, target, sample_count, bindings, return default_rgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_LUMINANCE4_ALPHA4: case GL_LUMINANCE4_ALPHA4:
if (screen->is_format_supported( screen, PIPE_FORMAT_L4A4_UNORM, target, if (screen->is_format_supported( screen, PIPE_FORMAT_L4A4_UNORM, target,
sample_count, bindings, geom_flags )) sample_count, bindings))
return PIPE_FORMAT_L4A4_UNORM; return PIPE_FORMAT_L4A4_UNORM;
if (screen->is_format_supported( screen, PIPE_FORMAT_L8A8_UNORM, target, if (screen->is_format_supported( screen, PIPE_FORMAT_L8A8_UNORM, target,
sample_count, bindings, geom_flags )) sample_count, bindings))
return PIPE_FORMAT_L8A8_UNORM; return PIPE_FORMAT_L8A8_UNORM;
return default_rgba_format( screen, target, sample_count, bindings, return default_rgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_INTENSITY12: case GL_INTENSITY12:
case GL_INTENSITY16: case GL_INTENSITY16:
if (screen->is_format_supported( screen, PIPE_FORMAT_I16_UNORM, target, if (screen->is_format_supported( screen, PIPE_FORMAT_I16_UNORM, target,
sample_count, bindings, geom_flags )) sample_count, bindings))
return PIPE_FORMAT_I16_UNORM; return PIPE_FORMAT_I16_UNORM;
/* Pass through. */ /* Pass through. */
case GL_INTENSITY: case GL_INTENSITY:
@ -675,18 +651,17 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_INTENSITY8: case GL_INTENSITY8:
case GL_COMPRESSED_INTENSITY: case GL_COMPRESSED_INTENSITY:
if (screen->is_format_supported( screen, PIPE_FORMAT_I8_UNORM, target, if (screen->is_format_supported( screen, PIPE_FORMAT_I8_UNORM, target,
sample_count, bindings, geom_flags )) sample_count, bindings))
return PIPE_FORMAT_I8_UNORM; return PIPE_FORMAT_I8_UNORM;
return default_rgba_format( screen, target, sample_count, bindings, return default_rgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_YCBCR_MESA: case GL_YCBCR_MESA:
if (screen->is_format_supported(screen, PIPE_FORMAT_UYVY, target, if (screen->is_format_supported(screen, PIPE_FORMAT_UYVY, target,
sample_count, bindings, geom_flags)) { sample_count, bindings)) {
return PIPE_FORMAT_UYVY; return PIPE_FORMAT_UYVY;
} }
if (screen->is_format_supported(screen, PIPE_FORMAT_YUYV, target, if (screen->is_format_supported(screen, PIPE_FORMAT_YUYV, target,
sample_count, bindings, geom_flags)) { sample_count, bindings)) {
return PIPE_FORMAT_YUYV; return PIPE_FORMAT_YUYV;
} }
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
@ -696,39 +671,33 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
if (bindings & ~PIPE_BIND_SAMPLER_VIEW) if (bindings & ~PIPE_BIND_SAMPLER_VIEW)
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
else if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGB, else if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGB,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags))
return PIPE_FORMAT_DXT1_RGB; return PIPE_FORMAT_DXT1_RGB;
else else
return default_rgb_format(screen, target, sample_count, bindings, return default_rgb_format(screen, target, sample_count, bindings);
geom_flags);
case GL_COMPRESSED_RGBA: case GL_COMPRESSED_RGBA:
/* can only sample from compressed formats */ /* can only sample from compressed formats */
if (bindings & ~PIPE_BIND_SAMPLER_VIEW) if (bindings & ~PIPE_BIND_SAMPLER_VIEW)
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
else if (screen->is_format_supported(screen, PIPE_FORMAT_DXT3_RGBA, else if (screen->is_format_supported(screen, PIPE_FORMAT_DXT3_RGBA,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags))
return PIPE_FORMAT_DXT3_RGBA; return PIPE_FORMAT_DXT3_RGBA;
else else
return default_rgba_format(screen, target, sample_count, bindings, return default_rgba_format(screen, target, sample_count, bindings);
geom_flags);
case GL_RGB_S3TC: case GL_RGB_S3TC:
case GL_RGB4_S3TC: case GL_RGB4_S3TC:
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGB, if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGB,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags))
return PIPE_FORMAT_DXT1_RGB; return PIPE_FORMAT_DXT1_RGB;
else else
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGBA, if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGBA,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags))
return PIPE_FORMAT_DXT1_RGBA; return PIPE_FORMAT_DXT1_RGBA;
else else
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
@ -737,16 +706,14 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_RGBA4_S3TC: case GL_RGBA4_S3TC:
case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_DXT3_RGBA, if (screen->is_format_supported(screen, PIPE_FORMAT_DXT3_RGBA,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags))
return PIPE_FORMAT_DXT3_RGBA; return PIPE_FORMAT_DXT3_RGBA;
else else
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_DXT5_RGBA, if (screen->is_format_supported(screen, PIPE_FORMAT_DXT5_RGBA,
target, sample_count, bindings, target, sample_count, bindings))
geom_flags))
return PIPE_FORMAT_DXT5_RGBA; return PIPE_FORMAT_DXT5_RGBA;
else else
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
@ -760,20 +727,20 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_DEPTH_COMPONENT16: case GL_DEPTH_COMPONENT16:
if (screen->is_format_supported(screen, PIPE_FORMAT_Z16_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_Z16_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_Z16_UNORM; return PIPE_FORMAT_Z16_UNORM;
/* fall-through */ /* fall-through */
case GL_DEPTH_COMPONENT24: case GL_DEPTH_COMPONENT24:
if (screen->is_format_supported(screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED, if (screen->is_format_supported(screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED,
target, sample_count, bindings, geom_flags)) target, sample_count, bindings))
return PIPE_FORMAT_Z24_UNORM_S8_USCALED; return PIPE_FORMAT_Z24_UNORM_S8_USCALED;
if (screen->is_format_supported(screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM, if (screen->is_format_supported(screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM,
target, sample_count, bindings, geom_flags)) target, sample_count, bindings))
return PIPE_FORMAT_S8_USCALED_Z24_UNORM; return PIPE_FORMAT_S8_USCALED_Z24_UNORM;
/* fall-through */ /* fall-through */
case GL_DEPTH_COMPONENT32: case GL_DEPTH_COMPONENT32:
if (screen->is_format_supported(screen, PIPE_FORMAT_Z32_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_Z32_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_Z32_UNORM; return PIPE_FORMAT_Z32_UNORM;
/* fall-through */ /* fall-through */
case GL_DEPTH_COMPONENT: case GL_DEPTH_COMPONENT:
@ -785,7 +752,7 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
PIPE_FORMAT_Z16_UNORM PIPE_FORMAT_Z16_UNORM
}; };
return find_supported_format(screen, formats, Elements(formats), return find_supported_format(screen, formats, Elements(formats),
target, sample_count, bindings, geom_flags); target, sample_count, bindings);
} }
case GL_STENCIL_INDEX: case GL_STENCIL_INDEX:
@ -800,7 +767,7 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
PIPE_FORMAT_S8_USCALED_Z24_UNORM PIPE_FORMAT_S8_USCALED_Z24_UNORM
}; };
return find_supported_format(screen, formats, Elements(formats), return find_supported_format(screen, formats, Elements(formats),
target, sample_count, bindings, geom_flags); target, sample_count, bindings);
} }
case GL_DEPTH_STENCIL_EXT: case GL_DEPTH_STENCIL_EXT:
@ -811,23 +778,21 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
PIPE_FORMAT_S8_USCALED_Z24_UNORM PIPE_FORMAT_S8_USCALED_Z24_UNORM
}; };
return find_supported_format(screen, formats, Elements(formats), return find_supported_format(screen, formats, Elements(formats),
target, sample_count, bindings, geom_flags); target, sample_count, bindings);
} }
case GL_SRGB_EXT: case GL_SRGB_EXT:
case GL_SRGB8_EXT: case GL_SRGB8_EXT:
case GL_SRGB_ALPHA_EXT: case GL_SRGB_ALPHA_EXT:
case GL_SRGB8_ALPHA8_EXT: case GL_SRGB8_ALPHA8_EXT:
return default_srgba_format( screen, target, sample_count, bindings, return default_srgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_COMPRESSED_SRGB_EXT: case GL_COMPRESSED_SRGB_EXT:
case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_SRGB, target, if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_SRGB, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_DXT1_SRGB; return PIPE_FORMAT_DXT1_SRGB;
return default_srgba_format( screen, target, sample_count, bindings, return default_srgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
return PIPE_FORMAT_DXT1_SRGBA; return PIPE_FORMAT_DXT1_SRGBA;
@ -835,10 +800,9 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_COMPRESSED_SRGB_ALPHA_EXT: case GL_COMPRESSED_SRGB_ALPHA_EXT:
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_DXT3_SRGBA, target, if (screen->is_format_supported(screen, PIPE_FORMAT_DXT3_SRGBA, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_DXT3_SRGBA; return PIPE_FORMAT_DXT3_SRGBA;
return default_srgba_format( screen, target, sample_count, bindings, return default_srgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
return PIPE_FORMAT_DXT5_SRGBA; return PIPE_FORMAT_DXT5_SRGBA;
@ -848,89 +812,87 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_COMPRESSED_SLUMINANCE_EXT: case GL_COMPRESSED_SLUMINANCE_EXT:
case GL_COMPRESSED_SLUMINANCE_ALPHA_EXT: case GL_COMPRESSED_SLUMINANCE_ALPHA_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_L8A8_SRGB, target, if (screen->is_format_supported(screen, PIPE_FORMAT_L8A8_SRGB, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_L8A8_SRGB; return PIPE_FORMAT_L8A8_SRGB;
return default_srgba_format( screen, target, sample_count, bindings, return default_srgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_SLUMINANCE_EXT: case GL_SLUMINANCE_EXT:
case GL_SLUMINANCE8_EXT: case GL_SLUMINANCE8_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_L8_SRGB, target, if (screen->is_format_supported(screen, PIPE_FORMAT_L8_SRGB, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_L8_SRGB; return PIPE_FORMAT_L8_SRGB;
return default_srgba_format( screen, target, sample_count, bindings, return default_srgba_format( screen, target, sample_count, bindings);
geom_flags );
case GL_RED: case GL_RED:
case GL_R8: case GL_R8:
if (screen->is_format_supported(screen, PIPE_FORMAT_R8_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_R8_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_R8_UNORM; return PIPE_FORMAT_R8_UNORM;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_RG: case GL_RG:
case GL_RG8: case GL_RG8:
if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_R8G8_UNORM; return PIPE_FORMAT_R8G8_UNORM;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_R16: case GL_R16:
if (screen->is_format_supported(screen, PIPE_FORMAT_R16_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_R16_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_R16_UNORM; return PIPE_FORMAT_R16_UNORM;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_RG16: case GL_RG16:
if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_R16G16_UNORM; return PIPE_FORMAT_R16G16_UNORM;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_COMPRESSED_RED: case GL_COMPRESSED_RED:
case GL_COMPRESSED_RED_RGTC1: case GL_COMPRESSED_RED_RGTC1:
if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC1_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC1_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_RGTC1_UNORM; return PIPE_FORMAT_RGTC1_UNORM;
if (screen->is_format_supported(screen, PIPE_FORMAT_R8_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_R8_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_R8_UNORM; return PIPE_FORMAT_R8_UNORM;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_COMPRESSED_SIGNED_RED_RGTC1: case GL_COMPRESSED_SIGNED_RED_RGTC1:
if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC1_SNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC1_SNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_RGTC1_SNORM; return PIPE_FORMAT_RGTC1_SNORM;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_COMPRESSED_RG: case GL_COMPRESSED_RG:
case GL_COMPRESSED_RG_RGTC2: case GL_COMPRESSED_RG_RGTC2:
if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC2_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC2_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_RGTC2_UNORM; return PIPE_FORMAT_RGTC2_UNORM;
if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_R8G8_UNORM; return PIPE_FORMAT_R8G8_UNORM;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_COMPRESSED_SIGNED_RG_RGTC2: case GL_COMPRESSED_SIGNED_RG_RGTC2:
if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC2_SNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_RGTC2_SNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_RGTC2_SNORM; return PIPE_FORMAT_RGTC2_SNORM;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_COMPRESSED_LUMINANCE: case GL_COMPRESSED_LUMINANCE:
case GL_COMPRESSED_LUMINANCE_LATC1_EXT: case GL_COMPRESSED_LUMINANCE_LATC1_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_LATC1_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_LATC1_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_LATC1_UNORM; return PIPE_FORMAT_LATC1_UNORM;
if (screen->is_format_supported(screen, PIPE_FORMAT_L8_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_L8_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_L8_UNORM; return PIPE_FORMAT_L8_UNORM;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT: case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_LATC1_SNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_LATC1_SNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_LATC1_SNORM; return PIPE_FORMAT_LATC1_SNORM;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
@ -938,16 +900,16 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT: case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT:
case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI: case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI:
if (screen->is_format_supported(screen, PIPE_FORMAT_LATC2_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_LATC2_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_LATC2_UNORM; return PIPE_FORMAT_LATC2_UNORM;
if (screen->is_format_supported(screen, PIPE_FORMAT_L8A8_UNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_L8A8_UNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_L8A8_UNORM; return PIPE_FORMAT_L8A8_UNORM;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT: case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_LATC2_SNORM, target, if (screen->is_format_supported(screen, PIPE_FORMAT_LATC2_SNORM, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_LATC2_SNORM; return PIPE_FORMAT_LATC2_SNORM;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
@ -974,7 +936,7 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_LUMINANCE_ALPHA8I_EXT: case GL_LUMINANCE_ALPHA8I_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SSCALED, if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SSCALED,
target, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_R8G8B8A8_SSCALED; return PIPE_FORMAT_R8G8B8A8_SSCALED;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_RGBA16I_EXT: case GL_RGBA16I_EXT:
@ -985,7 +947,7 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_LUMINANCE_ALPHA16I_EXT: case GL_LUMINANCE_ALPHA16I_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_SSCALED, if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_SSCALED,
target, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_R16G16B16A16_SSCALED; return PIPE_FORMAT_R16G16B16A16_SSCALED;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
case GL_RGBA32I_EXT: case GL_RGBA32I_EXT:
@ -997,7 +959,7 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
/* xxx */ /* xxx */
if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_SSCALED, if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_SSCALED,
target, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_R32G32B32A32_SSCALED; return PIPE_FORMAT_R32G32B32A32_SSCALED;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
@ -1009,7 +971,7 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_LUMINANCE_ALPHA8UI_EXT: case GL_LUMINANCE_ALPHA8UI_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_USCALED, if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_USCALED,
target, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_R8G8B8A8_USCALED; return PIPE_FORMAT_R8G8B8A8_USCALED;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
@ -1021,7 +983,7 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_LUMINANCE_ALPHA16UI_EXT: case GL_LUMINANCE_ALPHA16UI_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_USCALED, if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_USCALED,
target, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_R16G16B16A16_USCALED; return PIPE_FORMAT_R16G16B16A16_USCALED;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;
@ -1033,7 +995,7 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_LUMINANCE_ALPHA32UI_EXT: case GL_LUMINANCE_ALPHA32UI_EXT:
if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_USCALED, if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_USCALED,
target, target,
sample_count, bindings, geom_flags)) sample_count, bindings))
return PIPE_FORMAT_R32G32B32A32_USCALED; return PIPE_FORMAT_R32G32B32A32_USCALED;
return PIPE_FORMAT_NONE; return PIPE_FORMAT_NONE;

View file

@ -87,7 +87,7 @@ st_render_mipmap(struct st_context *st,
/* XXX should probably kill this and always use util_gen_mipmap /* XXX should probably kill this and always use util_gen_mipmap
since this implements a sw fallback as well */ since this implements a sw fallback as well */
if (!screen->is_format_supported(screen, psv->format, psv->texture->target, if (!screen->is_format_supported(screen, psv->format, psv->texture->target,
0, PIPE_BIND_RENDER_TARGET, 0)) { 0, PIPE_BIND_RENDER_TARGET)) {
return FALSE; return FALSE;
} }

View file

@ -78,7 +78,7 @@ st_texture_create(struct st_context *st,
assert(format); assert(format);
assert(screen->is_format_supported(screen, format, target, 0, assert(screen->is_format_supported(screen, format, target, 0,
PIPE_BIND_SAMPLER_VIEW, 0)); PIPE_BIND_SAMPLER_VIEW));
memset(&pt, 0, sizeof(pt)); memset(&pt, 0, sizeof(pt));
pt.target = target; pt.target = target;