From 4b424e9b868e85f8f69c91327f1a6e133ede931f Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Fri, 20 Jun 2025 23:32:26 +0200 Subject: [PATCH] etnaviv: use TX_SEAMLESS_CUBE to determine seamless cubemap support I have no idea why the HWDB includes two distinct bits that seem to relate to seamless cubemap support. However, the only cores where both bits disagree are NPUs (which don't have any samplers) and the GC880, which is currently special cased in the driver. Use TX_SEAMLESS_CUBE to determine seamless cubemap support, which seems to accurately reflect the real support status. Signed-off-by: Lucas Stach Reviewed-by: Christian Gmeiner Part-of: --- src/etnaviv/hwdb/etna_hwdb.c | 2 +- src/gallium/drivers/etnaviv/etnaviv_internal.h | 2 -- src/gallium/drivers/etnaviv/etnaviv_screen.c | 7 ++----- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/etnaviv/hwdb/etna_hwdb.c b/src/etnaviv/hwdb/etna_hwdb.c index bdf42e7af40..9115a9699b7 100644 --- a/src/etnaviv/hwdb/etna_hwdb.c +++ b/src/etnaviv/hwdb/etna_hwdb.c @@ -69,7 +69,7 @@ etna_query_feature_db(struct etna_core_info *info) ETNA_FEATURE(REG_SuperTiledTexture, SUPERTILED_TEXTURE); ETNA_FEATURE(REG_LogicOp, LOGIC_OP); ETNA_FEATURE(REG_Halti1, HALTI1); - ETNA_FEATURE(REG_SeamlessCubeMap, SEAMLESS_CUBE_MAP); + ETNA_FEATURE(TX_SEAMLESS_CUBE, SEAMLESS_CUBE_MAP); ETNA_FEATURE(REG_LineLoop, LINE_LOOP); ETNA_FEATURE(REG_TextureTileStatus, TEXTURE_TILED_READ); ETNA_FEATURE(REG_BugFixes8, BUG_FIXES8); diff --git a/src/gallium/drivers/etnaviv/etnaviv_internal.h b/src/gallium/drivers/etnaviv/etnaviv_internal.h index 98ab00cdb11..da92eea73e2 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_internal.h +++ b/src/gallium/drivers/etnaviv/etnaviv_internal.h @@ -89,8 +89,6 @@ struct etna_specs { unsigned tex_astc : 1; /* has BLT engine instead of RS */ unsigned use_blt : 1; - /* supports seamless cube map */ - unsigned seamless_cube_map : 1; /* number of bits per TS tile */ unsigned bits_per_tile; /* clear value for TS (dependent on bits_per_tile) */ diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index fd632ed095c..5d446697ed9 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -277,8 +277,8 @@ etna_init_screen_caps(struct etna_screen *screen) caps->min_texel_offset = -8; caps->max_texel_offset = 7; - caps->seamless_cube_map = screen->specs.seamless_cube_map; - caps->seamless_cube_map_per_texture = screen->specs.seamless_cube_map; + caps->seamless_cube_map_per_texture = + caps->seamless_cube_map = VIV_FEATURE(screen, ETNA_FEATURE_SEAMLESS_CUBE_MAP); /* Render targets. */ caps->max_render_targets = VIV_FEATURE(screen, ETNA_FEATURE_HALTI2) ? @@ -826,9 +826,6 @@ etna_get_specs(struct etna_screen *screen) VIV_FEATURE(screen, ETNA_FEATURE_SH_NO_ONECONST_LIMIT); screen->specs.v4_compression = VIV_FEATURE(screen, ETNA_FEATURE_V4_COMPRESSION); - screen->specs.seamless_cube_map = - (screen->info->model != 0x880) && /* Seamless cubemap is broken on GC880? */ - VIV_FEATURE(screen, ETNA_FEATURE_SEAMLESS_CUBE_MAP); if (screen->info->halti >= 5) { /* GC7000 - this core must load shaders from memory. */