[Mesa-dev] [PATCH v2 6/9] st/mesa: set pipe_image_view layers correctly for 3D textures
Ilia Mirkin
imirkin at alum.mit.edu
Sun Feb 14 00:22:37 UTC 2016
From: Nicolai Hähnle <nicolai.haehnle at amd.com>
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
src/mesa/state_tracker/st_atom_image.c | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/src/mesa/state_tracker/st_atom_image.c b/src/mesa/state_tracker/st_atom_image.c
index ff36537..4b48bc3 100644
--- a/src/mesa/state_tracker/st_atom_image.c
+++ b/src/mesa/state_tracker/st_atom_image.c
@@ -84,13 +84,23 @@ st_bind_images(struct st_context *st, struct gl_shader *shader,
img->u.buf.last_element = f + (n - 1);
} else {
img->u.tex.level = u->Level + stObj->base.MinLevel;
- img->u.tex.first_layer = u->_Layer + stObj->base.MinLayer;
- img->u.tex.last_layer = u->_Layer + stObj->base.MinLayer;
- if (u->Layered && img->resource->array_size > 1) {
- if (stObj->base.Immutable)
- img->u.tex.last_layer += stObj->base.NumLayers - 1;
- else
- img->u.tex.last_layer += img->resource->array_size - 1;
+ if (stObj->pt->target == PIPE_TEXTURE_3D) {
+ if (u->Layered) {
+ img->u.tex.first_layer = 0;
+ img->u.tex.last_layer = u_minify(stObj->pt->depth0, img->u.tex.level) - 1;
+ } else {
+ img->u.tex.first_layer = u->_Layer;
+ img->u.tex.last_layer = u->_Layer;
+ }
+ } else {
+ img->u.tex.first_layer = u->_Layer + stObj->base.MinLayer;
+ img->u.tex.last_layer = u->_Layer + stObj->base.MinLayer;
+ if (u->Layered && img->resource->array_size > 1) {
+ if (stObj->base.Immutable)
+ img->u.tex.last_layer += stObj->base.NumLayers - 1;
+ else
+ img->u.tex.last_layer += img->resource->array_size - 1;
+ }
}
}
}
--
2.4.10
More information about the mesa-dev
mailing list