st/nine: Refactor volume GetSystemMemPointer

It will make it easier to reuse in another place.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
This commit is contained in:
Axel Davy
2019-04-10 22:53:02 +02:00
parent 85c9d92067
commit 22c41d2d81
+11 -8
View File
@@ -232,15 +232,16 @@ NineVolume9_AddDirtyRegion( struct NineVolume9 *This,
}
}
static inline uint8_t *
NineVolume9_GetSystemMemPointer(struct NineVolume9 *This, int x, int y, int z)
static inline unsigned
NineVolume9_GetSystemMemOffset(enum pipe_format format, unsigned stride,
unsigned layer_stride,
int x, int y, int z)
{
unsigned x_offset = util_format_get_stride(This->info.format, x);
unsigned x_offset = util_format_get_stride(format, x);
y = util_format_get_nblocksy(This->info.format, y);
y = util_format_get_nblocksy(format, y);
assert(This->data);
return This->data + (z * This->layer_stride + y * This->stride + x_offset);
return z * layer_stride + y * stride + x_offset;
}
HRESULT NINE_WINAPI
@@ -324,8 +325,10 @@ NineVolume9_LockBox( struct NineVolume9 *This,
} else if (This->data) {
pLockedVolume->RowPitch = This->stride;
pLockedVolume->SlicePitch = This->layer_stride;
pLockedVolume->pBits =
NineVolume9_GetSystemMemPointer(This, box.x, box.y, box.z);
pLockedVolume->pBits = This->data +
NineVolume9_GetSystemMemOffset(This->info.format, This->stride,
This->layer_stride,
box.x, box.y, box.z);
} else {
bool no_refs = !p_atomic_read(&This->base.bind) &&
!p_atomic_read(&This->base.container->bind);