From 497bac61c9c2403f48bdcbb13632d73b797c4ccb Mon Sep 17 00:00:00 2001 From: Matt Borgerson Date: Fri, 26 Jul 2024 17:21:01 -0700 Subject: [PATCH] nv2a/vk: Ensure border color type matches format type --- hw/xbox/nv2a/pgraph/vk/texture.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/hw/xbox/nv2a/pgraph/vk/texture.c b/hw/xbox/nv2a/pgraph/vk/texture.c index 70fc9c7023..011cfc0cd8 100644 --- a/hw/xbox/nv2a/pgraph/vk/texture.c +++ b/hw/xbox/nv2a/pgraph/vk/texture.c @@ -1207,14 +1207,19 @@ static void create_texture(PGRAPHState *pg, int texture_idx) } else { // FIXME: Handle custom color in shader if (border_color_pack32 == 0x00000000) { - vk_border_color = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK; + vk_border_color = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK; } else if (border_color_pack32 == 0xff000000) { - vk_border_color = VK_BORDER_COLOR_INT_OPAQUE_BLACK; + vk_border_color = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK; } else { - vk_border_color = VK_BORDER_COLOR_INT_OPAQUE_WHITE; + vk_border_color = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE; } } + if (vkf.vk_format == VK_FORMAT_R32_UINT) { + // Border color type must match sampled type + vk_border_color = VK_BORDER_COLOR_INT_OPAQUE_BLACK; + } + uint32_t filter = pgraph_reg_r(pg, NV_PGRAPH_TEXFILTER0 + texture_idx * 4); if (filter & NV_PGRAPH_TEXFILTER0_ASIGNED) NV2A_UNIMPLEMENTED("NV_PGRAPH_TEXFILTER0_ASIGNED");