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:
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;
}
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);
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)
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;
#include <stdint.h>
+#include "util/bitset.h"
#include "util/u_debug.h"
#ifdef __cplusplus
};
/* 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
};
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));
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]);
}
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);
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);
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);
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] */
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);
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 */
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);
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
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));
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(
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);
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 {
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;
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
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);
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,
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. */