From 0d64d39e8188c797bc4f4bc7603cff6478972ae3 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Sat, 9 Apr 2016 20:32:25 +0200 Subject: [PATCH] nvc0: inform users that 3D images are not fully supported 3D images are a bit more complicated to implement and will probably requires a bunch of headaches and we don't care for now because they do not seem to be really used by apps. Signed-off-by: Samuel Pitoiset Reviewed-by: Ilia Mirkin --- src/gallium/drivers/nouveau/nvc0/nvc0_context.h | 2 +- src/gallium/drivers/nouveau/nvc0/nvc0_tex.c | 11 ++++++++--- src/gallium/drivers/nouveau/nvc0/nve4_compute.c | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_context.h b/src/gallium/drivers/nouveau/nvc0/nvc0_context.h index e6bad3d61bc..7fcbf4a5254 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_context.h +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_context.h @@ -328,7 +328,7 @@ void nvc0_validate_samplers(struct nvc0_context *); void nve4_set_tex_handles(struct nvc0_context *); void nvc0_validate_surfaces(struct nvc0_context *); void nve4_set_surface_info(struct nouveau_pushbuf *, struct pipe_image_view *, - struct nvc0_screen *); + struct nvc0_context *); struct pipe_sampler_view * nvc0_create_texture_view(struct pipe_context *, diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c b/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c index f5bf2cab656..28f48bf7241 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c @@ -782,8 +782,9 @@ nvc0_get_surface_dims(struct pipe_image_view *view, int *width, int *height, void nve4_set_surface_info(struct nouveau_pushbuf *push, struct pipe_image_view *view, - struct nvc0_screen *screen) + struct nvc0_context *nvc0) { + struct nvc0_screen *screen = nvc0->screen; struct nv04_resource *res; uint64_t address; uint32_t *const info = push->cur; @@ -884,7 +885,11 @@ nve4_set_surface_info(struct nouveau_pushbuf *push, if (mt->layout_3d) { address += nvc0_mt_zslice_offset(mt, view->u.tex.level, z); /* doesn't work if z passes z-tile boundary */ - assert(depth == 1); + if (depth > 1) { + pipe_debug_message(&nvc0->base.debug, CONFORMANCE, + "3D images are not really supported!"); + debug_printf("3D images are not really supported!\n"); + } } else { address += mt->layer_stride * z; } @@ -938,7 +943,7 @@ nve4_update_surface_bindings(struct nvc0_context *nvc0) if (view->resource) { struct nv04_resource *res = nv04_resource(view->resource); - nve4_set_surface_info(push, view, screen); + nve4_set_surface_info(push, view, nvc0); BCTX_REFN(nvc0->bufctx_3d, 3D_SUF, res, RDWR); } else { for (j = 0; j < 16; j++) diff --git a/src/gallium/drivers/nouveau/nvc0/nve4_compute.c b/src/gallium/drivers/nouveau/nvc0/nve4_compute.c index 05a49b1c9ad..0fe479a399c 100644 --- a/src/gallium/drivers/nouveau/nvc0/nve4_compute.c +++ b/src/gallium/drivers/nouveau/nvc0/nve4_compute.c @@ -219,7 +219,7 @@ nve4_compute_validate_surfaces(struct nvc0_context *nvc0) if (view->resource) { struct nv04_resource *res = nv04_resource(view->resource); - nve4_set_surface_info(push, view, screen); + nve4_set_surface_info(push, view, nvc0); BCTX_REFN(nvc0->bufctx_cp, CP_SUF, res, RDWR); } else { for (j = 0; j < 16; j++) -- 2.30.2