diff options
Diffstat (limited to 'src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c')
-rw-r--r-- | src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c index f3a5251a9a0..f7cd0d21192 100644 --- a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c +++ b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c @@ -892,7 +892,11 @@ gen6_pipeline_state_surfaces_rt(struct ilo_3d_pipeline *p, const struct ilo_surface_cso *surface = (const struct ilo_surface_cso *) fb->state.cbufs[i]; - if (fb->offset_to_layers) { + if (!surface) { + surface_state[i] = + gen6_emit_SURFACE_STATE(p->dev, &fb->null_rt, true, p->cp); + } + else if (fb->offset_to_layers) { struct ilo_view_surface layer; assert(surface->base.u.tex.first_layer == @@ -920,14 +924,8 @@ gen6_pipeline_state_surfaces_rt(struct ilo_3d_pipeline *p, * brw_update_renderbuffer_surfaces() does. I don't know why. */ if (i == 0) { - struct ilo_view_surface null_surface; - - ilo_gpe_init_view_surface_null(p->dev, - fb->state.width, fb->state.height, - 1, 0, &null_surface); - surface_state[i] = - gen6_emit_SURFACE_STATE(p->dev, &null_surface, true, p->cp); + gen6_emit_SURFACE_STATE(p->dev, &fb->null_rt, true, p->cp); i++; } |