radeonsi/gfx10: implement si_is_format_supported

Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Nicolai Hähnle 2017-11-14 15:20:06 +01:00 committed by Marek Olšák
parent 0ffa2292b3
commit 3163db3ba4

View file

@ -2008,6 +2008,15 @@ static unsigned si_tex_dim(struct si_screen *sscreen, struct si_texture *tex,
static bool si_is_sampler_format_supported(struct pipe_screen *screen, enum pipe_format format)
{
struct si_screen *sscreen = (struct si_screen *)screen;
if (sscreen->info.chip_class >= GFX10) {
const struct gfx10_format *fmt = &gfx10_format_table[format];
if (!fmt->img_format || fmt->buffers_only)
return false;
return true;
}
const struct util_format_description *desc = util_format_description(format);
if (!desc)
return false;
@ -2136,6 +2145,7 @@ static unsigned si_is_vertex_format_supported(struct pipe_screen *screen,
enum pipe_format format,
unsigned usage)
{
struct si_screen *sscreen = (struct si_screen *)screen;
const struct util_format_description *desc;
int first_non_void;
unsigned data_format;
@ -2165,6 +2175,13 @@ static unsigned si_is_vertex_format_supported(struct pipe_screen *screen,
}
}
if (sscreen->info.chip_class >= GFX10) {
const struct gfx10_format *fmt = &gfx10_format_table[format];
if (!fmt->img_format || fmt->img_format >= 128)
return 0;
return usage;
}
first_non_void = util_format_get_first_non_void_channel(format);
data_format = si_translate_buffer_dataformat(screen, desc, first_non_void);
if (data_format == V_008F0C_BUF_DATA_FORMAT_INVALID)