diff options
Diffstat (limited to 'src/gallium/drivers/vc5/vc5_resource.c')
-rw-r--r-- | src/gallium/drivers/vc5/vc5_resource.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/src/gallium/drivers/vc5/vc5_resource.c b/src/gallium/drivers/vc5/vc5_resource.c index a9cc27127f..9ecd083b05 100644 --- a/src/gallium/drivers/vc5/vc5_resource.c +++ b/src/gallium/drivers/vc5/vc5_resource.c @@ -654,10 +654,6 @@ vc5_create_surface(struct pipe_context *pctx, unsigned level = surf_tmpl->u.tex.level; struct vc5_resource_slice *slice = &rsc->slices[level]; - struct vc5_resource_slice *separate_stencil_slice = NULL; - if (rsc->separate_stencil) - separate_stencil_slice = &rsc->separate_stencil->slices[level]; - pipe_reference_init(&psurf->reference, 1); pipe_resource_reference(&psurf->texture, ptex); @@ -672,14 +668,6 @@ vc5_create_surface(struct pipe_context *pctx, surface->offset = (slice->offset + psurf->u.tex.first_layer * rsc->cube_map_stride); surface->tiling = slice->tiling; - if (separate_stencil_slice) { - surface->separate_stencil_offset = - (separate_stencil_slice->offset + - psurf->u.tex.first_layer * - rsc->separate_stencil->cube_map_stride); - surface->separate_stencil_tiling = - separate_stencil_slice->tiling; - } surface->format = vc5_get_rt_format(&screen->devinfo, psurf->format); @@ -709,13 +697,12 @@ vc5_create_surface(struct pipe_context *pctx, surface->padded_height_of_output_image_in_uif_blocks = ((slice->size / slice->stride) / (2 * vc5_utile_height(rsc->cpp))); + } - if (separate_stencil_slice) { - surface->separate_stencil_padded_height_of_output_image_in_uif_blocks = - ((separate_stencil_slice->size / - separate_stencil_slice->stride) / - (2 * vc5_utile_height(rsc->separate_stencil->cpp))); - } + if (rsc->separate_stencil) { + surface->separate_stencil = + vc5_create_surface(pctx, &rsc->separate_stencil->base, + surf_tmpl); } return &surface->base; @@ -724,6 +711,11 @@ vc5_create_surface(struct pipe_context *pctx, static void vc5_surface_destroy(struct pipe_context *pctx, struct pipe_surface *psurf) { + struct vc5_surface *surf = vc5_surface(psurf); + + if (surf->separate_stencil) + pipe_surface_reference(&surf->separate_stencil, NULL); + pipe_resource_reference(&psurf->texture, NULL); FREE(psurf); } |