diff --git a/src/imagination/vulkan/pvr_border.c b/src/imagination/vulkan/pvr_border.c index 6f790c58516..2e1c6b62be2 100644 --- a/src/imagination/vulkan/pvr_border.c +++ b/src/imagination/vulkan/pvr_border.c @@ -50,7 +50,8 @@ static_assert(sizeof(struct pvr_border_color_table_value) == "struct pvr_border_color_table_value must be 4 x u32"); struct pvr_border_color_table_entry { - struct pvr_border_color_table_value values[PVR_TEX_FORMAT_COUNT * 2]; + struct pvr_border_color_table_value values[PVR_TEX_FORMAT_COUNT]; + struct pvr_border_color_table_value compressed_values[PVR_TEX_FORMAT_COUNT]; } PACKED; static inline void pvr_border_color_table_pack_single( @@ -95,6 +96,7 @@ static inline void pvr_border_color_table_pack_single_compressed( struct pvr_border_color_table_value *const dst, const union pipe_color_union *const color, const struct pvr_tex_format_compressed_description *const pvr_tex_fmt_desc, + const bool is_int, const struct pvr_device_info *const dev_info) { if (PVR_HAS_FEATURE(dev_info, tpu_border_colour_enhanced)) { @@ -104,7 +106,7 @@ static inline void pvr_border_color_table_pack_single_compressed( pvr_border_color_table_pack_single(dst, color, pvr_tex_fmt_desc_simple, - false, + is_int, dev_info); return; } @@ -146,28 +148,21 @@ pvr_border_color_table_fill_entry(struct pvr_border_color_table *const table, { struct pvr_border_color_table_entry *const entries = table->table->bo->map; struct pvr_border_color_table_entry *const entry = &entries[index]; - uint32_t tex_format = 0; - for (; tex_format < PVR_TEX_FORMAT_COUNT; tex_format++) { - if (!pvr_tex_format_is_supported(tex_format)) - continue; - - pvr_border_color_table_pack_single( - &entry->values[tex_format], - color, - pvr_get_tex_format_description(tex_format), - is_int, - dev_info); + pvr_foreach_supported_tex_format (tex_format, desc) { + pvr_border_color_table_pack_single(&entry->values[tex_format], + color, + desc, + is_int, + dev_info); } - for (; tex_format < PVR_TEX_FORMAT_COUNT * 2; tex_format++) { - if (!pvr_tex_format_compressed_is_supported(tex_format)) - continue; - + pvr_foreach_supported_tex_format_compressed (tex_format, desc) { pvr_border_color_table_pack_single_compressed( - &entry->values[tex_format], + &entry->compressed_values[tex_format], color, - pvr_get_tex_format_compressed_description(tex_format), + desc, + is_int, dev_info); } } diff --git a/src/imagination/vulkan/pvr_formats.c b/src/imagination/vulkan/pvr_formats.c index b743b47ce83..d09b9015b48 100644 --- a/src/imagination/vulkan/pvr_formats.c +++ b/src/imagination/vulkan/pvr_formats.c @@ -341,29 +341,15 @@ pvr_get_tex_format_description(const uint32_t tex_format) return NULL; } -bool pvr_tex_format_compressed_is_supported(uint32_t tex_format) +bool pvr_tex_format_compressed_is_supported(const uint32_t tex_format) { - /* In some contexts, the sequence of compressed tex format ids are appended - * to the normal tex format ids; in that case, we need to remove that offset - * before lookup. - */ - if (tex_format >= PVR_TEX_FORMAT_COUNT) - tex_format -= PVR_TEX_FORMAT_COUNT; - return tex_format < ARRAY_SIZE(pvr_tex_format_compressed_table) && pvr_tex_format_compressed_table[tex_format].present; } const struct pvr_tex_format_compressed_description * -pvr_get_tex_format_compressed_description(uint32_t tex_format) +pvr_get_tex_format_compressed_description(const uint32_t tex_format) { - /* In some contexts, the sequence of compressed tex format ids are appended - * to the normal tex format ids; in that case, we need to remove that offset - * before lookup. - */ - if (tex_format >= PVR_TEX_FORMAT_COUNT) - tex_format -= PVR_TEX_FORMAT_COUNT; - if (pvr_tex_format_compressed_is_supported(tex_format)) return &pvr_tex_format_compressed_table[tex_format].desc; diff --git a/src/imagination/vulkan/pvr_formats.h b/src/imagination/vulkan/pvr_formats.h index 0f4da217d62..a16ba3dff67 100644 --- a/src/imagination/vulkan/pvr_formats.h +++ b/src/imagination/vulkan/pvr_formats.h @@ -234,7 +234,7 @@ const struct pvr_tex_format_description * pvr_get_tex_format_description(uint32_t tex_format); #define pvr_foreach_supported_tex_format_(format) \ - for (enum PVRX(TEXSTATE_FORMAT) format = 0; format < PVR_TEX_FORMAT_COUNT; \ + for (enum ROGUE_TEXSTATE_FORMAT format = 0; format < PVR_TEX_FORMAT_COUNT; \ format++) \ if (pvr_tex_format_is_supported(format)) @@ -251,7 +251,7 @@ const struct pvr_tex_format_compressed_description * pvr_get_tex_format_compressed_description(uint32_t tex_format); #define pvr_foreach_supported_tex_format_compressed_(format) \ - for (enum PVRX(TEXSTATE_FORMAT_COMPRESSED) format = 0; \ + for (enum ROGUE_TEXSTATE_FORMAT_COMPRESSED format = 0; \ format < PVR_TEX_FORMAT_COUNT; \ format++) \ if (pvr_tex_format_compressed_is_supported(format))