mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 06:40:11 +01:00
gallium: fill in missing formats for vertex_fetch
This commit is contained in:
parent
5abc8d9e23
commit
4141ebdf59
1 changed files with 203 additions and 17 deletions
|
|
@ -62,50 +62,236 @@ fetch_##NAME(const void *ptr, float *attrib) \
|
|||
} \
|
||||
}
|
||||
|
||||
#define CVT_64_FLOAT ((double *) ptr)[i]
|
||||
#define CVT_32_FLOAT ((float *) ptr)[i]
|
||||
|
||||
#define CVT_8_USCALED (float) ((unsigned char *) ptr)[i]
|
||||
#define CVT_16_USCALED (float) ((unsigned short *) ptr)[i]
|
||||
#define CVT_32_USCALED (float) ((unsigned int *) ptr)[i]
|
||||
|
||||
#define CVT_8_SSCALED (float) ((char *) ptr)[i]
|
||||
#define CVT_16_SSCALED (float) ((short *) ptr)[i]
|
||||
#define CVT_32_SSCALED (float) ((int *) ptr)[i]
|
||||
|
||||
#define CVT_8_UNORM (float) ((unsigned char *) ptr)[i] / 255.0f
|
||||
#define CVT_16_UNORM (float) ((unsigned short *) ptr)[i] / 65535.0f
|
||||
#define CVT_32_UNORM (float) ((unsigned int *) ptr)[i] / 4294967295.0f
|
||||
|
||||
#define CVT_8_SNORM (float) ((char *) ptr)[i] / 127.0f
|
||||
#define CVT_16_SNORM (float) ((short *) ptr)[i] / 32767.0f
|
||||
#define CVT_32_SNORM (float) ((int *) ptr)[i] / 2147483647.0f
|
||||
|
||||
FETCH_ATTRIB( R64G64B64A64_FLOAT, 4, CVT_64_FLOAT )
|
||||
FETCH_ATTRIB( R64G64B64_FLOAT, 3, CVT_64_FLOAT )
|
||||
FETCH_ATTRIB( R64G64_FLOAT, 2, CVT_64_FLOAT )
|
||||
FETCH_ATTRIB( R64_FLOAT, 1, CVT_64_FLOAT )
|
||||
|
||||
FETCH_ATTRIB( R32G32B32A32_FLOAT, 4, CVT_32_FLOAT )
|
||||
FETCH_ATTRIB( R32G32B32_FLOAT, 3, CVT_32_FLOAT )
|
||||
FETCH_ATTRIB( R32G32_FLOAT, 2, CVT_32_FLOAT )
|
||||
FETCH_ATTRIB( R32_FLOAT, 1, CVT_32_FLOAT )
|
||||
|
||||
FETCH_ATTRIB( R32G32B32A32_USCALED, 4, CVT_32_USCALED )
|
||||
FETCH_ATTRIB( R32G32B32_USCALED, 3, CVT_32_USCALED )
|
||||
FETCH_ATTRIB( R32G32_USCALED, 2, CVT_32_USCALED )
|
||||
FETCH_ATTRIB( R32_USCALED, 1, CVT_32_USCALED )
|
||||
|
||||
FETCH_ATTRIB( R32G32B32A32_SSCALED, 4, CVT_32_SSCALED )
|
||||
FETCH_ATTRIB( R32G32B32_SSCALED, 3, CVT_32_SSCALED )
|
||||
FETCH_ATTRIB( R32G32_SSCALED, 2, CVT_32_SSCALED )
|
||||
FETCH_ATTRIB( R32_SSCALED, 1, CVT_32_SSCALED )
|
||||
|
||||
FETCH_ATTRIB( R32G32B32A32_UNORM, 4, CVT_32_UNORM )
|
||||
FETCH_ATTRIB( R32G32B32_UNORM, 3, CVT_32_UNORM )
|
||||
FETCH_ATTRIB( R32G32_UNORM, 2, CVT_32_UNORM )
|
||||
FETCH_ATTRIB( R32_UNORM, 1, CVT_32_UNORM )
|
||||
|
||||
FETCH_ATTRIB( R32G32B32A32_SNORM, 4, CVT_32_SNORM )
|
||||
FETCH_ATTRIB( R32G32B32_SNORM, 3, CVT_32_SNORM )
|
||||
FETCH_ATTRIB( R32G32_SNORM, 2, CVT_32_SNORM )
|
||||
FETCH_ATTRIB( R32_SNORM, 1, CVT_32_SNORM )
|
||||
|
||||
FETCH_ATTRIB( R16G16B16A16_USCALED, 4, CVT_16_USCALED )
|
||||
FETCH_ATTRIB( R16G16B16_USCALED, 3, CVT_16_USCALED )
|
||||
FETCH_ATTRIB( R16G16_USCALED, 2, CVT_16_USCALED )
|
||||
FETCH_ATTRIB( R16_USCALED, 1, CVT_16_USCALED )
|
||||
|
||||
FETCH_ATTRIB( R16G16B16A16_SSCALED, 4, CVT_16_SSCALED )
|
||||
FETCH_ATTRIB( R16G16B16_SSCALED, 3, CVT_16_SSCALED )
|
||||
FETCH_ATTRIB( R16G16_SSCALED, 2, CVT_16_SSCALED )
|
||||
FETCH_ATTRIB( R16_SSCALED, 1, CVT_16_SSCALED )
|
||||
|
||||
FETCH_ATTRIB( R16G16B16A16_UNORM, 4, CVT_16_UNORM )
|
||||
FETCH_ATTRIB( R16G16B16_UNORM, 3, CVT_16_UNORM )
|
||||
FETCH_ATTRIB( R16G16_UNORM, 2, CVT_16_UNORM )
|
||||
FETCH_ATTRIB( R16_UNORM, 1, CVT_16_UNORM )
|
||||
|
||||
FETCH_ATTRIB( R16G16B16A16_SNORM, 4, CVT_16_SNORM )
|
||||
FETCH_ATTRIB( R16G16B16_SNORM, 3, CVT_16_SNORM )
|
||||
FETCH_ATTRIB( R16G16_SNORM, 2, CVT_16_SNORM )
|
||||
FETCH_ATTRIB( R16_SNORM, 1, CVT_16_SNORM )
|
||||
|
||||
FETCH_ATTRIB( R8G8B8A8_USCALED, 4, CVT_8_USCALED )
|
||||
FETCH_ATTRIB( R8G8B8_USCALED, 3, CVT_8_USCALED )
|
||||
FETCH_ATTRIB( R8G8_USCALED, 2, CVT_8_USCALED )
|
||||
FETCH_ATTRIB( R8_USCALED, 1, CVT_8_USCALED )
|
||||
|
||||
FETCH_ATTRIB( R8G8B8A8_SSCALED, 4, CVT_8_SSCALED )
|
||||
FETCH_ATTRIB( R8G8B8_SSCALED, 3, CVT_8_SSCALED )
|
||||
FETCH_ATTRIB( R8G8_SSCALED, 2, CVT_8_SSCALED )
|
||||
FETCH_ATTRIB( R8_SSCALED, 1, CVT_8_SSCALED )
|
||||
|
||||
FETCH_ATTRIB( R8G8B8A8_UNORM, 4, CVT_8_UNORM )
|
||||
FETCH_ATTRIB( R8G8B8_UNORM, 3, CVT_8_UNORM )
|
||||
FETCH_ATTRIB( R8G8_UNORM, 2, CVT_8_UNORM )
|
||||
FETCH_ATTRIB( R8_UNORM, 1, CVT_8_UNORM )
|
||||
|
||||
FETCH_ATTRIB( R8G8B8A8_SNORM, 4, CVT_8_SNORM )
|
||||
FETCH_ATTRIB( R8G8B8_SNORM, 3, CVT_8_SNORM )
|
||||
FETCH_ATTRIB( R8G8_SNORM, 2, CVT_8_SNORM )
|
||||
FETCH_ATTRIB( R8_SNORM, 1, CVT_8_SNORM )
|
||||
|
||||
FETCH_ATTRIB( A8R8G8B8_UNORM, 4, CVT_8_UNORM )
|
||||
FETCH_ATTRIB( R8G8B8A8_UNORM, 4, CVT_8_UNORM )
|
||||
//FETCH_ATTRIB( R8G8B8A8_UNORM, 4, CVT_8_UNORM )
|
||||
|
||||
|
||||
|
||||
static fetch_func get_fetch_func( enum pipe_format format )
|
||||
{
|
||||
switch (format) {
|
||||
case PIPE_FORMAT_R32G32B32A32_FLOAT:
|
||||
return fetch_R32G32B32A32_FLOAT;
|
||||
case PIPE_FORMAT_R32G32B32_FLOAT:
|
||||
return fetch_R32G32B32_FLOAT;
|
||||
case PIPE_FORMAT_R32G32_FLOAT:
|
||||
return fetch_R32G32_FLOAT;
|
||||
case PIPE_FORMAT_R64_FLOAT:
|
||||
return fetch_R64_FLOAT;
|
||||
case PIPE_FORMAT_R64G64_FLOAT:
|
||||
return fetch_R64G64_FLOAT;
|
||||
case PIPE_FORMAT_R64G64B64_FLOAT:
|
||||
return fetch_R64G64B64_FLOAT;
|
||||
case PIPE_FORMAT_R64G64B64A64_FLOAT:
|
||||
return fetch_R64G64B64A64_FLOAT;
|
||||
|
||||
case PIPE_FORMAT_R32_FLOAT:
|
||||
return fetch_R32_FLOAT;
|
||||
case PIPE_FORMAT_R32G32B32A32_SSCALED:
|
||||
return fetch_R32G32B32A32_SSCALED;
|
||||
case PIPE_FORMAT_R32G32B32_SSCALED:
|
||||
return fetch_R32G32B32_SSCALED;
|
||||
case PIPE_FORMAT_R32G32_SSCALED:
|
||||
return fetch_R32G32_SSCALED;
|
||||
case PIPE_FORMAT_R32G32_FLOAT:
|
||||
return fetch_R32G32_FLOAT;
|
||||
case PIPE_FORMAT_R32G32B32_FLOAT:
|
||||
return fetch_R32G32B32_FLOAT;
|
||||
case PIPE_FORMAT_R32G32B32A32_FLOAT:
|
||||
return fetch_R32G32B32A32_FLOAT;
|
||||
|
||||
case PIPE_FORMAT_R32_UNORM:
|
||||
return fetch_R32_UNORM;
|
||||
case PIPE_FORMAT_R32G32_UNORM:
|
||||
return fetch_R32G32_UNORM;
|
||||
case PIPE_FORMAT_R32G32B32_UNORM:
|
||||
return fetch_R32G32B32_UNORM;
|
||||
case PIPE_FORMAT_R32G32B32A32_UNORM:
|
||||
return fetch_R32G32B32A32_UNORM;
|
||||
|
||||
case PIPE_FORMAT_R32_USCALED:
|
||||
return fetch_R32_USCALED;
|
||||
case PIPE_FORMAT_R32G32_USCALED:
|
||||
return fetch_R32G32_USCALED;
|
||||
case PIPE_FORMAT_R32G32B32_USCALED:
|
||||
return fetch_R32G32B32_USCALED;
|
||||
case PIPE_FORMAT_R32G32B32A32_USCALED:
|
||||
return fetch_R32G32B32A32_USCALED;
|
||||
|
||||
case PIPE_FORMAT_R32_SNORM:
|
||||
return fetch_R32_SNORM;
|
||||
case PIPE_FORMAT_R32G32_SNORM:
|
||||
return fetch_R32G32_SNORM;
|
||||
case PIPE_FORMAT_R32G32B32_SNORM:
|
||||
return fetch_R32G32B32_SNORM;
|
||||
case PIPE_FORMAT_R32G32B32A32_SNORM:
|
||||
return fetch_R32G32B32A32_SNORM;
|
||||
|
||||
case PIPE_FORMAT_R32_SSCALED:
|
||||
return fetch_R32_SSCALED;
|
||||
case PIPE_FORMAT_A8R8G8B8_UNORM:
|
||||
return fetch_A8R8G8B8_UNORM;
|
||||
case PIPE_FORMAT_R32G32_SSCALED:
|
||||
return fetch_R32G32_SSCALED;
|
||||
case PIPE_FORMAT_R32G32B32_SSCALED:
|
||||
return fetch_R32G32B32_SSCALED;
|
||||
case PIPE_FORMAT_R32G32B32A32_SSCALED:
|
||||
return fetch_R32G32B32A32_SSCALED;
|
||||
|
||||
case PIPE_FORMAT_R16_UNORM:
|
||||
return fetch_R16_UNORM;
|
||||
case PIPE_FORMAT_R16G16_UNORM:
|
||||
return fetch_R16G16_UNORM;
|
||||
case PIPE_FORMAT_R16G16B16_UNORM:
|
||||
return fetch_R16G16B16_UNORM;
|
||||
case PIPE_FORMAT_R16G16B16A16_UNORM:
|
||||
return fetch_R16G16B16A16_UNORM;
|
||||
|
||||
case PIPE_FORMAT_R16_USCALED:
|
||||
return fetch_R16_USCALED;
|
||||
case PIPE_FORMAT_R16G16_USCALED:
|
||||
return fetch_R16G16_USCALED;
|
||||
case PIPE_FORMAT_R16G16B16_USCALED:
|
||||
return fetch_R16G16B16_USCALED;
|
||||
case PIPE_FORMAT_R16G16B16A16_USCALED:
|
||||
return fetch_R16G16B16A16_USCALED;
|
||||
|
||||
case PIPE_FORMAT_R16_SNORM:
|
||||
return fetch_R16_SNORM;
|
||||
case PIPE_FORMAT_R16G16_SNORM:
|
||||
return fetch_R16G16_SNORM;
|
||||
case PIPE_FORMAT_R16G16B16_SNORM:
|
||||
return fetch_R16G16B16_SNORM;
|
||||
case PIPE_FORMAT_R16G16B16A16_SNORM:
|
||||
return fetch_R16G16B16A16_SNORM;
|
||||
|
||||
case PIPE_FORMAT_R16_SSCALED:
|
||||
return fetch_R16_SSCALED;
|
||||
case PIPE_FORMAT_R16G16_SSCALED:
|
||||
return fetch_R16G16_SSCALED;
|
||||
case PIPE_FORMAT_R16G16B16_SSCALED:
|
||||
return fetch_R16G16B16_SSCALED;
|
||||
case PIPE_FORMAT_R16G16B16A16_SSCALED:
|
||||
return fetch_R16G16B16A16_SSCALED;
|
||||
|
||||
case PIPE_FORMAT_R8_UNORM:
|
||||
return fetch_R8_UNORM;
|
||||
case PIPE_FORMAT_R8G8_UNORM:
|
||||
return fetch_R8G8_UNORM;
|
||||
case PIPE_FORMAT_R8G8B8_UNORM:
|
||||
return fetch_R8G8B8_UNORM;
|
||||
case PIPE_FORMAT_R8G8B8A8_UNORM:
|
||||
return fetch_R8G8B8A8_UNORM;
|
||||
|
||||
case PIPE_FORMAT_R8_USCALED:
|
||||
return fetch_R8_USCALED;
|
||||
case PIPE_FORMAT_R8G8_USCALED:
|
||||
return fetch_R8G8_USCALED;
|
||||
case PIPE_FORMAT_R8G8B8_USCALED:
|
||||
return fetch_R8G8B8_USCALED;
|
||||
case PIPE_FORMAT_R8G8B8A8_USCALED:
|
||||
return fetch_R8G8B8A8_USCALED;
|
||||
|
||||
case PIPE_FORMAT_R8_SNORM:
|
||||
return fetch_R8_SNORM;
|
||||
case PIPE_FORMAT_R8G8_SNORM:
|
||||
return fetch_R8G8_SNORM;
|
||||
case PIPE_FORMAT_R8G8B8_SNORM:
|
||||
return fetch_R8G8B8_SNORM;
|
||||
case PIPE_FORMAT_R8G8B8A8_SNORM:
|
||||
return fetch_R8G8B8A8_SNORM;
|
||||
|
||||
case PIPE_FORMAT_R8_SSCALED:
|
||||
return fetch_R8_SSCALED;
|
||||
case PIPE_FORMAT_R8G8_SSCALED:
|
||||
return fetch_R8G8_SSCALED;
|
||||
case PIPE_FORMAT_R8G8B8_SSCALED:
|
||||
return fetch_R8G8B8_SSCALED;
|
||||
case PIPE_FORMAT_R8G8B8A8_SSCALED:
|
||||
return fetch_R8G8B8A8_SSCALED;
|
||||
|
||||
case PIPE_FORMAT_A8R8G8B8_UNORM:
|
||||
return fetch_A8R8G8B8_UNORM;
|
||||
|
||||
case 0:
|
||||
return NULL;
|
||||
return NULL; /* not sure why this is needed */
|
||||
|
||||
default:
|
||||
/* Lots of missing cases! */
|
||||
assert(0);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue