mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
nouveau: Calc pitch for swizzled textures appropriately.
This commit is contained in:
parent
25eee19cd6
commit
4371a24c32
2 changed files with 7 additions and 5 deletions
|
|
@ -8,7 +8,6 @@ static void
|
|||
nv40_miptree_layout(struct nv40_miptree *mt)
|
||||
{
|
||||
struct pipe_texture *pt = &mt->base;
|
||||
boolean swizzled = FALSE;
|
||||
uint width = pt->width[0], height = pt->height[0], depth = pt->depth[0];
|
||||
uint offset = 0;
|
||||
int nr_faces, l, f, pitch;
|
||||
|
|
@ -30,7 +29,7 @@ nv40_miptree_layout(struct nv40_miptree *mt)
|
|||
pt->nblocksx[l] = pf_get_nblocksx(&pt->block, width);
|
||||
pt->nblocksy[l] = pf_get_nblocksy(&pt->block, height);
|
||||
|
||||
if (swizzled)
|
||||
if (!(pt->tex_usage & NOUVEAU_TEXTURE_USAGE_LINEAR))
|
||||
pitch = pt->nblocksx[l];
|
||||
pitch = align(pitch, 64);
|
||||
|
||||
|
|
@ -68,8 +67,6 @@ nv40_miptree_create(struct pipe_screen *pscreen, const struct pipe_texture *pt)
|
|||
mt->shadow_tex = NULL;
|
||||
mt->shadow_surface = NULL;
|
||||
|
||||
nv40_miptree_layout(mt);
|
||||
|
||||
/* Swizzled textures must be POT */
|
||||
if (pt->width[0] & (pt->width[0] - 1) ||
|
||||
pt->height[0] & (pt->height[0] - 1))
|
||||
|
|
@ -91,6 +88,8 @@ nv40_miptree_create(struct pipe_screen *pscreen, const struct pipe_texture *pt)
|
|||
}
|
||||
}
|
||||
|
||||
nv40_miptree_layout(mt);
|
||||
|
||||
mt->buffer = ws->buffer_create(ws, 256,
|
||||
PIPE_BUFFER_USAGE_PIXEL |
|
||||
NOUVEAU_BUFFER_USAGE_TEXTURE,
|
||||
|
|
|
|||
|
|
@ -84,12 +84,15 @@ nv04_scaled_image_format(enum pipe_format format)
|
|||
|
||||
static void
|
||||
nv04_surface_copy_swizzle(struct nouveau_context *nv, unsigned dx, unsigned dy,
|
||||
unsigned sx, unsigned sy, unsigned w, unsigned h)
|
||||
unsigned sx, unsigned sy, unsigned w, unsigned h)
|
||||
{
|
||||
struct nouveau_channel *chan = nv->nvc->channel;
|
||||
struct pipe_surface *dst = nv->surf_dst;
|
||||
struct pipe_surface *src = nv->surf_src;
|
||||
|
||||
/* POT or GTFO */
|
||||
assert(!(w & (w - 1)) && !(h & (h - 1)));
|
||||
|
||||
BEGIN_RING(chan, nv->nvc->NvSwzSurf, NV04_SWIZZLED_SURFACE_DMA_IMAGE, 1);
|
||||
OUT_RELOCo(chan, nouveau_buffer(dst->buffer)->bo,
|
||||
NOUVEAU_BO_GART | NOUVEAU_BO_VRAM | NOUVEAU_BO_WR);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue