etnaviv: Switch to etna_core_info

Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28574>
This commit is contained in:
Christian Gmeiner
2024-04-01 08:44:58 +02:00
committed by Marge Bot
parent d3f8e3ee42
commit f4c90d4316
6 changed files with 18 additions and 29 deletions
+2 -2
View File
@@ -448,7 +448,7 @@ etna_emit_state(struct etna_context *ctx)
if (unlikely(dirty & (ETNA_DIRTY_FRAMEBUFFER))) {
/*0140C*/ EMIT_STATE(PE_DEPTH_NORMALIZE, ctx->framebuffer.PE_DEPTH_NORMALIZE);
if (screen->specs.halti < 0 || screen->model == 0x880) {
if (screen->specs.halti < 0 || screen->info->model == 0x880) {
/*01410*/ EMIT_STATE_RELOC(PE_DEPTH_ADDR, &ctx->framebuffer.PE_DEPTH_ADDR);
}
@@ -485,7 +485,7 @@ etna_emit_state(struct etna_context *ctx)
/*0142C*/ EMIT_STATE(PE_COLOR_FORMAT, val);
}
if (unlikely(dirty & (ETNA_DIRTY_FRAMEBUFFER))) {
if (screen->specs.halti >= 0 && screen->model != 0x880) {
if (screen->specs.halti >= 0 && screen->info->model != 0x880) {
/*01434*/ EMIT_STATE(PE_COLOR_STRIDE, ctx->framebuffer.PE_COLOR_STRIDE);
/*01454*/ EMIT_STATE(PE_HDEPTH_CONTROL, ctx->framebuffer.PE_HDEPTH_CONTROL);
/*01460*/ EMIT_STATE_RELOC(PE_PIPE_COLOR_ADDR(0), &ctx->framebuffer.PE_PIPE_COLOR_ADDR[0]);
+10 -21
View File
@@ -124,8 +124,8 @@ etna_screen_get_name(struct pipe_screen *pscreen)
struct etna_screen *priv = etna_screen(pscreen);
static char buffer[128];
snprintf(buffer, sizeof(buffer), "Vivante GC%x rev %04x", priv->model,
priv->revision);
snprintf(buffer, sizeof(buffer), "Vivante GC%x rev %04x", priv->info->model,
priv->info->revision);
return buffer;
}
@@ -794,15 +794,15 @@ etna_determine_uniform_limits(struct etna_screen *screen)
* gcmCONFIGUREUNIFORMS in the Vivante kernel driver file
* drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h.
*/
if (screen->model == chipModel_GC2000 &&
(screen->revision == 0x5118 || screen->revision == 0x5140)) {
if (screen->info->model == chipModel_GC2000 &&
(screen->info->revision == 0x5118 || screen->info->revision == 0x5140)) {
screen->specs.max_vs_uniforms = 256;
screen->specs.max_ps_uniforms = 64;
} else if (screen->specs.num_constants == 320) {
screen->specs.max_vs_uniforms = 256;
screen->specs.max_ps_uniforms = 64;
} else if (screen->specs.num_constants > 256 &&
screen->model == chipModel_GC1000) {
screen->info->model == chipModel_GC1000) {
/* All GC1000 series chips can only support 64 uniforms for ps on non-unified const mode. */
screen->specs.max_vs_uniforms = 256;
screen->specs.max_ps_uniforms = 64;
@@ -832,7 +832,7 @@ etna_determine_sampler_limits(struct etna_screen *screen)
screen->specs.vertex_sampler_count = 4;
}
if (screen->model == 0x400)
if (screen->info->model == 0x400)
screen->specs.vertex_sampler_count = 0;
}
@@ -963,13 +963,13 @@ etna_get_specs(struct etna_screen *screen)
screen->specs.bits_per_tile == 4 ? 0x11111111 : 0x55555555;
screen->specs.vs_need_z_div =
screen->model < 0x1000 && screen->model != 0x880;
screen->info->model < 0x1000 && screen->info->model != 0x880;
screen->specs.has_sin_cos_sqrt =
VIV_FEATURE(screen, chipMinorFeatures0, HAS_SQRT_TRIG);
screen->specs.has_sign_floor_ceil =
VIV_FEATURE(screen, chipMinorFeatures0, HAS_SIGN_FLOOR_CEIL);
screen->specs.has_shader_range_registers =
screen->model >= 0x1000 || screen->model == 0x880;
screen->info->model >= 0x1000 || screen->info->model == 0x880;
screen->specs.npot_tex_any_wrap =
VIV_FEATURE(screen, chipMinorFeatures1, NON_POWER_OF_TWO);
screen->specs.has_new_transcendentals =
@@ -981,7 +981,7 @@ etna_get_specs(struct etna_screen *screen)
screen->specs.v4_compression =
VIV_FEATURE(screen, chipMinorFeatures6, V4_COMPRESSION);
screen->specs.seamless_cube_map =
(screen->model != 0x880) && /* Seamless cubemap is broken on GC880? */
(screen->info->model != 0x880) && /* Seamless cubemap is broken on GC880? */
VIV_FEATURE(screen, chipMinorFeatures2, SEAMLESS_CUBE_MAP);
if (screen->specs.halti >= 5) {
@@ -1140,6 +1140,7 @@ etna_screen_create(struct etna_device *dev, struct etna_gpu *gpu,
screen->dev = dev;
screen->gpu = gpu;
screen->ro = ro;
screen->info = etna_gpu_get_core_info(gpu);
screen->drm_version = etnaviv_device_version(screen->dev);
etna_mesa_debug = debug_get_option_etna_mesa_debug();
@@ -1153,18 +1154,6 @@ etna_screen_create(struct etna_device *dev, struct etna_gpu *gpu,
goto fail;
}
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_MODEL, &val)) {
DBG("could not get ETNA_GPU_MODEL");
goto fail;
}
screen->model = val;
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_REVISION, &val)) {
DBG("could not get ETNA_GPU_REVISION");
goto fail;
}
screen->revision = val;
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_0, &val)) {
DBG("could not get ETNA_GPU_FEATURES_0");
goto fail;
+2 -2
View File
@@ -28,6 +28,7 @@
#ifndef H_ETNAVIV_SCREEN
#define H_ETNAVIV_SCREEN
#include "etna_core_info.h"
#include "etnaviv_internal.h"
#include "etnaviv_perfmon.h"
@@ -81,8 +82,7 @@ struct etna_screen {
struct util_dynarray supported_pm_queries;
struct slab_parent_pool transfer_pool;
uint32_t model;
uint32_t revision;
struct etna_core_info *info;
uint32_t features[VIV_FEATURES_WORD_COUNT];
struct etna_specs specs;
+2 -2
View File
@@ -193,7 +193,7 @@ etna_set_framebuffer_state(struct pipe_context *pctx,
cbuf->offset, cbuf->level->stride * 4);
}
if (screen->specs.halti >= 0 && screen->model != 0x880) {
if (screen->specs.halti >= 0 && screen->info->model != 0x880) {
/* Rendertargets on GPUs with more than a single pixel pipe must always
* be multi-tiled, or single-buffer mode must be supported */
assert(screen->specs.pixel_pipes == 1 ||
@@ -276,7 +276,7 @@ etna_set_framebuffer_state(struct pipe_context *pctx,
/* VIVS_PE_DEPTH_CONFIG_ONLY_DEPTH */
/* merged with depth_stencil_alpha */
if (screen->specs.halti >= 0 && screen->model != 0x880) {
if (screen->specs.halti >= 0 && screen->info->model != 0x880) {
for (int i = 0; i < screen->specs.pixel_pipes; i++) {
cs->PE_PIPE_DEPTH_ADDR[i] = zsbuf->reloc[i];
cs->PE_PIPE_DEPTH_ADDR[i].flags = ETNA_RELOC_READ | ETNA_RELOC_WRITE;
+1 -1
View File
@@ -117,7 +117,7 @@ libetnaviv = static_library(
inc_include, inc_src, inc_gallium, inc_gallium_aux, inc_etnaviv,
],
link_with: [libetnaviv_drm, libetnaviv_encode],
dependencies : [dep_libdrm, idep_nir_headers, idep_mesautil, idep_libetnaviv_decode],
dependencies : [dep_libdrm, idep_nir_headers, idep_mesautil, idep_libetnaviv_decode, idep_etna_common],
)
driver_etnaviv = declare_dependency(
+1 -1
View File
@@ -26,5 +26,5 @@ libetnavivdrm = static_library(
inc_etnaviv,
],
link_with: libetnaviv_drm,
dependencies : [dep_libdrm, idep_nir_headers, idep_mesautil],
dependencies : [dep_libdrm, idep_nir_headers, idep_mesautil, idep_etna_common],
)