mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 22:38:05 +02:00
freedreno/a4xx: fix 3d texture setup
Same fix as on a3xx - set the second (tiny) layer size bitfield to the
smallest level's size so that the hw knows not to minify beyond that.
This fixes texelFetch sampler3D piglits.
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: mesa-stable@lists.freedesktop.org
(cherry picked from commit 740eb63aa7)
This commit is contained in:
parent
cb4f6e2a30
commit
17a64701cb
3 changed files with 7 additions and 3 deletions
|
|
@ -194,7 +194,7 @@ emit_textures(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||
if (view->base.texture) {
|
||||
struct fd_resource *rsc = fd_resource(view->base.texture);
|
||||
uint32_t offset = fd_resource_offset(rsc, start, 0);
|
||||
OUT_RELOC(ring, rsc->bo, offset, view->textconst4, 0);
|
||||
OUT_RELOC(ring, rsc->bo, offset, view->texconst4, 0);
|
||||
} else {
|
||||
OUT_RING(ring, 0x00000000);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -214,6 +214,7 @@ fd4_sampler_view_create(struct pipe_context *pctx, struct pipe_resource *prsc,
|
|||
struct fd_resource *rsc = fd_resource(prsc);
|
||||
unsigned lvl = fd_sampler_first_level(cso);
|
||||
unsigned miplevels = fd_sampler_last_level(cso) - lvl;
|
||||
uint32_t sz2 = 0;
|
||||
|
||||
if (!so)
|
||||
return NULL;
|
||||
|
|
@ -259,7 +260,10 @@ fd4_sampler_view_create(struct pipe_context *pctx, struct pipe_resource *prsc,
|
|||
case PIPE_TEXTURE_3D:
|
||||
so->texconst3 =
|
||||
A4XX_TEX_CONST_3_DEPTH(u_minify(prsc->depth0, lvl)) |
|
||||
A4XX_TEX_CONST_3_LAYERSZ(rsc->slices[0].size0);
|
||||
A4XX_TEX_CONST_3_LAYERSZ(rsc->slices[lvl].size0);
|
||||
while (lvl < cso->u.tex.last_level && sz2 != rsc->slices[lvl+1].size0)
|
||||
sz2 = rsc->slices[++lvl].size0;
|
||||
so->texconst4 = A4XX_TEX_CONST_4_LAYERSZ(sz2);
|
||||
break;
|
||||
default:
|
||||
so->texconst3 = 0x00000000;
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ fd4_sampler_stateobj(struct pipe_sampler_state *samp)
|
|||
|
||||
struct fd4_pipe_sampler_view {
|
||||
struct pipe_sampler_view base;
|
||||
uint32_t texconst0, texconst1, texconst2, texconst3, textconst4;
|
||||
uint32_t texconst0, texconst1, texconst2, texconst3, texconst4;
|
||||
};
|
||||
|
||||
static inline struct fd4_pipe_sampler_view *
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue