summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c')
-rw-r--r--src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c14
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++;
}