mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-18 00:20:27 +01:00
r300g: advertise MSAA support for the RGB10_A2 format on r500
It seems to be working just fine.
This commit is contained in:
parent
5fc83101fb
commit
e102b665e6
2 changed files with 47 additions and 12 deletions
|
|
@ -351,6 +351,32 @@ static int r300_get_video_param(struct pipe_screen *screen,
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether the format matches:
|
||||
* PIPE_FORMAT_?10?10?10?2_UNORM
|
||||
*/
|
||||
static INLINE boolean
|
||||
util_format_is_rgba1010102_variant(const struct util_format_description *desc)
|
||||
{
|
||||
static const unsigned size[4] = {10, 10, 10, 2};
|
||||
unsigned chan;
|
||||
|
||||
if (desc->block.width != 1 ||
|
||||
desc->block.height != 1 ||
|
||||
desc->block.bits != 32)
|
||||
return FALSE;
|
||||
|
||||
for (chan = 0; chan < 4; ++chan) {
|
||||
if(desc->channel[chan].type != UTIL_FORMAT_TYPE_UNSIGNED &&
|
||||
desc->channel[chan].type != UTIL_FORMAT_TYPE_VOID)
|
||||
return FALSE;
|
||||
if (desc->channel[chan].size != size[chan])
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static boolean r300_is_format_supported(struct pipe_screen* screen,
|
||||
enum pipe_format format,
|
||||
enum pipe_texture_target target,
|
||||
|
|
@ -383,6 +409,7 @@ static boolean r300_is_format_supported(struct pipe_screen* screen,
|
|||
format == PIPE_FORMAT_R16G16_FLOAT ||
|
||||
format == PIPE_FORMAT_R16G16B16_FLOAT ||
|
||||
format == PIPE_FORMAT_R16G16B16A16_FLOAT;
|
||||
const struct util_format_description *desc;
|
||||
|
||||
if (!util_format_is_supported(format, usage))
|
||||
return FALSE;
|
||||
|
|
@ -410,16 +437,23 @@ static boolean r300_is_format_supported(struct pipe_screen* screen,
|
|||
PIPE_BIND_SCANOUT)) {
|
||||
return FALSE;
|
||||
}
|
||||
/* Only allow depth/stencil, RGBA8, RGBA16F */
|
||||
if (!util_format_is_depth_or_stencil(format) &&
|
||||
!util_format_is_rgba8_variant(
|
||||
util_format_description(format)) &&
|
||||
format != PIPE_FORMAT_R16G16B16A16_FLOAT) {
|
||||
return FALSE;
|
||||
}
|
||||
/* RGBA16F AA is only supported on R500. */
|
||||
if (format == PIPE_FORMAT_R16G16B16A16_FLOAT && !is_r500) {
|
||||
return FALSE;
|
||||
|
||||
desc = util_format_description(format);
|
||||
|
||||
if (is_r500) {
|
||||
/* Only allow depth/stencil, RGBA8, RGBA1010102, RGBA16F. */
|
||||
if (!util_format_is_depth_or_stencil(format) &&
|
||||
!util_format_is_rgba8_variant(desc) &&
|
||||
!util_format_is_rgba1010102_variant(desc) &&
|
||||
format != PIPE_FORMAT_R16G16B16A16_FLOAT) {
|
||||
return FALSE;
|
||||
}
|
||||
} else {
|
||||
/* Only allow depth/stencil, RGBA8. */
|
||||
if (!util_format_is_depth_or_stencil(format) &&
|
||||
!util_format_is_rgba8_variant(desc)) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -464,14 +464,15 @@ static void r300_tex_print_info(struct r300_resource *tex,
|
|||
{
|
||||
fprintf(stderr,
|
||||
"r300: %s: Macro: %s, Micro: %s, Pitch: %i, Dim: %ix%ix%i, "
|
||||
"LastLevel: %i, Size: %i, Format: %s\n",
|
||||
"LastLevel: %i, Size: %i, Format: %s, Samples: %i\n",
|
||||
func,
|
||||
tex->tex.macrotile[0] ? "YES" : " NO",
|
||||
tex->tex.microtile ? "YES" : " NO",
|
||||
r300_stride_to_width(tex->b.b.format, tex->tex.stride_in_bytes[0]),
|
||||
tex->b.b.width0, tex->b.b.height0, tex->b.b.depth0,
|
||||
tex->b.b.last_level, tex->tex.size_in_bytes,
|
||||
util_format_short_name(tex->b.b.format));
|
||||
util_format_short_name(tex->b.b.format),
|
||||
tex->b.b.nr_samples);
|
||||
}
|
||||
|
||||
void r300_texture_desc_init(struct r300_screen *rscreen,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue