summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorBoris Brezillon <[email protected]>2019-09-14 11:23:51 +0200
committerBoris Brezillon <[email protected]>2019-09-18 10:35:06 +0200
commitcb71ae5572a16a974e3f60ad66fcae329c85961a (patch)
treee24f247deaf5eb1ce376cfd09cd5171cc2b93ee2 /src/gallium
parente15ab939fdce7b6205090315bf45564c995a933a (diff)
panfrost: Stop using panfrost_bo_release() outside of pan_bo.c
panfrost_bo_unreference() should be used instead. The only difference caused by this change is that the scratchpad, tiler_heap and tiler_dummy BOs are now returned to the cache instead of being freed when a context is destroyed. This is only a problem if we care about context isolation, which apparently is not the case since transient BOs are already returned to the per-FD cache (and all contexts share the same address space anyway, so enforcing context isolation is almost impossible). Signed-off-by: Boris Brezillon <[email protected]> Reviewed-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/panfrost/pan_bo.c5
-rw-r--r--src/gallium/drivers/panfrost/pan_bo.h2
-rw-r--r--src/gallium/drivers/panfrost/pan_context.c6
-rw-r--r--src/gallium/drivers/panfrost/pan_resource.c2
4 files changed, 8 insertions, 7 deletions
diff --git a/src/gallium/drivers/panfrost/pan_bo.c b/src/gallium/drivers/panfrost/pan_bo.c
index d9c4cb208bc..396b25230c4 100644
--- a/src/gallium/drivers/panfrost/pan_bo.c
+++ b/src/gallium/drivers/panfrost/pan_bo.c
@@ -84,6 +84,9 @@ pan_bucket(struct panfrost_screen *screen, unsigned size)
return &screen->bo_cache[pan_bucket_index(size)];
}
+static void
+panfrost_bo_release(struct panfrost_bo *bo, bool cacheable);
+
/* Tries to fetch a BO of sufficient size with the appropriate flags from the
* BO cache. If it succeeds, it returns that BO and removes the BO from the
* cache. If it fails, it returns NULL signaling the caller to allocate a new
@@ -287,7 +290,7 @@ panfrost_bo_create(struct panfrost_screen *screen, size_t size,
return bo;
}
-void
+static void
panfrost_bo_release(struct panfrost_bo *bo, bool cacheable)
{
if (!bo)
diff --git a/src/gallium/drivers/panfrost/pan_bo.h b/src/gallium/drivers/panfrost/pan_bo.h
index dfdb202e5d3..2858d3782ef 100644
--- a/src/gallium/drivers/panfrost/pan_bo.h
+++ b/src/gallium/drivers/panfrost/pan_bo.h
@@ -83,8 +83,6 @@ panfrost_bo_create(struct panfrost_screen *screen, size_t size,
uint32_t flags);
void
panfrost_bo_mmap(struct panfrost_bo *bo);
-void
-panfrost_bo_release(struct panfrost_bo *bo, bool cacheable);
struct panfrost_bo *
panfrost_bo_import(struct panfrost_screen *screen, int fd);
int
diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index 55fe9c26454..c5139a21f9a 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -2425,9 +2425,9 @@ panfrost_destroy(struct pipe_context *pipe)
if (panfrost->blitter_wallpaper)
util_blitter_destroy(panfrost->blitter_wallpaper);
- panfrost_bo_release(panfrost->scratchpad, false);
- panfrost_bo_release(panfrost->tiler_heap, false);
- panfrost_bo_release(panfrost->tiler_dummy, false);
+ panfrost_bo_unreference(panfrost->scratchpad);
+ panfrost_bo_unreference(panfrost->tiler_heap);
+ panfrost_bo_unreference(panfrost->tiler_dummy);
ralloc_free(pipe);
}
diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c
index 1e8a1eadb51..363a330c4fd 100644
--- a/src/gallium/drivers/panfrost/pan_resource.c
+++ b/src/gallium/drivers/panfrost/pan_resource.c
@@ -839,7 +839,7 @@ panfrost_resource_hint_layout(
/* If we grew in size, reallocate the BO */
if (new_size > rsrc->bo->size) {
- panfrost_bo_release(rsrc->bo, true);
+ panfrost_bo_unreference(rsrc->bo);
rsrc->bo = panfrost_bo_create(screen, new_size, PAN_BO_DELAY_MMAP);
}
}