Mesa (master): broadcom/vc4: Fix double-unrefcounting of prsc->next with shadows.
Eric Anholt
anholt at kemper.freedesktop.org
Fri Feb 23 16:44:23 UTC 2018
Module: Mesa
Branch: master
Commit: c824a045ea639b8a93cbc2518b16900402d9150f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c824a045ea639b8a93cbc2518b16900402d9150f
Author: Eric Anholt <eric at anholt.net>
Date: Tue Feb 20 16:28:07 2018 +0000
broadcom/vc4: Fix double-unrefcounting of prsc->next with shadows.
When we set up the shadow resource we were copying the original resource
as the template, including its prsc->next field. When we shadowed the
first YUV plane's resource for linear-to-tiled conversion, we would end up
unbalancing the refcount on the shadow resource's destruction.
---
src/gallium/drivers/vc4/vc4_state.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/gallium/drivers/vc4/vc4_state.c b/src/gallium/drivers/vc4/vc4_state.c
index b4696ed798..7bc87b0c4e 100644
--- a/src/gallium/drivers/vc4/vc4_state.c
+++ b/src/gallium/drivers/vc4/vc4_state.c
@@ -583,12 +583,17 @@ vc4_create_sampler_view(struct pipe_context *pctx, struct pipe_resource *prsc,
(cso->u.tex.first_level != cso->u.tex.last_level)) ||
rsc->vc4_format == VC4_TEXTURE_TYPE_RGBA32R) {
struct vc4_resource *shadow_parent = rsc;
- struct pipe_resource tmpl = *prsc;
-
- tmpl.bind = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET;
- tmpl.width0 = u_minify(tmpl.width0, cso->u.tex.first_level);
- tmpl.height0 = u_minify(tmpl.height0, cso->u.tex.first_level);
- tmpl.last_level = cso->u.tex.last_level - cso->u.tex.first_level;
+ struct pipe_resource tmpl = {
+ .target = prsc->target,
+ .format = prsc->format,
+ .width0 = u_minify(prsc->width0,
+ cso->u.tex.first_level),
+ .height0 = u_minify(prsc->height0,
+ cso->u.tex.first_level),
+ .bind = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET,
+ .last_level = cso->u.tex.last_level - cso->u.tex.first_level,
+ .nr_samples = prsc->nr_samples,
+ };
/* Create the shadow texture. The rest of the texture
* parameter setup will use the shadow.
More information about the mesa-commit
mailing list