diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index a2426c3352d..52181f06d89 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -2426,10 +2426,15 @@ iris_create_sampler_view(struct pipe_context *ctx, if (tmpl->target != PIPE_BUFFER) { isv->view.base_level = tmpl->u.tex.first_level; isv->view.levels = tmpl->u.tex.last_level - tmpl->u.tex.first_level + 1; - // XXX: do I need to port f9fd0cf4790cb2a530e75d1a2206dbb9d8af7cb2? - isv->view.base_array_layer = tmpl->u.tex.first_layer; - isv->view.array_len = - tmpl->u.tex.last_layer - tmpl->u.tex.first_layer + 1; + + if (tmpl->target == PIPE_TEXTURE_3D) { + isv->view.base_array_layer = 0; + isv->view.array_len = 1; + } else { + isv->view.base_array_layer = tmpl->u.tex.first_layer; + isv->view.array_len = + tmpl->u.tex.last_layer - tmpl->u.tex.first_layer + 1; + } if (iris_resource_unfinished_aux_import(isv->res)) iris_resource_finish_aux_import(&screen->base, isv->res);