diff --git a/src/freedreno/computerator/a6xx.c b/src/freedreno/computerator/a6xx.c index e31745ac427..069d2496c2a 100644 --- a/src/freedreno/computerator/a6xx.c +++ b/src/freedreno/computerator/a6xx.c @@ -389,8 +389,7 @@ a6xx_emit_grid(struct kernel *kernel, uint32_t grid[3], if (a6xx_backend->num_perfcntrs > 0) { a6xx_backend->query_mem = fd_bo_new( a6xx_backend->dev, - a6xx_backend->num_perfcntrs * sizeof(struct fd6_query_sample), - DRM_FREEDRENO_GEM_TYPE_KMEM, "query"); + a6xx_backend->num_perfcntrs * sizeof(struct fd6_query_sample), 0, "query"); /* configure the performance counters to count the requested * countables: @@ -489,7 +488,7 @@ a6xx_init(struct fd_device *dev, uint32_t gpu_id) a6xx_backend->dev = dev; a6xx_backend->control_mem = - fd_bo_new(dev, 0x1000, DRM_FREEDRENO_GEM_TYPE_KMEM, "control"); + fd_bo_new(dev, 0x1000, 0, "control"); return &a6xx_backend->base; } diff --git a/src/freedreno/computerator/ir3_asm.c b/src/freedreno/computerator/ir3_asm.c index 0a57c37ca05..efca35e83f5 100644 --- a/src/freedreno/computerator/ir3_asm.c +++ b/src/freedreno/computerator/ir3_asm.c @@ -49,9 +49,7 @@ ir3_asm_assemble(struct ir3_compiler *c, FILE *in) unsigned sz = v->info.size; - v->bo = fd_bo_new(c->dev, sz, - DRM_FREEDRENO_GEM_CACHE_WCOMBINE | DRM_FREEDRENO_GEM_TYPE_KMEM, - "%s", ir3_shader_stage(v)); + v->bo = fd_bo_new(c->dev, sz, 0, "%s", ir3_shader_stage(v)); memcpy(fd_bo_map(v->bo), kernel->bin, sz); diff --git a/src/freedreno/computerator/main.c b/src/freedreno/computerator/main.c index 626139a751e..f4969c81f17 100644 --- a/src/freedreno/computerator/main.c +++ b/src/freedreno/computerator/main.c @@ -263,8 +263,7 @@ main(int argc, char **argv) kernel->local_size[2]); for (int i = 0; i < kernel->num_bufs; i++) { printf("buf[%d]: size=%u\n", i, kernel->buf_sizes[i]); - kernel->bufs[i] = fd_bo_new(dev, kernel->buf_sizes[i] * 4, - DRM_FREEDRENO_GEM_TYPE_KMEM, "buf[%d]", i); + kernel->bufs[i] = fd_bo_new(dev, kernel->buf_sizes[i] * 4, 0, "buf[%d]", i); } if (disasm) diff --git a/src/freedreno/drm/freedreno_bo.c b/src/freedreno/drm/freedreno_bo.c index 2d0407120b0..f7adb452cb4 100644 --- a/src/freedreno/drm/freedreno_bo.c +++ b/src/freedreno/drm/freedreno_bo.c @@ -134,7 +134,7 @@ _fd_bo_set_name(struct fd_bo *bo, const char *fmt, va_list ap) struct fd_bo * fd_bo_new_ring(struct fd_device *dev, uint32_t size) { - uint32_t flags = DRM_FREEDRENO_GEM_GPUREADONLY; + uint32_t flags = FD_BO_GPUREADONLY; struct fd_bo *bo = bo_new(dev, size, flags, &dev->ring_cache); if (bo) { bo->bo_reuse = RING_CACHE; diff --git a/src/freedreno/drm/freedreno_drmif.h b/src/freedreno/drm/freedreno_drmif.h index b243dc1cdb2..52b323aa0b1 100644 --- a/src/freedreno/drm/freedreno_drmif.h +++ b/src/freedreno/drm/freedreno_drmif.h @@ -29,6 +29,7 @@ #include +#include "util/bitset.h" #include "util/u_debug.h" #ifdef __cplusplus @@ -63,17 +64,9 @@ enum fd_param_id { }; /* bo flags: */ -#define DRM_FREEDRENO_GEM_TYPE_SMI 0x00000001 -#define DRM_FREEDRENO_GEM_TYPE_KMEM 0x00000002 -#define DRM_FREEDRENO_GEM_TYPE_MEM_MASK 0x0000000f -#define DRM_FREEDRENO_GEM_CACHE_NONE 0x00000000 -#define DRM_FREEDRENO_GEM_CACHE_WCOMBINE 0x00100000 -#define DRM_FREEDRENO_GEM_CACHE_WTHROUGH 0x00200000 -#define DRM_FREEDRENO_GEM_CACHE_WBACK 0x00400000 -#define DRM_FREEDRENO_GEM_CACHE_WBACKWA 0x00800000 -#define DRM_FREEDRENO_GEM_CACHE_MASK 0x00f00000 -#define DRM_FREEDRENO_GEM_GPUREADONLY 0x01000000 -#define DRM_FREEDRENO_GEM_SCANOUT 0x02000000 +#define FD_BO_GPUREADONLY BITSET_BIT(1) +#define FD_BO_SCANOUT BITSET_BIT(2) +/* Default caching is WRITECOMBINE, we can add new bo flags later for cached/etc */ /* bo access flags: (keep aligned to MSM_PREP_x) */ #define DRM_FREEDRENO_PREP_READ 0x01 diff --git a/src/freedreno/drm/msm_bo.c b/src/freedreno/drm/msm_bo.c index 57d25adf3e0..3f43793648d 100644 --- a/src/freedreno/drm/msm_bo.c +++ b/src/freedreno/drm/msm_bo.c @@ -174,10 +174,10 @@ msm_bo_new_handle(struct fd_device *dev, uint32_t size, uint32_t flags, }; int ret; - if (flags & DRM_FREEDRENO_GEM_SCANOUT) + if (flags & FD_BO_SCANOUT) req.flags |= MSM_BO_SCANOUT; - if (flags & DRM_FREEDRENO_GEM_GPUREADONLY) + if (flags & FD_BO_GPUREADONLY) req.flags |= MSM_BO_GPU_READONLY; ret = drmCommandWriteRead(dev->fd, DRM_MSM_GEM_NEW, &req, sizeof(req)); diff --git a/src/gallium/drivers/freedreno/a2xx/fd2_gmem.c b/src/gallium/drivers/freedreno/a2xx/fd2_gmem.c index c427bd1fec6..3c241a6a395 100644 --- a/src/gallium/drivers/freedreno/a2xx/fd2_gmem.c +++ b/src/gallium/drivers/freedreno/a2xx/fd2_gmem.c @@ -602,8 +602,7 @@ fd2_emit_tile_init(struct fd_batch *batch) assert_dt if (ctx->vsc_pipe_bo[i]) fd_bo_del(ctx->vsc_pipe_bo[i]); ctx->vsc_pipe_bo[i] = - fd_bo_new(ctx->dev, bo_size, DRM_FREEDRENO_GEM_TYPE_KMEM, - "vsc_pipe[%u]", i); + fd_bo_new(ctx->dev, bo_size, 0, "vsc_pipe[%u]", i); assert(ctx->vsc_pipe_bo[i]); } diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_context.c b/src/gallium/drivers/freedreno/a3xx/fd3_context.c index 43aa86e19bc..d85ed792927 100644 --- a/src/gallium/drivers/freedreno/a3xx/fd3_context.c +++ b/src/gallium/drivers/freedreno/a3xx/fd3_context.c @@ -107,13 +107,13 @@ fd3_context_create(struct pipe_screen *pscreen, void *priv, fd_hw_query_init(pctx); fd3_ctx->vs_pvt_mem = - fd_bo_new(screen->dev, 0x2000, DRM_FREEDRENO_GEM_TYPE_KMEM, "vs_pvt"); + fd_bo_new(screen->dev, 0x2000, 0, "vs_pvt"); fd3_ctx->fs_pvt_mem = - fd_bo_new(screen->dev, 0x2000, DRM_FREEDRENO_GEM_TYPE_KMEM, "fs_pvt"); + fd_bo_new(screen->dev, 0x2000, 0, "fs_pvt"); fd3_ctx->vsc_size_mem = - fd_bo_new(screen->dev, 0x1000, DRM_FREEDRENO_GEM_TYPE_KMEM, "vsc_size"); + fd_bo_new(screen->dev, 0x1000, 0, "vsc_size"); fd_context_setup_common_vbos(&fd3_ctx->base); diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_gmem.c b/src/gallium/drivers/freedreno/a3xx/fd3_gmem.c index afa409ef68c..114363155f2 100644 --- a/src/gallium/drivers/freedreno/a3xx/fd3_gmem.c +++ b/src/gallium/drivers/freedreno/a3xx/fd3_gmem.c @@ -806,7 +806,7 @@ update_vsc_pipe(struct fd_batch *batch) assert_dt if (!ctx->vsc_pipe_bo[i]) { ctx->vsc_pipe_bo[i] = fd_bo_new( - ctx->dev, 0x40000, DRM_FREEDRENO_GEM_TYPE_KMEM, "vsc_pipe[%u]", i); + ctx->dev, 0x40000, 0, "vsc_pipe[%u]", i); } OUT_PKT0(ring, REG_A3XX_VSC_PIPE(i), 3); diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_context.c b/src/gallium/drivers/freedreno/a4xx/fd4_context.c index dcfc2a2708b..6074fbc2306 100644 --- a/src/gallium/drivers/freedreno/a4xx/fd4_context.c +++ b/src/gallium/drivers/freedreno/a4xx/fd4_context.c @@ -107,13 +107,13 @@ fd4_context_create(struct pipe_screen *pscreen, void *priv, fd_hw_query_init(pctx); fd4_ctx->vs_pvt_mem = - fd_bo_new(screen->dev, 0x2000, DRM_FREEDRENO_GEM_TYPE_KMEM, "vs_pvt"); + fd_bo_new(screen->dev, 0x2000, 0, "vs_pvt"); fd4_ctx->fs_pvt_mem = - fd_bo_new(screen->dev, 0x2000, DRM_FREEDRENO_GEM_TYPE_KMEM, "fs_pvt"); + fd_bo_new(screen->dev, 0x2000, 0, "fs_pvt"); fd4_ctx->vsc_size_mem = - fd_bo_new(screen->dev, 0x1000, DRM_FREEDRENO_GEM_TYPE_KMEM, "vsc_size"); + fd_bo_new(screen->dev, 0x1000, 0, "vsc_size"); fd_context_setup_common_vbos(&fd4_ctx->base); diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_gmem.c b/src/gallium/drivers/freedreno/a4xx/fd4_gmem.c index 157dc1e5629..e139de73bd4 100644 --- a/src/gallium/drivers/freedreno/a4xx/fd4_gmem.c +++ b/src/gallium/drivers/freedreno/a4xx/fd4_gmem.c @@ -587,7 +587,7 @@ update_vsc_pipe(struct fd_batch *batch) assert_dt for (i = 0; i < 8; i++) { if (!ctx->vsc_pipe_bo[i]) { ctx->vsc_pipe_bo[i] = fd_bo_new( - ctx->dev, 0x40000, DRM_FREEDRENO_GEM_TYPE_KMEM, "vsc_pipe[%u]", i); + ctx->dev, 0x40000, 0, "vsc_pipe[%u]", i); } OUT_RELOC(ring, ctx->vsc_pipe_bo[i], 0, 0, 0); /* VSC_PIPE_DATA_ADDRESS[i] */ diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_context.c b/src/gallium/drivers/freedreno/a5xx/fd5_context.c index 763efc8e797..2eddc0df890 100644 --- a/src/gallium/drivers/freedreno/a5xx/fd5_context.c +++ b/src/gallium/drivers/freedreno/a5xx/fd5_context.c @@ -110,10 +110,10 @@ fd5_context_create(struct pipe_screen *pscreen, void *priv, util_blitter_set_texture_multisample(fd5_ctx->base.blitter, true); fd5_ctx->vsc_size_mem = - fd_bo_new(screen->dev, 0x1000, DRM_FREEDRENO_GEM_TYPE_KMEM, "vsc_size"); + fd_bo_new(screen->dev, 0x1000, 0, "vsc_size"); fd5_ctx->blit_mem = - fd_bo_new(screen->dev, 0x1000, DRM_FREEDRENO_GEM_TYPE_KMEM, "blit"); + fd_bo_new(screen->dev, 0x1000, 0, "blit"); fd_context_setup_common_vbos(&fd5_ctx->base); diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_gmem.c b/src/gallium/drivers/freedreno/a5xx/fd5_gmem.c index 7aa5e97da50..786cee985aa 100644 --- a/src/gallium/drivers/freedreno/a5xx/fd5_gmem.c +++ b/src/gallium/drivers/freedreno/a5xx/fd5_gmem.c @@ -291,7 +291,7 @@ update_vsc_pipe(struct fd_batch *batch) assert_dt for (i = 0; i < 16; i++) { if (!ctx->vsc_pipe_bo[i]) { ctx->vsc_pipe_bo[i] = fd_bo_new( - ctx->dev, 0x20000, DRM_FREEDRENO_GEM_TYPE_KMEM, "vsc_pipe[%u]", i); + ctx->dev, 0x20000, 0, "vsc_pipe[%u]", i); } OUT_RELOC(ring, ctx->vsc_pipe_bo[i], 0, 0, 0); /* VSC_PIPE_DATA_ADDRESS[i].LO/HI */ diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_resource.c b/src/gallium/drivers/freedreno/a5xx/fd5_resource.c index 8a04c3d9a82..0aaa3e02135 100644 --- a/src/gallium/drivers/freedreno/a5xx/fd5_resource.c +++ b/src/gallium/drivers/freedreno/a5xx/fd5_resource.c @@ -30,8 +30,6 @@ static void setup_lrz(struct fd_resource *rsc) { struct fd_screen *screen = fd_screen(rsc->b.b.screen); - const uint32_t flags = - DRM_FREEDRENO_GEM_CACHE_WCOMBINE | DRM_FREEDRENO_GEM_TYPE_KMEM; /* TODO */ unsigned lrz_pitch = align(DIV_ROUND_UP(rsc->b.b.width0, 8), 64); unsigned lrz_height = DIV_ROUND_UP(rsc->b.b.height0, 8); @@ -51,7 +49,7 @@ setup_lrz(struct fd_resource *rsc) rsc->lrz_height = lrz_height; rsc->lrz_width = lrz_pitch; rsc->lrz_pitch = lrz_pitch; - rsc->lrz = fd_bo_new(screen->dev, size, flags, "lrz"); + rsc->lrz = fd_bo_new(screen->dev, size, 0, "lrz"); } uint32_t diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_context.c b/src/gallium/drivers/freedreno/a6xx/fd6_context.c index c03b652ad56..24eb8e8befb 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_context.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_context.c @@ -241,7 +241,7 @@ fd6_context_create(struct pipe_screen *pscreen, void *priv, fd6_ctx->vsc_prim_strm_pitch = 0x1040; fd6_ctx->control_mem = - fd_bo_new(screen->dev, 0x1000, DRM_FREEDRENO_GEM_TYPE_KMEM, "control"); + fd_bo_new(screen->dev, 0x1000, 0, "control"); memset(fd_bo_map(fd6_ctx->control_mem), 0, sizeof(struct fd6_control)); diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_gmem.c b/src/gallium/drivers/freedreno/a6xx/fd6_gmem.c index 40d9cafee31..250b5ed7d8e 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_gmem.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_gmem.c @@ -335,13 +335,13 @@ update_vsc_pipe(struct fd_batch *batch) if (!fd6_ctx->vsc_draw_strm) { fd6_ctx->vsc_draw_strm = fd_bo_new( ctx->screen->dev, VSC_DRAW_STRM_SIZE(fd6_ctx->vsc_draw_strm_pitch), - DRM_FREEDRENO_GEM_TYPE_KMEM, "vsc_draw_strm"); + 0, "vsc_draw_strm"); } if (!fd6_ctx->vsc_prim_strm) { fd6_ctx->vsc_prim_strm = fd_bo_new( ctx->screen->dev, VSC_PRIM_STRM_SIZE(fd6_ctx->vsc_prim_strm_pitch), - DRM_FREEDRENO_GEM_TYPE_KMEM, "vsc_prim_strm"); + 0, "vsc_prim_strm"); } OUT_REG( @@ -1443,10 +1443,10 @@ setup_tess_buffers(struct fd_batch *batch, struct fd_ringbuffer *ring) struct fd_context *ctx = batch->ctx; batch->tessfactor_bo = fd_bo_new(ctx->screen->dev, batch->tessfactor_size, - DRM_FREEDRENO_GEM_TYPE_KMEM, "tessfactor"); + 0, "tessfactor"); batch->tessparam_bo = fd_bo_new(ctx->screen->dev, batch->tessparam_size, - DRM_FREEDRENO_GEM_TYPE_KMEM, "tessparam"); + 0, "tessparam"); OUT_PKT4(ring, REG_A6XX_PC_TESSFACTOR_ADDR, 2); OUT_RELOC(ring, batch->tessfactor_bo, 0, 0, 0); diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_program.c b/src/gallium/drivers/freedreno/a6xx/fd6_program.c index 97a000be9b0..067ecbd0702 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_program.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_program.c @@ -107,7 +107,7 @@ fd6_emit_shader(struct fd_context *ctx, struct fd_ringbuffer *ring, uint32_t total_size = ALIGN(per_fiber_size * fibers_per_sp, 1 << 12) * num_sp_cores; ctx->pvtmem[so->pvtmem_per_wave].bo = fd_bo_new( - ctx->screen->dev, total_size, DRM_FREEDRENO_GEM_TYPE_KMEM, + ctx->screen->dev, total_size, 0, "pvtmem_%s_%d", so->pvtmem_per_wave ? "per_wave" : "per_fiber", per_fiber_size); } else { diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_resource.c b/src/gallium/drivers/freedreno/a6xx/fd6_resource.c index 460fdc8fa46..86d45a07b89 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_resource.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_resource.c @@ -132,8 +132,6 @@ static void setup_lrz(struct fd_resource *rsc) { struct fd_screen *screen = fd_screen(rsc->b.b.screen); - const uint32_t flags = - DRM_FREEDRENO_GEM_CACHE_WCOMBINE | DRM_FREEDRENO_GEM_TYPE_KMEM; /* TODO */ unsigned width0 = rsc->b.b.width0; unsigned height0 = rsc->b.b.height0; @@ -154,7 +152,7 @@ setup_lrz(struct fd_resource *rsc) rsc->lrz_height = lrz_height; rsc->lrz_width = lrz_pitch; rsc->lrz_pitch = lrz_pitch; - rsc->lrz = fd_bo_new(screen->dev, size, flags, "lrz"); + rsc->lrz = fd_bo_new(screen->dev, size, 0, "lrz"); } static uint32_t diff --git a/src/gallium/drivers/freedreno/freedreno_autotune.c b/src/gallium/drivers/freedreno/freedreno_autotune.c index f2a8384075c..9f25307f768 100644 --- a/src/gallium/drivers/freedreno/freedreno_autotune.c +++ b/src/gallium/drivers/freedreno/freedreno_autotune.c @@ -251,7 +251,7 @@ fd_autotune_init(struct fd_autotune *at, struct fd_device *dev) list_inithead(&at->lru); at->results_mem = fd_bo_new(dev, sizeof(struct fd_autotune_results), - DRM_FREEDRENO_GEM_TYPE_KMEM, "autotune"); + 0, "autotune"); at->results = fd_bo_map(at->results_mem); list_inithead(&at->pending_results); diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c b/src/gallium/drivers/freedreno/freedreno_resource.c index bac3e71c939..385db856190 100644 --- a/src/gallium/drivers/freedreno/freedreno_resource.c +++ b/src/gallium/drivers/freedreno/freedreno_resource.c @@ -196,8 +196,7 @@ realloc_bo(struct fd_resource *rsc, uint32_t size) struct pipe_resource *prsc = &rsc->b.b; struct fd_screen *screen = fd_screen(rsc->b.b.screen); uint32_t flags = - DRM_FREEDRENO_GEM_CACHE_WCOMBINE | DRM_FREEDRENO_GEM_TYPE_KMEM | - COND(prsc->bind & PIPE_BIND_SCANOUT, DRM_FREEDRENO_GEM_SCANOUT); + COND(prsc->bind & PIPE_BIND_SCANOUT, FD_BO_SCANOUT); /* TODO other flags? */ /* if we start using things other than write-combine, diff --git a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c index ee3b4b437ee..719bd1d6f2f 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c +++ b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c @@ -105,8 +105,7 @@ upload_shader_variant(struct ir3_shader_variant *v) assert(!v->bo); v->bo = - fd_bo_new(compiler->dev, v->info.size, - DRM_FREEDRENO_GEM_CACHE_WCOMBINE | DRM_FREEDRENO_GEM_TYPE_KMEM, + fd_bo_new(compiler->dev, v->info.size, 0, "%s:%s", ir3_shader_stage(v), info->name); /* Always include shaders in kernel crash dumps. */