svga: add helpers for tracking rendering to textures
[mesa.git] / src / gallium / drivers / svga / svga_resource_texture.c
index 05f56cb1559f298ac1b853b8e09cdb86f590740c..6d5b4c57c918d178f89c7780d5bd05b516565e64 100644 (file)
@@ -232,6 +232,7 @@ svga_texture_destroy(struct pipe_screen *screen,
 
    ss->total_resource_bytes -= tex->size;
 
+   FREE(tex->rendered_to);
    FREE(tex);
 }
 
@@ -475,9 +476,15 @@ svga_texture_create(struct pipe_screen *screen,
    tex->size = util_resource_size(template);
    svgascreen->total_resource_bytes += tex->size;
 
+   tex->rendered_to = CALLOC(template->depth0 * template->array_size,
+                             sizeof(tex->rendered_to[0]));
+   if (!tex->rendered_to)
+      goto error2;
+
    return &tex->b.b;
 
 error2:
+   FREE(tex->rendered_to);
    FREE(tex);
 error1:
    return NULL;
@@ -536,5 +543,7 @@ svga_texture_from_handle(struct pipe_screen *screen,
    tex->key.cachable = 0;
    tex->handle = srf;
 
+   tex->rendered_to = CALLOC(1, sizeof(tex->rendered_to[0]));
+
    return &tex->b.b;
 }