static const struct fd6_pipe_sampler_view dummy_view = {};
const struct fd6_pipe_sampler_view *view = tex->textures[i] ?
fd6_pipe_sampler_view(tex->textures[i]) : &dummy_view;
- enum a6xx_tile_mode tile_mode = TILE6_LINEAR;
- if (view->base.texture)
- tile_mode = fd_resource(view->base.texture)->tile_mode;
-
- OUT_RING(state, view->texconst0 |
- A6XX_TEX_CONST_0_TILE_MODE(tile_mode));
+ OUT_RING(state, view->texconst0);
OUT_RING(state, view->texconst1);
OUT_RING(state, view->texconst2);
OUT_RING(state, view->texconst3);
so->offset = cso->u.buf.offset;
} else {
unsigned miplevels;
+ enum a6xx_tile_mode tile_mode = TILE6_LINEAR;
lvl = fd_sampler_first_level(cso);
miplevels = fd_sampler_last_level(cso) - lvl;
layers = cso->u.tex.last_layer - cso->u.tex.first_layer + 1;
- so->texconst0 |= A6XX_TEX_CONST_0_MIPLVLS(miplevels);
+ if (!fd_resource_level_linear(prsc, lvl))
+ tile_mode = fd_resource(prsc)->tile_mode;
+
+ so->texconst0 |= A6XX_TEX_CONST_0_MIPLVLS(miplevels) |
+ A6XX_TEX_CONST_0_TILE_MODE(tile_mode);
so->texconst1 =
A6XX_TEX_CONST_1_WIDTH(u_minify(prsc->width0, lvl)) |
A6XX_TEX_CONST_1_HEIGHT(u_minify(prsc->height0, lvl));