gallium/util: Implement util_format_translate_3d

This is the equivalent of util_format_translate, but for volumes.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
This commit is contained in:
Axel Davy 2016-03-07 21:35:59 +01:00
parent 89344a80fc
commit 52cb8e33c3
2 changed files with 47 additions and 0 deletions

View File

@ -739,6 +739,40 @@ util_format_translate(enum pipe_format dst_format,
return TRUE;
}
boolean
util_format_translate_3d(enum pipe_format dst_format,
void *dst, unsigned dst_stride,
unsigned dst_slice_stride,
unsigned dst_x, unsigned dst_y,
unsigned dst_z,
enum pipe_format src_format,
const void *src, unsigned src_stride,
unsigned src_slice_stride,
unsigned src_x, unsigned src_y,
unsigned src_z, unsigned width,
unsigned height, unsigned depth)
{
uint8_t *dst_layer;
const uint8_t *src_layer;
unsigned z;
dst_layer = dst;
src_layer = src;
dst_layer += dst_z * dst_slice_stride;
src_layer += src_z * src_slice_stride;
for (z = 0; z < depth; ++z) {
if (!util_format_translate(dst_format, dst_layer, dst_stride,
dst_x, dst_y,
src_format, src_layer, src_stride,
src_x, src_y,
width, height))
return FALSE;
dst_layer += dst_slice_stride;
src_layer += src_slice_stride;
}
return TRUE;
}
void util_format_compose_swizzles(const unsigned char swz1[4],
const unsigned char swz2[4],
unsigned char dst[4])

View File

@ -1271,6 +1271,19 @@ util_format_translate(enum pipe_format dst_format,
unsigned src_x, unsigned src_y,
unsigned width, unsigned height);
boolean
util_format_translate_3d(enum pipe_format dst_format,
void *dst, unsigned dst_stride,
unsigned dst_slice_stride,
unsigned dst_x, unsigned dst_y,
unsigned dst_z,
enum pipe_format src_format,
const void *src, unsigned src_stride,
unsigned src_slice_stride,
unsigned src_x, unsigned src_y,
unsigned src_z, unsigned width,
unsigned height, unsigned depth);
/*
* Swizzle operations.
*/