summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/svga
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/svga')
-rw-r--r--src/gallium/drivers/svga/svga_context.c2
-rw-r--r--src/gallium/drivers/svga/svga_surface.c16
2 files changed, 12 insertions, 6 deletions
diff --git a/src/gallium/drivers/svga/svga_context.c b/src/gallium/drivers/svga/svga_context.c
index b3b2728305d..78fb558f408 100644
--- a/src/gallium/drivers/svga/svga_context.c
+++ b/src/gallium/drivers/svga/svga_context.c
@@ -229,6 +229,8 @@ struct pipe_context *svga_context_create(struct pipe_screen *screen,
memset(svga->state.hw_draw.sampler_views, 0,
sizeof(svga->state.hw_draw.sampler_views));
svga->state.hw_draw.num_views = 0;
+ svga->state.hw_draw.num_rendertargets = 0;
+ svga->state.hw_draw.dsv = NULL;
/* Initialize the shader pointers */
svga->state.hw_draw.vs = NULL;
diff --git a/src/gallium/drivers/svga/svga_surface.c b/src/gallium/drivers/svga/svga_surface.c
index 75e76fb297e..f6a791332c9 100644
--- a/src/gallium/drivers/svga/svga_surface.c
+++ b/src/gallium/drivers/svga/svga_surface.c
@@ -664,17 +664,21 @@ svga_propagate_surface(struct svga_context *svga, struct pipe_surface *surf)
void
svga_propagate_rendertargets(struct svga_context *svga)
{
- const unsigned num_cbufs = svga_screen(svga->pipe.screen)->max_color_buffers;
unsigned i;
- for (i = 0; i < num_cbufs; i++) {
- if (svga->curr.framebuffer.cbufs[i]) {
- svga_propagate_surface(svga, svga->curr.framebuffer.cbufs[i]);
+ /* Note that we examine the svga->state.hw_draw.framebuffer surfaces,
+ * not the svga->curr.framebuffer surfaces, because it's the former
+ * surfaces which may be backing surface views (the actual render targets).
+ */
+ for (i = 0; i < svga->state.hw_draw.num_rendertargets; i++) {
+ struct pipe_surface *s = svga->state.hw_draw.rtv[i];
+ if (s) {
+ svga_propagate_surface(svga, s);
}
}
- if (svga->curr.framebuffer.zsbuf) {
- svga_propagate_surface(svga, svga->curr.framebuffer.zsbuf);
+ if (svga->state.hw_draw.dsv) {
+ svga_propagate_surface(svga, svga->state.hw_draw.dsv);
}
}