diff --git a/.pick_status.json b/.pick_status.json index d046eb75cf9..f9400b406f5 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -184,7 +184,7 @@ "description": "iris: fix layer calculation for TEXTURE_3D ReadPixels() on mip-level>0", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "3c979b0e6d9e4d7a880cebcee514238ecb6baf61" }, diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index 2f0831a1078..de04c11f093 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -2415,10 +2415,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);