@ -29,6 +29,7 @@
# define SWIZZLE_INVALID 0xff
# define SWIZZLE_INVALID 0xff
# define NO_SWIZZLE { SWIZZLE_INVALID, SWIZZLE_INVALID, SWIZZLE_INVALID, SWIZZLE_INVALID }
# define NO_SWIZZLE { SWIZZLE_INVALID, SWIZZLE_INVALID, SWIZZLE_INVALID, SWIZZLE_INVALID }
# define RRR1_SWIZZLE { PIPE_SWIZZLE_RED, PIPE_SWIZZLE_RED, PIPE_SWIZZLE_RED, PIPE_SWIZZLE_ONE }
/* fill the format table */
/* fill the format table */
static struct vrend_format_table base_rgba_formats [ ] =
static struct vrend_format_table base_rgba_formats [ ] =
@ -71,10 +72,10 @@ static struct vrend_format_table base_depth_formats[] =
static struct vrend_format_table base_la_formats [ ] = {
static struct vrend_format_table base_la_formats [ ] = {
{ VIRGL_FORMAT_A8_UNORM , GL_ALPHA8 , GL_ALPHA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A8_UNORM , GL_ALPHA8 , GL_ALPHA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8_UNORM , GL_LUMINANCE8 , GL_LUMINANCE , GL_UNSIGNED_BYTE , NO _SWIZZLE } ,
{ VIRGL_FORMAT_L8_UNORM , GL_R8 , GL_RED , GL_UNSIGNED_BYTE , RRR1 _SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_UNORM , GL_LUMINANCE8_ALPHA8 , GL_LUMINANCE_ALPHA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_UNORM , GL_LUMINANCE8_ALPHA8 , GL_LUMINANCE_ALPHA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A16_UNORM , GL_ALPHA16 , GL_ALPHA , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A16_UNORM , GL_ALPHA16 , GL_ALPHA , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16_UNORM , GL_LUMINANCE16 , GL_LUMINANCE , GL_UNSIGNED_SHORT , NO _SWIZZLE } ,
{ VIRGL_FORMAT_L16_UNORM , GL_R16 , GL_RED , GL_UNSIGNED_SHORT , RRR1 _SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_UNORM , GL_LUMINANCE16_ALPHA16 , GL_LUMINANCE_ALPHA , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_UNORM , GL_LUMINANCE16_ALPHA16 , GL_LUMINANCE_ALPHA , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
} ;
} ;
@ -112,11 +113,11 @@ static struct vrend_format_table float_base_formats[] = {
static struct vrend_format_table float_la_formats [ ] = {
static struct vrend_format_table float_la_formats [ ] = {
{ VIRGL_FORMAT_A16_FLOAT , GL_ALPHA16F_ARB , GL_ALPHA , GL_HALF_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A16_FLOAT , GL_ALPHA16F_ARB , GL_ALPHA , GL_HALF_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16_FLOAT , GL_LUMINANCE16F_ARB , GL_LUMINANCE , GL_HALF_FLOAT , NO _SWIZZLE } ,
{ VIRGL_FORMAT_L16_FLOAT , GL_R16F , GL_RED , GL_HALF_FLOAT , RRR1 _SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_FLOAT , GL_LUMINANCE_ALPHA16F_ARB , GL_LUMINANCE_ALPHA , GL_HALF_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_FLOAT , GL_LUMINANCE_ALPHA16F_ARB , GL_LUMINANCE_ALPHA , GL_HALF_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A32_FLOAT , GL_ALPHA32F_ARB , GL_ALPHA , GL_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A32_FLOAT , GL_ALPHA32F_ARB , GL_ALPHA , GL_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L32_FLOAT , GL_LUMINANCE32F_ARB , GL_LUMINANCE , GL_FLOAT , NO _SWIZZLE } ,
{ VIRGL_FORMAT_L32_FLOAT , GL_R32F , GL_RED , GL_FLOAT , RRR1 _SWIZZLE } ,
{ VIRGL_FORMAT_L32A32_FLOAT , GL_LUMINANCE_ALPHA32F_ARB , GL_LUMINANCE_ALPHA , GL_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L32A32_FLOAT , GL_LUMINANCE_ALPHA32F_ARB , GL_LUMINANCE_ALPHA , GL_FLOAT , NO_SWIZZLE } ,
} ;
} ;
@ -152,26 +153,26 @@ static struct vrend_format_table float_3comp_formats[] = {
static struct vrend_format_table integer_la_formats [ ] = {
static struct vrend_format_table integer_la_formats [ ] = {
{ VIRGL_FORMAT_A8_UINT , GL_ALPHA8UI_EXT , GL_ALPHA_INTEGER , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A8_UINT , GL_ALPHA8UI_EXT , GL_ALPHA_INTEGER , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8_UINT , GL_LUMINANCE8UI_EXT , GL_LUMINANCE_INTEGER_EXT , GL_UNSIGNED_BYTE , NO _SWIZZLE } ,
{ VIRGL_FORMAT_L8_UINT , GL_R8UI , GL_RED_INTEGER , GL_UNSIGNED_BYTE , RRR1 _SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_UINT , GL_LUMINANCE_ALPHA8UI_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_UINT , GL_LUMINANCE_ALPHA8UI_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A8_SINT , GL_ALPHA8I_EXT , GL_ALPHA_INTEGER , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A8_SINT , GL_ALPHA8I_EXT , GL_ALPHA_INTEGER , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8_SINT , GL_LUMINANCE8I_EXT , GL_LUMINANCE_INTEGER_EXT , GL_BYTE , NO _SWIZZLE } ,
{ VIRGL_FORMAT_L8_SINT , GL_R8I , GL_RED_INTEGER , GL_BYTE , RRR1 _SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_SINT , GL_LUMINANCE_ALPHA8I_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_SINT , GL_LUMINANCE_ALPHA8I_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A16_UINT , GL_ALPHA16UI_EXT , GL_ALPHA_INTEGER , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A16_UINT , GL_ALPHA16UI_EXT , GL_ALPHA_INTEGER , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16_UINT , GL_LUMINANCE16UI_EXT , GL_LUMINANCE_INTEGER_EXT , GL_UNSIGNED_SHORT , NO _SWIZZLE } ,
{ VIRGL_FORMAT_L16_UINT , GL_R16UI , GL_RED_INTEGER , GL_UNSIGNED_SHORT , RRR1 _SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_UINT , GL_LUMINANCE_ALPHA16UI_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_UINT , GL_LUMINANCE_ALPHA16UI_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A16_SINT , GL_ALPHA16I_EXT , GL_ALPHA_INTEGER , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A16_SINT , GL_ALPHA16I_EXT , GL_ALPHA_INTEGER , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16_SINT , GL_LUMINANCE16I_EXT , GL_LUMINANCE_INTEGER_EXT , GL_SHORT , NO _SWIZZLE } ,
{ VIRGL_FORMAT_L16_SINT , GL_R16I , GL_RED_INTEGER , GL_SHORT , RRR1 _SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_SINT , GL_LUMINANCE_ALPHA16I_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_SINT , GL_LUMINANCE_ALPHA16I_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A32_UINT , GL_ALPHA32UI_EXT , GL_ALPHA_INTEGER , GL_UNSIGNED_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A32_UINT , GL_ALPHA32UI_EXT , GL_ALPHA_INTEGER , GL_UNSIGNED_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L32_UINT , GL_LUMINANCE32UI_EXT , GL_LUMINANCE_INTEGER_EXT , GL_UNSIGNED_INT , NO _SWIZZLE } ,
{ VIRGL_FORMAT_L32_UINT , GL_R32UI , GL_RED_INTEGER , GL_UNSIGNED_INT , RRR1 _SWIZZLE } ,
{ VIRGL_FORMAT_L32A32_UINT , GL_LUMINANCE_ALPHA32UI_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_UNSIGNED_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L32A32_UINT , GL_LUMINANCE_ALPHA32UI_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_UNSIGNED_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A32_SINT , GL_ALPHA32I_EXT , GL_ALPHA_INTEGER , GL_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A32_SINT , GL_ALPHA32I_EXT , GL_ALPHA_INTEGER , GL_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L32_SINT , GL_LUMINANCE32I_EXT , GL_LUMINANCE_INTEGER_EXT , GL_INT , NO _SWIZZLE } ,
{ VIRGL_FORMAT_L32_SINT , GL_R32I , GL_RED_INTEGER , GL_INT , RRR1 _SWIZZLE } ,
{ VIRGL_FORMAT_L32A32_SINT , GL_LUMINANCE_ALPHA32I_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L32A32_SINT , GL_LUMINANCE_ALPHA32I_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_INT , NO_SWIZZLE } ,
@ -193,10 +194,10 @@ static struct vrend_format_table snorm_formats[] = {
static struct vrend_format_table snorm_la_formats [ ] = {
static struct vrend_format_table snorm_la_formats [ ] = {
{ VIRGL_FORMAT_A8_SNORM , GL_ALPHA8_SNORM , GL_ALPHA , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A8_SNORM , GL_ALPHA8_SNORM , GL_ALPHA , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8_SNORM , GL_LUMINANCE8_SNORM , GL_LUMINANCE , GL_BYTE , NO _SWIZZLE } ,
{ VIRGL_FORMAT_L8_SNORM , GL_R8_SNORM , GL_RED , GL_BYTE , RRR1 _SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_SNORM , GL_LUMINANCE8_ALPHA8_SNORM , GL_LUMINANCE_ALPHA , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_SNORM , GL_LUMINANCE8_ALPHA8_SNORM , GL_LUMINANCE_ALPHA , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A16_SNORM , GL_ALPHA16_SNORM , GL_ALPHA , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A16_SNORM , GL_ALPHA16_SNORM , GL_ALPHA , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16_SNORM , GL_LUMINANCE16_SNORM , GL_LUMINANCE , GL_SHORT , NO _SWIZZLE } ,
{ VIRGL_FORMAT_L16_SNORM , GL_R16_SNORM , GL_RED , GL_SHORT , RRR1 _SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_SNORM , GL_LUMINANCE16_ALPHA16_SNORM , GL_LUMINANCE_ALPHA , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_SNORM , GL_LUMINANCE16_ALPHA16_SNORM , GL_LUMINANCE_ALPHA , GL_SHORT , NO_SWIZZLE } ,
} ;
} ;
@ -228,7 +229,7 @@ static struct vrend_format_table srgb_formats[] = {
{ VIRGL_FORMAT_B8G8R8A8_SRGB , GL_SRGB8_ALPHA8 , GL_BGRA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_B8G8R8A8_SRGB , GL_SRGB8_ALPHA8 , GL_BGRA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R8G8B8X8_SRGB , GL_SRGB8_ALPHA8 , GL_RGBA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R8G8B8X8_SRGB , GL_SRGB8_ALPHA8 , GL_RGBA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8_SRGB , GL_SLUMINANCE8_EXT , GL_LUMINANCE , GL_UNSIGNED_BYTE , NO _SWIZZLE } ,
{ VIRGL_FORMAT_L8_SRGB , GL_SR8_EXT , GL_RED , GL_UNSIGNED_BYTE , RRR1 _SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_SRGB , GL_SLUMINANCE8_ALPHA8_EXT , GL_LUMINANCE_ALPHA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_SRGB , GL_SLUMINANCE8_ALPHA8_EXT , GL_LUMINANCE_ALPHA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
} ;
} ;