diff options
author | Boris Brezillon <[email protected]> | 2019-08-28 16:52:37 +0200 |
---|---|---|
committer | Boris Brezillon <[email protected]> | 2019-08-28 17:50:44 +0200 |
commit | 8709b865ce122687d75af8e96cfbb9c851885899 (patch) | |
tree | 1e3b21c10a70e39200a991ed286408042d4b5edf /src | |
parent | 938c5b0148688f426235e81d6573f25e5021ceb7 (diff) |
panfrost: Reset the damage area on imported resources
Reset the damage area in the resource_from_handle() path (as done in
panfrost_resource_create()).
Signed-off-by: Boris Brezillon <[email protected]>
Reviewed-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/panfrost/pan_resource.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c index 1f5b23145cf..57df61cb71c 100644 --- a/src/gallium/drivers/panfrost/pan_resource.c +++ b/src/gallium/drivers/panfrost/pan_resource.c @@ -47,6 +47,17 @@ #include "pan_util.h" #include "pan_tiling.h" +static void +panfrost_resource_reset_damage(struct panfrost_resource *pres) +{ + /* We set the damage extent to the full resource size but keep the + * damage box empty so that the FB content is reloaded by default. + */ + memset(&pres->damage, 0, sizeof(pres->damage)); + pres->damage.extent.maxx = pres->base.width0; + pres->damage.extent.maxy = pres->base.height0; +} + static struct pipe_resource * panfrost_resource_from_handle(struct pipe_screen *pscreen, const struct pipe_resource *templat, @@ -73,6 +84,7 @@ panfrost_resource_from_handle(struct pipe_screen *pscreen, rsc->bo = panfrost_drm_import_bo(screen, whandle->handle); rsc->slices[0].stride = whandle->stride; rsc->slices[0].initialized = true; + panfrost_resource_reset_damage(rsc); if (screen->ro) { rsc->scanout = @@ -403,17 +415,6 @@ panfrost_resource_create_bo(struct panfrost_screen *screen, struct panfrost_reso pres->bo = panfrost_drm_create_bo(screen, bo_size, PAN_ALLOCATE_DELAY_MMAP); } -static void -panfrost_resource_reset_damage(struct panfrost_resource *pres) -{ - /* We set the damage extent to the full resource size but keep the - * damage box empty so that the FB content is reloaded by default. - */ - memset(&pres->damage, 0, sizeof(pres->damage)); - pres->damage.extent.maxx = pres->base.width0; - pres->damage.extent.maxy = pres->base.height0; -} - void panfrost_resource_set_damage_region(struct pipe_screen *screen, struct pipe_resource *res, |