Mesa (main): freedreno: Convert fd_dev_info to const pointer
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jul 14 02:20:02 UTC 2021
Module: Mesa
Branch: main
Commit: 8f6715862f0d860e002788d60986619b131ed7df
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8f6715862f0d860e002788d60986619b131ed7df
Author: Rob Clark <robdclark at chromium.org>
Date: Wed Jul 7 18:37:09 2021 -0700
freedreno: Convert fd_dev_info to const pointer
Split out from previous patch to reduce churn.
Signed-off-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11790>
---
src/gallium/drivers/freedreno/a2xx/fd2_gmem.c | 2 +-
src/gallium/drivers/freedreno/a6xx/fd6_blitter.c | 10 ++++-----
src/gallium/drivers/freedreno/a6xx/fd6_draw.c | 2 +-
src/gallium/drivers/freedreno/a6xx/fd6_gmem.c | 12 +++++------
src/gallium/drivers/freedreno/a6xx/fd6_program.c | 4 ++--
src/gallium/drivers/freedreno/a6xx/fd6_resource.c | 2 +-
src/gallium/drivers/freedreno/freedreno_gmem.c | 24 +++++++++++-----------
src/gallium/drivers/freedreno/freedreno_resource.c | 4 ++--
src/gallium/drivers/freedreno/freedreno_screen.c | 7 +++----
src/gallium/drivers/freedreno/freedreno_screen.h | 2 +-
src/gallium/drivers/freedreno/gmemtool.c | 7 +++----
11 files changed, 37 insertions(+), 39 deletions(-)
diff --git a/src/gallium/drivers/freedreno/a2xx/fd2_gmem.c b/src/gallium/drivers/freedreno/a2xx/fd2_gmem.c
index 3c241a6a395..42c9097fc22 100644
--- a/src/gallium/drivers/freedreno/a2xx/fd2_gmem.c
+++ b/src/gallium/drivers/freedreno/a2xx/fd2_gmem.c
@@ -584,7 +584,7 @@ fd2_emit_tile_init(struct fd_batch *batch) assert_dt
if (cf->opc == ALLOC)
cf++;
assert(cf->opc == EXEC);
- assert(cf[ctx->screen->info.num_vsc_pipes * 2 - 2].opc == EXEC_END);
+ assert(cf[ctx->screen->info->num_vsc_pipes * 2 - 2].opc == EXEC_END);
cf[2 * (gmem->num_vsc_pipes - 1)].opc = EXEC_END;
}
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c
index 2cfe7b518c4..d227e320b47 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c
@@ -412,7 +412,7 @@ emit_blit_buffer(struct fd_context *ctx, struct fd_ringbuffer *ring,
OUT_WFI5(ring);
OUT_PKT4(ring, REG_A6XX_RB_UNKNOWN_8E04, 1);
- OUT_RING(ring, ctx->screen->info.a6xx.magic.RB_UNKNOWN_8E04_blit);
+ OUT_RING(ring, ctx->screen->info->a6xx.magic.RB_UNKNOWN_8E04_blit);
OUT_PKT7(ring, CP_BLIT, 1);
OUT_RING(ring, CP_BLIT_0_OP(BLIT_OP_SCALE));
@@ -507,7 +507,7 @@ fd6_clear_ubwc(struct fd_batch *batch, struct fd_resource *rsc) assert_dt
OUT_WFI5(ring);
OUT_PKT4(ring, REG_A6XX_RB_UNKNOWN_8E04, 1);
- OUT_RING(ring, batch->ctx->screen->info.a6xx.magic.RB_UNKNOWN_8E04_blit);
+ OUT_RING(ring, batch->ctx->screen->info->a6xx.magic.RB_UNKNOWN_8E04_blit);
OUT_PKT7(ring, CP_BLIT, 1);
OUT_RING(ring, CP_BLIT_0_OP(BLIT_OP_SCALE));
@@ -684,7 +684,7 @@ emit_blit_texture(struct fd_context *ctx, struct fd_ringbuffer *ring,
OUT_WFI5(ring);
OUT_PKT4(ring, REG_A6XX_RB_UNKNOWN_8E04, 1);
- OUT_RING(ring, ctx->screen->info.a6xx.magic.RB_UNKNOWN_8E04_blit);
+ OUT_RING(ring, ctx->screen->info->a6xx.magic.RB_UNKNOWN_8E04_blit);
OUT_PKT7(ring, CP_BLIT, 1);
OUT_RING(ring, CP_BLIT_0_OP(BLIT_OP_SCALE));
@@ -812,7 +812,7 @@ fd6_clear_surface(struct fd_context *ctx, struct fd_ringbuffer *ring,
OUT_WFI5(ring);
OUT_PKT4(ring, REG_A6XX_RB_UNKNOWN_8E04, 1);
- OUT_RING(ring, ctx->screen->info.a6xx.magic.RB_UNKNOWN_8E04_blit);
+ OUT_RING(ring, ctx->screen->info->a6xx.magic.RB_UNKNOWN_8E04_blit);
OUT_PKT7(ring, CP_BLIT, 1);
OUT_RING(ring, CP_BLIT_0_OP(BLIT_OP_SCALE));
@@ -1062,7 +1062,7 @@ handle_zs_blit(struct fd_context *ctx,
/* non-UBWC Z24_UNORM_S8_UINT_AS_R8G8B8A8 is broken on a630, fall back to
* 8888_unorm.
*/
- if (!ctx->screen->info.a6xx.has_z24uint_s8uint) {
+ if (!ctx->screen->info->a6xx.has_z24uint_s8uint) {
if (!src->layout.ubwc)
blit.src.format = PIPE_FORMAT_RGBA8888_UNORM;
if (!dst->layout.ubwc)
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_draw.c b/src/gallium/drivers/freedreno/a6xx/fd6_draw.c
index 428531f47b0..b599891b03b 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_draw.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_draw.c
@@ -457,7 +457,7 @@ fd6_clear_lrz(struct fd_batch *batch, struct fd_resource *zsbuf, double depth)
OUT_WFI5(ring);
OUT_PKT4(ring, REG_A6XX_RB_UNKNOWN_8E04, 1);
- OUT_RING(ring, screen->info.a6xx.magic.RB_UNKNOWN_8E04_blit);
+ OUT_RING(ring, screen->info->a6xx.magic.RB_UNKNOWN_8E04_blit);
OUT_PKT7(ring, CP_BLIT, 1);
OUT_RING(ring, CP_BLIT_0_OP(BLIT_OP_SCALE));
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_gmem.c b/src/gallium/drivers/freedreno/a6xx/fd6_gmem.c
index 28d6a227924..3e71cdd9ebc 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_gmem.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_gmem.c
@@ -689,10 +689,10 @@ emit_binning_pass(struct fd_batch *batch) assert_dt
update_vsc_pipe(batch);
OUT_PKT4(ring, REG_A6XX_PC_UNKNOWN_9805, 1);
- OUT_RING(ring, screen->info.a6xx.magic.PC_UNKNOWN_9805);
+ OUT_RING(ring, screen->info->a6xx.magic.PC_UNKNOWN_9805);
OUT_PKT4(ring, REG_A6XX_SP_UNKNOWN_A0F8, 1);
- OUT_RING(ring, screen->info.a6xx.magic.SP_UNKNOWN_A0F8);
+ OUT_RING(ring, screen->info->a6xx.magic.SP_UNKNOWN_A0F8);
OUT_PKT7(ring, CP_EVENT_WRITE, 1);
OUT_RING(ring, UNK_2C);
@@ -742,7 +742,7 @@ emit_binning_pass(struct fd_batch *batch) assert_dt
OUT_REG(ring,
A6XX_RB_CCU_CNTL(.color_offset = screen->ccu_offset_gmem,
.gmem = true,
- .unk2 = screen->info.a6xx.ccu_cntl_gmem_unk2));
+ .unk2 = screen->info->a6xx.ccu_cntl_gmem_unk2));
}
static void
@@ -810,7 +810,7 @@ fd6_emit_tile_init(struct fd_batch *batch) assert_dt
OUT_REG(ring,
A6XX_RB_CCU_CNTL(.color_offset = screen->ccu_offset_gmem,
.gmem = true,
- .unk2 = screen->info.a6xx.ccu_cntl_gmem_unk2));
+ .unk2 = screen->info->a6xx.ccu_cntl_gmem_unk2));
emit_zs(ring, pfb->zsbuf, batch->gmem_state);
emit_mrt(ring, pfb, batch->gmem_state);
@@ -845,10 +845,10 @@ fd6_emit_tile_init(struct fd_batch *batch) assert_dt
OUT_RING(ring, 0x0);
OUT_PKT4(ring, REG_A6XX_PC_UNKNOWN_9805, 1);
- OUT_RING(ring, screen->info.a6xx.magic.PC_UNKNOWN_9805);
+ OUT_RING(ring, screen->info->a6xx.magic.PC_UNKNOWN_9805);
OUT_PKT4(ring, REG_A6XX_SP_UNKNOWN_A0F8, 1);
- OUT_RING(ring, screen->info.a6xx.magic.SP_UNKNOWN_A0F8);
+ OUT_RING(ring, screen->info->a6xx.magic.SP_UNKNOWN_A0F8);
OUT_PKT7(ring, CP_SKIP_IB2_ENABLE_GLOBAL, 1);
OUT_RING(ring, 0x1);
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_program.c b/src/gallium/drivers/freedreno/a6xx/fd6_program.c
index d9df55e1a98..b780b67fcc6 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_program.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_program.c
@@ -103,8 +103,8 @@ fd6_emit_shader(struct fd_context *ctx, struct fd_ringbuffer *ring,
fd_emit_string5(ring, name, strlen(name));
#endif
- uint32_t fibers_per_sp = ctx->screen->info.a6xx.fibers_per_sp;
- uint32_t num_sp_cores = ctx->screen->info.num_sp_cores;
+ uint32_t fibers_per_sp = ctx->screen->info->a6xx.fibers_per_sp;
+ uint32_t num_sp_cores = ctx->screen->info->num_sp_cores;
uint32_t per_fiber_size = ALIGN(so->pvtmem_size, 512);
if (per_fiber_size > ctx->pvtmem[so->pvtmem_per_wave].per_fiber_size) {
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_resource.c b/src/gallium/drivers/freedreno/a6xx/fd6_resource.c
index e8dae28c454..5adb2a8b92d 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_resource.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_resource.c
@@ -47,7 +47,7 @@ ok_ubwc_format(struct pipe_screen *pscreen, enum pipe_format pfmt)
* fd_resource_uncompress() at the point of stencil sampling because
* that itself uses stencil sampling in the fd_blitter_blit path.
*/
- return fd_screen(pscreen)->info.a6xx.has_z24uint_s8uint;
+ return fd_screen(pscreen)->info->a6xx.has_z24uint_s8uint;
case PIPE_FORMAT_R8_G8B8_420_UNORM:
return true;
diff --git a/src/gallium/drivers/freedreno/freedreno_gmem.c b/src/gallium/drivers/freedreno/freedreno_gmem.c
index 4fec1707b9c..47f4e6f6754 100644
--- a/src/gallium/drivers/freedreno/freedreno_gmem.c
+++ b/src/gallium/drivers/freedreno/freedreno_gmem.c
@@ -178,13 +178,13 @@ layout_gmem(struct gmem_key *key, uint32_t nbins_x, uint32_t nbins_y,
return false;
uint32_t bin_w, bin_h;
- bin_w = div_align(key->width, nbins_x, screen->info.tile_align_w);
- bin_h = div_align(key->height, nbins_y, screen->info.tile_align_h);
+ bin_w = div_align(key->width, nbins_x, screen->info->tile_align_w);
+ bin_h = div_align(key->height, nbins_y, screen->info->tile_align_h);
- if (bin_w > screen->info.tile_max_w)
+ if (bin_w > screen->info->tile_max_w)
return false;
- if (bin_h > screen->info.tile_max_h)
+ if (bin_h > screen->info->tile_max_h)
return false;
gmem->bin_w = bin_w;
@@ -221,8 +221,8 @@ calc_nbins(struct gmem_key *key, struct fd_gmem_stateobj *gmem)
{
struct fd_screen *screen = gmem->screen;
uint32_t nbins_x = 1, nbins_y = 1;
- uint32_t max_width = screen->info.tile_max_w;
- uint32_t max_height = screen->info.tile_max_h;
+ uint32_t max_width = screen->info->tile_max_w;
+ uint32_t max_height = screen->info->tile_max_h;
if (FD_DBG(MSGS)) {
debug_printf("binning input: cbuf cpp:");
@@ -235,12 +235,12 @@ calc_nbins(struct gmem_key *key, struct fd_gmem_stateobj *gmem)
/* first, find a bin size that satisfies the maximum width/
* height restrictions:
*/
- while (div_align(key->width, nbins_x, screen->info.tile_align_w) >
+ while (div_align(key->width, nbins_x, screen->info->tile_align_w) >
max_width) {
nbins_x++;
}
- while (div_align(key->height, nbins_y, screen->info.tile_align_h) >
+ while (div_align(key->height, nbins_y, screen->info->tile_align_h) >
max_height) {
nbins_y++;
}
@@ -282,7 +282,7 @@ gmem_stateobj_init(struct fd_screen *screen, struct gmem_key *key)
gmem->key = key;
list_inithead(&gmem->node);
- const unsigned npipes = screen->info.num_vsc_pipes;
+ const unsigned npipes = screen->info->num_vsc_pipes;
uint32_t i, j, t, xoff, yoff;
uint32_t tpp_x, tpp_y;
int tile_n[npipes];
@@ -504,8 +504,8 @@ gmem_key_init(struct fd_batch *batch, bool assume_zs, bool no_scis_opt)
}
/* round down to multiple of alignment: */
- key->minx = scissor->minx & ~(screen->info.gmem_align_w - 1);
- key->miny = scissor->miny & ~(screen->info.gmem_align_h - 1);
+ key->minx = scissor->minx & ~(screen->info->gmem_align_w - 1);
+ key->miny = scissor->miny & ~(screen->info->gmem_align_h - 1);
key->width = scissor->maxx - key->minx;
key->height = scissor->maxy - key->miny;
}
@@ -516,7 +516,7 @@ gmem_key_init(struct fd_batch *batch, bool assume_zs, bool no_scis_opt)
*/
key->gmem_page_align = 8;
} else if (is_a6xx(screen)) {
- key->gmem_page_align = (screen->info.tile_align_w == 96) ? 3 : 1;
+ key->gmem_page_align = (screen->info->tile_align_w == 96) ? 3 : 1;
} else {
// TODO re-check this across gens.. maybe it should only
// be a single page in some cases:
diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c b/src/gallium/drivers/freedreno/freedreno_resource.c
index 4190673861b..bf2f35144b3 100644
--- a/src/gallium/drivers/freedreno/freedreno_resource.c
+++ b/src/gallium/drivers/freedreno/freedreno_resource.c
@@ -1258,7 +1258,7 @@ fd_resource_create_with_modifiers(struct pipe_screen *pscreen,
struct winsys_handle handle;
/* note: alignment is wrong for a6xx */
- scanout_templat.width0 = align(tmpl->width0, screen->info.gmem_align_w);
+ scanout_templat.width0 = align(tmpl->width0, screen->info->gmem_align_w);
scanout =
renderonly_scanout_for_resource(&scanout_templat, screen->ro, &handle);
@@ -1344,7 +1344,7 @@ fd_resource_from_handle(struct pipe_screen *pscreen,
* validate the pitch and set the right pitchalign
*/
rsc->layout.pitchalign =
- fdl_cpp_shift(&rsc->layout) + util_logbase2(screen->info.gmem_align_w);
+ fdl_cpp_shift(&rsc->layout) + util_logbase2(screen->info->gmem_align_w);
/* apply the minimum pitchalign (note: actually 4 for a3xx but doesn't
* matter) */
diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c
index 6cd35b95e62..26fe62eae30 100644
--- a/src/gallium/drivers/freedreno/freedreno_screen.c
+++ b/src/gallium/drivers/freedreno/freedreno_screen.c
@@ -1058,13 +1058,12 @@ fd_screen_create(struct fd_device *dev, struct renderonly *ro)
goto fail;
}
- // TODO change to pointer:
- screen->info = *info;
+ screen->info = info;
if (is_a6xx(screen)) {
- screen->ccu_offset_bypass = screen->info.num_ccu * A6XX_CCU_DEPTH_SIZE;
+ screen->ccu_offset_bypass = screen->info->num_ccu * A6XX_CCU_DEPTH_SIZE;
screen->ccu_offset_gmem = (screen->gmemsize_bytes -
- screen->info.num_ccu * A6XX_CCU_GMEM_COLOR_SIZE);
+ screen->info->num_ccu * A6XX_CCU_GMEM_COLOR_SIZE);
}
if (FD_DBG(PERFC)) {
diff --git a/src/gallium/drivers/freedreno/freedreno_screen.h b/src/gallium/drivers/freedreno/freedreno_screen.h
index fc42983abe0..ddc450a57a8 100644
--- a/src/gallium/drivers/freedreno/freedreno_screen.h
+++ b/src/gallium/drivers/freedreno/freedreno_screen.h
@@ -91,7 +91,7 @@ struct fd_screen {
bool has_robustness;
bool has_syncobj;
- struct fd_dev_info info;
+ const struct fd_dev_info *info;
uint32_t ccu_offset_gmem;
uint32_t ccu_offset_bypass;
diff --git a/src/gallium/drivers/freedreno/gmemtool.c b/src/gallium/drivers/freedreno/gmemtool.c
index 38a45b81bc7..a6b1d0b7c25 100644
--- a/src/gallium/drivers/freedreno/gmemtool.c
+++ b/src/gallium/drivers/freedreno/gmemtool.c
@@ -167,8 +167,7 @@ main(int argc, char **argv)
.gmemsize_bytes = gpu_info->gmemsize_bytes,
};
- // TODO change to pointer:
- screen.info = *fd_dev_info(gpu_info->gpu_id);
+ screen.info = fd_dev_info(gpu_info->gpu_id);
/* And finally run thru all the GMEM keys: */
for (int i = 0; i < ARRAY_SIZE(keys); i++) {
@@ -179,8 +178,8 @@ main(int argc, char **argv)
assert((gmem->bin_w * gmem->nbins_x) >= key.width);
assert((gmem->bin_h * gmem->nbins_y) >= key.height);
- assert(gmem->bin_w < screen.info.tile_max_w);
- assert(gmem->bin_h < screen.info.tile_max_h);
+ assert(gmem->bin_w < screen.info->tile_max_w);
+ assert(gmem->bin_h < screen.info->tile_max_h);
ralloc_free(gmem);
}
More information about the mesa-commit
mailing list