diff options
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_fbo.c | 10 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_fbo.h | 3 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_fbo.c b/src/mesa/drivers/dri/i965/intel_fbo.c index 5ade9e6168a..c70b1bf36b2 100644 --- a/src/mesa/drivers/dri/i965/intel_fbo.c +++ b/src/mesa/drivers/dri/i965/intel_fbo.c @@ -319,6 +319,8 @@ intel_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffer if (!irb->mt) return false; + irb->layer_count = 1; + return true; } @@ -383,6 +385,7 @@ intel_image_target_renderbuffer_storage(struct gl_context *ctx, rb->Format = image->format; rb->_BaseFormat = _mesa_base_fbo_format(ctx, image->internal_format); rb->NeedsFinishRenderTexture = true; + irb->layer_count = 1; } /** @@ -435,6 +438,7 @@ intel_create_renderbuffer(mesa_format format, unsigned num_samples) } rb = &irb->Base.Base; + irb->layer_count = 1; _mesa_init_renderbuffer(rb, 0); rb->ClassID = INTEL_RB_CLASS; @@ -532,6 +536,12 @@ intel_renderbuffer_update_wrapper(struct brw_context *brw, irb->mt_layer = layer_multiplier * layer; + if (layered) { + irb->layer_count = image->TexObject->NumLayers ?: mt->level[level].depth / layer_multiplier; + } else { + irb->layer_count = 1; + } + intel_miptree_reference(&irb->mt, mt); intel_renderbuffer_set_draw_offset(irb); diff --git a/src/mesa/drivers/dri/i965/intel_fbo.h b/src/mesa/drivers/dri/i965/intel_fbo.h index fa457e29d09..c7cc57073c1 100644 --- a/src/mesa/drivers/dri/i965/intel_fbo.h +++ b/src/mesa/drivers/dri/i965/intel_fbo.h @@ -90,6 +90,9 @@ struct intel_renderbuffer */ unsigned int mt_level; unsigned int mt_layer; + + /* The number of attached logical layers. */ + unsigned int layer_count; /** \} */ GLuint draw_x, draw_y; /**< Offset of drawing within the region */ |