tu: Remove builtin border color logic

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34786>
This commit is contained in:
Danylo Piliaiev 2025-05-01 15:11:52 +02:00 committed by Marge Bot
parent a1cf7054d9
commit 3691694933
4 changed files with 7 additions and 18 deletions

View file

@ -1543,10 +1543,10 @@ tu6_init_static_regs(struct tu_device *dev, struct tu_cs *cs)
tu_cs_emit_regs(cs,
A6XX_SP_TP_BORDER_COLOR_BASE_ADDR(.bo = dev->global_bo,
.bo_offset = gb_offset(bcolor_builtin)));
.bo_offset = gb_offset(bcolor)));
tu_cs_emit_regs(cs,
A6XX_SP_PS_TP_BORDER_COLOR_BASE_ADDR(.bo = dev->global_bo,
.bo_offset = gb_offset(bcolor_builtin)));
.bo_offset = gb_offset(bcolor)));
if (CHIP == A7XX) {
tu_cs_emit_regs(cs, TPL1_BICUBIC_WEIGHTS_TABLE_0(CHIP, 0),

View file

@ -2689,11 +2689,6 @@ tu_CreateDevice(VkPhysicalDevice physicalDevice,
global->dbg_gmem_taken_loads = 0;
global->dbg_gmem_total_stores = 0;
global->dbg_gmem_taken_stores = 0;
for (int i = 0; i < TU_BORDER_COLOR_BUILTIN; i++) {
VkClearColorValue border_color = vk_border_color_value((VkBorderColor) i);
tu6_pack_border_color(&global->bcolor_builtin[i], &border_color,
vk_border_color_is_int((VkBorderColor) i));
}
/* initialize to ones so ffs can be used to find unused slots */
BITSET_ONES(device->custom_border_color);

View file

@ -34,7 +34,6 @@
#define TU_MAX_QUEUE_FAMILIES 1
#define TU_BORDER_COLOR_COUNT 4096
#define TU_BORDER_COLOR_BUILTIN 6
#define TU_BLIT_SHADER_SIZE 4096
@ -261,8 +260,7 @@ struct tu6_global
volatile uint32_t userspace_fence;
uint32_t _pad5;
/* note: larger global bo will be used for customBorderColors */
struct bcolor_entry bcolor_builtin[TU_BORDER_COLOR_BUILTIN], bcolor[];
struct bcolor_entry bcolor[];
};
#define gb_offset(member) offsetof(struct tu6_global, member)
#define global_iova(cmd, member) ((cmd)->device->global_bo->iova + gb_offset(member))

View file

@ -33,10 +33,6 @@ tu_CreateSampler(VkDevice _device,
const struct VkSamplerYcbcrConversionInfo *ycbcr_conversion =
vk_find_struct_const(pCreateInfo->pNext, SAMPLER_YCBCR_CONVERSION_INFO);
/* for non-custom border colors, the VK enum is translated directly to an offset in
* the border color buffer. custom border colors are located immediately after the
* builtin colors, and thus an offset of TU_BORDER_COLOR_BUILTIN is added.
*/
uint32_t border_color = (unsigned) pCreateInfo->borderColor;
if (vk_border_color_is_custom(pCreateInfo->borderColor)) {
mtx_lock(&device->mutex);
@ -61,7 +57,6 @@ tu_CreateSampler(VkDevice _device,
tu6_pack_border_color(
&device->global_bo_map->bcolor[border_color], &color,
pCreateInfo->borderColor == VK_BORDER_COLOR_INT_CUSTOM_EXT);
border_color += TU_BORDER_COLOR_BUILTIN;
} else {
fast_border_color_enable = true;
switch (pCreateInfo->borderColor) {
@ -145,9 +140,10 @@ tu_DestroySampler(VkDevice _device,
if (!sampler)
return;
border_color = (sampler->descriptor[2] & A6XX_TEX_SAMP_2_BCOLOR__MASK) >> A6XX_TEX_SAMP_2_BCOLOR__SHIFT;
if (border_color >= TU_BORDER_COLOR_BUILTIN) {
border_color -= TU_BORDER_COLOR_BUILTIN;
bool fast_border_color =
(sampler->descriptor[2] & A6XX_TEX_SAMP_2_FASTBORDERCOLOREN) != 0;
if (!fast_border_color) {
border_color = (sampler->descriptor[2] & A6XX_TEX_SAMP_2_BCOLOR__MASK) >> A6XX_TEX_SAMP_2_BCOLOR__SHIFT;
/* if the sampler had a custom border color, free it. TODO: no lock */
mtx_lock(&device->mutex);
assert(!BITSET_TEST(device->custom_border_color, border_color));