@ -26,238 +26,242 @@
# include "vrend_renderer.h"
# include "vrend_renderer.h"
# include "util/u_memory.h"
# include "util/u_memory.h"
# include "util/u_format.h"
# include "util/u_format.h"
# define SWIZZLE_INVALID 0xff
# define NO_SWIZZLE { SWIZZLE_INVALID, SWIZZLE_INVALID, SWIZZLE_INVALID, SWIZZLE_INVALID }
/* fill the format table */
/* fill the format table */
static struct vrend_format_table base_rgba_formats [ ] =
static struct vrend_format_table base_rgba_formats [ ] =
{
{
{ VIRGL_FORMAT_B8G8R8X8_UNORM , GL_RGBA8 , GL_BGRA , GL_UNSIGNED_BYTE , 0 } ,
{ VIRGL_FORMAT_B8G8R8X8_UNORM , GL_RGBA8 , GL_BGRA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_B8G8R8A8_UNORM , GL_RGBA8 , GL_BGRA , GL_UNSIGNED_BYTE , 0 } ,
{ VIRGL_FORMAT_B8G8R8A8_UNORM , GL_RGBA8 , GL_BGRA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R8G8B8X8_UNORM , GL_RGBA8 , GL_RGBA , GL_UNSIGNED_BYTE , 0 } ,
{ VIRGL_FORMAT_R8G8B8X8_UNORM , GL_RGBA8 , GL_RGBA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R8G8B8A8_UNORM , GL_RGBA8 , GL_RGBA , GL_UNSIGNED_BYTE , 0 } ,
{ VIRGL_FORMAT_R8G8B8A8_UNORM , GL_RGBA8 , GL_RGBA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A8R8G8B8_UNORM , GL_RGBA8 , GL_BGRA , GL_UNSIGNED_INT_8_8_8_8 , 0 } ,
{ VIRGL_FORMAT_A8R8G8B8_UNORM , GL_RGBA8 , GL_BGRA , GL_UNSIGNED_INT_8_8_8_8 , NO_SWIZZLE } ,
{ VIRGL_FORMAT_X8R8G8B8_UNORM , GL_RGBA8 , GL_BGRA , GL_UNSIGNED_INT_8_8_8_8 , 0 } ,
{ VIRGL_FORMAT_X8R8G8B8_UNORM , GL_RGBA8 , GL_BGRA , GL_UNSIGNED_INT_8_8_8_8 , NO_SWIZZLE } ,
{ VIRGL_FORMAT_A8B8G8R8_UNORM , GL_RGBA8 , GL_ABGR_EXT , GL_UNSIGNED_BYTE , 0 } ,
{ VIRGL_FORMAT_A8B8G8R8_UNORM , GL_RGBA8 , GL_ABGR_EXT , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_B4G4R4A4_UNORM , GL_RGBA4 , GL_BGRA , GL_UNSIGNED_SHORT_4_4_4_4_REV } ,
{ VIRGL_FORMAT_B4G4R4A4_UNORM , GL_RGBA4 , GL_BGRA , GL_UNSIGNED_SHORT_4_4_4_4_REV , NO_SWIZZLE } ,
{ VIRGL_FORMAT_B4G4R4X4_UNORM , GL_RGBA4 , GL_BGRA , GL_UNSIGNED_SHORT_4_4_4_4_REV } ,
{ VIRGL_FORMAT_B4G4R4X4_UNORM , GL_RGBA4 , GL_BGRA , GL_UNSIGNED_SHORT_4_4_4_4_REV , NO_SWIZZLE } ,
{ VIRGL_FORMAT_B5G5R5X1_UNORM , GL_RGB5_A1 , GL_BGRA , GL_UNSIGNED_SHORT_1_5_5_5_REV } ,
{ VIRGL_FORMAT_B5G5R5X1_UNORM , GL_RGB5_A1 , GL_BGRA , GL_UNSIGNED_SHORT_1_5_5_5_REV , NO_SWIZZLE } ,
{ VIRGL_FORMAT_B5G5R5A1_UNORM , GL_RGB5_A1 , GL_BGRA , GL_UNSIGNED_SHORT_1_5_5_5_REV } ,
{ VIRGL_FORMAT_B5G5R5A1_UNORM , GL_RGB5_A1 , GL_BGRA , GL_UNSIGNED_SHORT_1_5_5_5_REV , NO_SWIZZLE } ,
{ VIRGL_FORMAT_B5G6R5_UNORM , GL_RGB565 , GL_RGB , GL_UNSIGNED_SHORT_5_6_5 } ,
{ VIRGL_FORMAT_B5G6R5_UNORM , GL_RGB565 , GL_RGB , GL_UNSIGNED_SHORT_5_6_5 , NO_SWIZZLE } ,
{ VIRGL_FORMAT_B2G3R3_UNORM , GL_R3_G3_B2 , GL_RGB , GL_UNSIGNED_BYTE_3_3_2 } ,
{ VIRGL_FORMAT_B2G3R3_UNORM , GL_R3_G3_B2 , GL_RGB , GL_UNSIGNED_BYTE_3_3_2 , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16G16B16X16_UNORM , GL_RGBA16 , GL_RGBA , GL_UNSIGNED_SHORT } ,
{ VIRGL_FORMAT_R16G16B16X16_UNORM , GL_RGBA16 , GL_RGBA , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16G16B16A16_UNORM , GL_RGBA16 , GL_RGBA , GL_UNSIGNED_SHORT } ,
{ VIRGL_FORMAT_R16G16B16A16_UNORM , GL_RGBA16 , GL_RGBA , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table base_depth_formats [ ] =
static struct vrend_format_table base_depth_formats [ ] =
{
{
{ VIRGL_FORMAT_Z16_UNORM , GL_DEPTH_COMPONENT16 , GL_DEPTH_COMPONENT , GL_UNSIGNED_SHORT , 0 } ,
{ VIRGL_FORMAT_Z16_UNORM , GL_DEPTH_COMPONENT16 , GL_DEPTH_COMPONENT , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_Z32_UNORM , GL_DEPTH_COMPONENT32 , GL_DEPTH_COMPONENT , GL_UNSIGNED_INT , 0 } ,
{ VIRGL_FORMAT_Z32_UNORM , GL_DEPTH_COMPONENT32 , GL_DEPTH_COMPONENT , GL_UNSIGNED_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_S8_UINT_Z24_UNORM , GL_DEPTH24_STENCIL8_EXT , GL_DEPTH_STENCIL , GL_UNSIGNED_INT_24_8 , 0 } ,
{ VIRGL_FORMAT_S8_UINT_Z24_UNORM , GL_DEPTH24_STENCIL8_EXT , GL_DEPTH_STENCIL , GL_UNSIGNED_INT_24_8 , NO_SWIZZLE } ,
{ VIRGL_FORMAT_Z24X8_UNORM , GL_DEPTH_COMPONENT24 , GL_DEPTH_COMPONENT , GL_UNSIGNED_INT } ,
{ VIRGL_FORMAT_Z24X8_UNORM , GL_DEPTH_COMPONENT24 , GL_DEPTH_COMPONENT , GL_UNSIGNED_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_Z32_FLOAT , GL_DEPTH_COMPONENT32F , GL_DEPTH_COMPONENT , GL_FLOAT } ,
{ VIRGL_FORMAT_Z32_FLOAT , GL_DEPTH_COMPONENT32F , GL_DEPTH_COMPONENT , GL_FLOAT , NO_SWIZZLE } ,
/* this is probably a separate format */
/* this is probably a separate format */
{ VIRGL_FORMAT_Z32_FLOAT_S8X24_UINT , GL_DEPTH32F_STENCIL8 , GL_DEPTH_STENCIL , GL_FLOAT_32_UNSIGNED_INT_24_8_REV } ,
{ VIRGL_FORMAT_Z32_FLOAT_S8X24_UINT , GL_DEPTH32F_STENCIL8 , GL_DEPTH_STENCIL , GL_FLOAT_32_UNSIGNED_INT_24_8_REV , NO_SWIZZLE } ,
{ VIRGL_FORMAT_X24S8_UINT , GL_STENCIL_INDEX8 , GL_STENCIL_INDEX , GL_UNSIGNED_INT_24_8 , 0 } ,
{ VIRGL_FORMAT_X24S8_UINT , GL_STENCIL_INDEX8 , GL_STENCIL_INDEX , GL_UNSIGNED_INT_24_8 , NO_SWIZZLE } ,
} ;
} ;
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 } ,
{ VIRGL_FORMAT_A8_UNORM , GL_ALPHA8 , GL_ALPHA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8_UNORM , GL_LUMINANCE8 , GL_LUMINANCE , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_L8_UNORM , GL_LUMINANCE8 , GL_LUMINANCE , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_UNORM , GL_LUMINANCE8_ALPHA8 , GL_LUMINANCE_ALPHA , GL_UNSIGNED_BYTE } ,
{ 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 } ,
{ VIRGL_FORMAT_A16_UNORM , GL_ALPHA16 , GL_ALPHA , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16_UNORM , GL_LUMINANCE16 , GL_LUMINANCE , GL_UNSIGNED_SHORT } ,
{ VIRGL_FORMAT_L16_UNORM , GL_LUMINANCE16 , GL_LUMINANCE , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_UNORM , GL_LUMINANCE16_ALPHA16 , GL_LUMINANCE_ALPHA , GL_UNSIGNED_SHORT } ,
{ VIRGL_FORMAT_L16A16_UNORM , GL_LUMINANCE16_ALPHA16 , GL_LUMINANCE_ALPHA , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table rg_base_formats [ ] = {
static struct vrend_format_table rg_base_formats [ ] = {
{ VIRGL_FORMAT_R8_UNORM , GL_R8 , GL_RED , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_R8_UNORM , GL_R8 , GL_RED , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R8G8_UNORM , GL_RG8 , GL_RG , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_R8G8_UNORM , GL_RG8 , GL_RG , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16_UNORM , GL_R16 , GL_RED , GL_UNSIGNED_SHORT } ,
{ VIRGL_FORMAT_R16_UNORM , GL_R16 , GL_RED , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16G16_UNORM , GL_RG16 , GL_RG , GL_UNSIGNED_SHORT } ,
{ VIRGL_FORMAT_R16G16_UNORM , GL_RG16 , GL_RG , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table integer_base_formats [ ] = {
static struct vrend_format_table integer_base_formats [ ] = {
{ VIRGL_FORMAT_R8G8B8A8_UINT , GL_RGBA8UI , GL_RGBA_INTEGER , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_R8G8B8A8_UINT , GL_RGBA8UI , GL_RGBA_INTEGER , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R8G8B8A8_SINT , GL_RGBA8I , GL_RGBA_INTEGER , GL_BYTE } ,
{ VIRGL_FORMAT_R8G8B8A8_SINT , GL_RGBA8I , GL_RGBA_INTEGER , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16G16B16A16_UINT , GL_RGBA16UI , GL_RGBA_INTEGER , GL_UNSIGNED_SHORT } ,
{ VIRGL_FORMAT_R16G16B16A16_UINT , GL_RGBA16UI , GL_RGBA_INTEGER , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16G16B16A16_SINT , GL_RGBA16I , GL_RGBA_INTEGER , GL_SHORT } ,
{ VIRGL_FORMAT_R16G16B16A16_SINT , GL_RGBA16I , GL_RGBA_INTEGER , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R32G32B32A32_UINT , GL_RGBA32UI , GL_RGBA_INTEGER , GL_UNSIGNED_INT } ,
{ VIRGL_FORMAT_R32G32B32A32_UINT , GL_RGBA32UI , GL_RGBA_INTEGER , GL_UNSIGNED_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R32G32B32A32_SINT , GL_RGBA32I , GL_RGBA_INTEGER , GL_INT } ,
{ VIRGL_FORMAT_R32G32B32A32_SINT , GL_RGBA32I , GL_RGBA_INTEGER , GL_INT , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table integer_3comp_formats [ ] = {
static struct vrend_format_table integer_3comp_formats [ ] = {
{ VIRGL_FORMAT_R8G8B8_UINT , GL_RGB8UI , GL_RGB_INTEGER , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_R8G8B8_UINT , GL_RGB8UI , GL_RGB_INTEGER , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R8G8B8_SINT , GL_RGB8I , GL_RGB_INTEGER , GL_BYTE } ,
{ VIRGL_FORMAT_R8G8B8_SINT , GL_RGB8I , GL_RGB_INTEGER , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16G16B16_UINT , GL_RGB16UI , GL_RGB_INTEGER , GL_UNSIGNED_SHORT } ,
{ VIRGL_FORMAT_R16G16B16_UINT , GL_RGB16UI , GL_RGB_INTEGER , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16G16B16_SINT , GL_RGB16I , GL_RGB_INTEGER , GL_SHORT } ,
{ VIRGL_FORMAT_R16G16B16_SINT , GL_RGB16I , GL_RGB_INTEGER , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R32G32B32_UINT , GL_RGB32UI , GL_RGB_INTEGER , GL_UNSIGNED_INT } ,
{ VIRGL_FORMAT_R32G32B32_UINT , GL_RGB32UI , GL_RGB_INTEGER , GL_UNSIGNED_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R32G32B32_SINT , GL_RGB32I , GL_RGB_INTEGER , GL_INT } ,
{ VIRGL_FORMAT_R32G32B32_SINT , GL_RGB32I , GL_RGB_INTEGER , GL_INT , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table float_base_formats [ ] = {
static struct vrend_format_table float_base_formats [ ] = {
{ VIRGL_FORMAT_R16G16B16A16_FLOAT , GL_RGBA16F , GL_RGBA , GL_HALF_FLOAT } ,
{ VIRGL_FORMAT_R16G16B16A16_FLOAT , GL_RGBA16F , GL_RGBA , GL_HALF_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R32G32B32A32_FLOAT , GL_RGBA32F , GL_RGBA , GL_FLOAT } ,
{ VIRGL_FORMAT_R32G32B32A32_FLOAT , GL_RGBA32F , GL_RGBA , GL_FLOAT , NO_SWIZZLE } ,
} ;
} ;
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 } ,
{ 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 } ,
{ VIRGL_FORMAT_L16_FLOAT , GL_LUMINANCE16F_ARB , GL_LUMINANCE , GL_HALF_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_FLOAT , GL_LUMINANCE_ALPHA16F_ARB , GL_LUMINANCE_ALPHA , GL_HALF_FLOAT } ,
{ 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 } ,
{ VIRGL_FORMAT_A32_FLOAT , GL_ALPHA32F_ARB , GL_ALPHA , GL_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L32_FLOAT , GL_LUMINANCE32F_ARB , GL_LUMINANCE , GL_FLOAT } ,
{ VIRGL_FORMAT_L32_FLOAT , GL_LUMINANCE32F_ARB , GL_LUMINANCE , GL_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L32A32_FLOAT , GL_LUMINANCE_ALPHA32F_ARB , GL_LUMINANCE_ALPHA , GL_FLOAT } ,
{ VIRGL_FORMAT_L32A32_FLOAT , GL_LUMINANCE_ALPHA32F_ARB , GL_LUMINANCE_ALPHA , GL_FLOAT , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table integer_rg_formats [ ] = {
static struct vrend_format_table integer_rg_formats [ ] = {
{ VIRGL_FORMAT_R8_UINT , GL_R8UI , GL_RED_INTEGER , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_R8_UINT , GL_R8UI , GL_RED_INTEGER , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R8G8_UINT , GL_RG8UI , GL_RG_INTEGER , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_R8G8_UINT , GL_RG8UI , GL_RG_INTEGER , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R8_SINT , GL_R8I , GL_RED_INTEGER , GL_BYTE } ,
{ VIRGL_FORMAT_R8_SINT , GL_R8I , GL_RED_INTEGER , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R8G8_SINT , GL_RG8I , GL_RG_INTEGER , GL_BYTE } ,
{ VIRGL_FORMAT_R8G8_SINT , GL_RG8I , GL_RG_INTEGER , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16_UINT , GL_R16UI , GL_RED_INTEGER , GL_UNSIGNED_SHORT } ,
{ VIRGL_FORMAT_R16_UINT , GL_R16UI , GL_RED_INTEGER , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16G16_UINT , GL_RG16UI , GL_RG_INTEGER , GL_UNSIGNED_SHORT } ,
{ VIRGL_FORMAT_R16G16_UINT , GL_RG16UI , GL_RG_INTEGER , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16_SINT , GL_R16I , GL_RED_INTEGER , GL_SHORT } ,
{ VIRGL_FORMAT_R16_SINT , GL_R16I , GL_RED_INTEGER , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16G16_SINT , GL_RG16I , GL_RG_INTEGER , GL_SHORT } ,
{ VIRGL_FORMAT_R16G16_SINT , GL_RG16I , GL_RG_INTEGER , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R32_UINT , GL_R32UI , GL_RED_INTEGER , GL_UNSIGNED_INT } ,
{ VIRGL_FORMAT_R32_UINT , GL_R32UI , GL_RED_INTEGER , GL_UNSIGNED_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R32G32_UINT , GL_RG32UI , GL_RG_INTEGER , GL_UNSIGNED_INT } ,
{ VIRGL_FORMAT_R32G32_UINT , GL_RG32UI , GL_RG_INTEGER , GL_UNSIGNED_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R32_SINT , GL_R32I , GL_RED_INTEGER , GL_INT } ,
{ VIRGL_FORMAT_R32_SINT , GL_R32I , GL_RED_INTEGER , GL_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R32G32_SINT , GL_RG32I , GL_RG_INTEGER , GL_INT } ,
{ VIRGL_FORMAT_R32G32_SINT , GL_RG32I , GL_RG_INTEGER , GL_INT , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table float_rg_formats [ ] = {
static struct vrend_format_table float_rg_formats [ ] = {
{ VIRGL_FORMAT_R16_FLOAT , GL_R16F , GL_RED , GL_HALF_FLOAT } ,
{ VIRGL_FORMAT_R16_FLOAT , GL_R16F , GL_RED , GL_HALF_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16G16_FLOAT , GL_RG16F , GL_RG , GL_HALF_FLOAT } ,
{ VIRGL_FORMAT_R16G16_FLOAT , GL_RG16F , GL_RG , GL_HALF_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R32_FLOAT , GL_R32F , GL_RED , GL_FLOAT } ,
{ VIRGL_FORMAT_R32_FLOAT , GL_R32F , GL_RED , GL_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R32G32_FLOAT , GL_RG32F , GL_RG , GL_FLOAT } ,
{ VIRGL_FORMAT_R32G32_FLOAT , GL_RG32F , GL_RG , GL_FLOAT , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table float_3comp_formats [ ] = {
static struct vrend_format_table float_3comp_formats [ ] = {
{ VIRGL_FORMAT_R16G16B16_FLOAT , GL_RGB16F , GL_RGB , GL_HALF_FLOAT } ,
{ VIRGL_FORMAT_R16G16B16_FLOAT , GL_RGB16F , GL_RGB , GL_HALF_FLOAT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R32G32B32_FLOAT , GL_RGB32F , GL_RGB , GL_FLOAT } ,
{ VIRGL_FORMAT_R32G32B32_FLOAT , GL_RGB32F , GL_RGB , GL_FLOAT , NO_SWIZZLE } ,
} ;
} ;
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 } ,
{ 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 } ,
{ VIRGL_FORMAT_L8_UINT , GL_LUMINANCE8UI_EXT , GL_LUMINANCE_INTEGER_EXT , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_UINT , GL_LUMINANCE_ALPHA8UI_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_UNSIGNED_BYTE } ,
{ 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 } ,
{ 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 } ,
{ VIRGL_FORMAT_L8_SINT , GL_LUMINANCE8I_EXT , GL_LUMINANCE_INTEGER_EXT , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_SINT , GL_LUMINANCE_ALPHA8I_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_BYTE } ,
{ 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 } ,
{ 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 } ,
{ VIRGL_FORMAT_L16_UINT , GL_LUMINANCE16UI_EXT , GL_LUMINANCE_INTEGER_EXT , GL_UNSIGNED_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_UINT , GL_LUMINANCE_ALPHA16UI_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_UNSIGNED_SHORT } ,
{ 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 } ,
{ 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 } ,
{ VIRGL_FORMAT_L16_SINT , GL_LUMINANCE16I_EXT , GL_LUMINANCE_INTEGER_EXT , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_SINT , GL_LUMINANCE_ALPHA16I_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_SHORT } ,
{ 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 } ,
{ 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 } ,
{ VIRGL_FORMAT_L32_UINT , GL_LUMINANCE32UI_EXT , GL_LUMINANCE_INTEGER_EXT , GL_UNSIGNED_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L32A32_UINT , GL_LUMINANCE_ALPHA32UI_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_UNSIGNED_INT } ,
{ 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 } ,
{ 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 } ,
{ VIRGL_FORMAT_L32_SINT , GL_LUMINANCE32I_EXT , GL_LUMINANCE_INTEGER_EXT , GL_INT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L32A32_SINT , GL_LUMINANCE_ALPHA32I_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_INT } ,
{ VIRGL_FORMAT_L32A32_SINT , GL_LUMINANCE_ALPHA32I_EXT , GL_LUMINANCE_ALPHA_INTEGER_EXT , GL_INT , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table snorm_formats [ ] = {
static struct vrend_format_table snorm_formats [ ] = {
{ VIRGL_FORMAT_R8_SNORM , GL_R8_SNORM , GL_RED , GL_BYTE } ,
{ VIRGL_FORMAT_R8_SNORM , GL_R8_SNORM , GL_RED , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R8G8_SNORM , GL_RG8_SNORM , GL_RG , GL_BYTE } ,
{ VIRGL_FORMAT_R8G8_SNORM , GL_RG8_SNORM , GL_RG , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R8G8B8A8_SNORM , GL_RGBA8_SNORM , GL_RGBA , GL_BYTE } ,
{ VIRGL_FORMAT_R8G8B8A8_SNORM , GL_RGBA8_SNORM , GL_RGBA , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R8G8B8X8_SNORM , GL_RGBA8_SNORM , GL_RGBA , GL_BYTE } ,
{ VIRGL_FORMAT_R8G8B8X8_SNORM , GL_RGBA8_SNORM , GL_RGBA , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16_SNORM , GL_R16_SNORM , GL_RED , GL_SHORT } ,
{ VIRGL_FORMAT_R16_SNORM , GL_R16_SNORM , GL_RED , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16G16_SNORM , GL_RG16_SNORM , GL_RG , GL_SHORT } ,
{ VIRGL_FORMAT_R16G16_SNORM , GL_RG16_SNORM , GL_RG , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16G16B16A16_SNORM , GL_RGBA16_SNORM , GL_RGBA , GL_SHORT } ,
{ VIRGL_FORMAT_R16G16B16A16_SNORM , GL_RGBA16_SNORM , GL_RGBA , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R16G16B16X16_SNORM , GL_RGBA16_SNORM , GL_RGBA , GL_SHORT } ,
{ VIRGL_FORMAT_R16G16B16X16_SNORM , GL_RGBA16_SNORM , GL_RGBA , GL_SHORT , NO_SWIZZLE } ,
} ;
} ;
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 } ,
{ VIRGL_FORMAT_A8_SNORM , GL_ALPHA8_SNORM , GL_ALPHA , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8_SNORM , GL_LUMINANCE8_SNORM , GL_LUMINANCE , GL_BYTE } ,
{ VIRGL_FORMAT_L8_SNORM , GL_LUMINANCE8_SNORM , GL_LUMINANCE , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_SNORM , GL_LUMINANCE8_ALPHA8_SNORM , GL_LUMINANCE_ALPHA , GL_BYTE } ,
{ 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 } ,
{ VIRGL_FORMAT_A16_SNORM , GL_ALPHA16_SNORM , GL_ALPHA , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16_SNORM , GL_LUMINANCE16_SNORM , GL_LUMINANCE , GL_SHORT } ,
{ VIRGL_FORMAT_L16_SNORM , GL_LUMINANCE16_SNORM , GL_LUMINANCE , GL_SHORT , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L16A16_SNORM , GL_LUMINANCE16_ALPHA16_SNORM , GL_LUMINANCE_ALPHA , GL_SHORT } ,
{ VIRGL_FORMAT_L16A16_SNORM , GL_LUMINANCE16_ALPHA16_SNORM , GL_LUMINANCE_ALPHA , GL_SHORT , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table dxtn_formats [ ] = {
static struct vrend_format_table dxtn_formats [ ] = {
{ VIRGL_FORMAT_DXT1_RGB , GL_COMPRESSED_RGB_S3TC_DXT1_EXT , GL_RGB , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_DXT1_RGB , GL_COMPRESSED_RGB_S3TC_DXT1_EXT , GL_RGB , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_DXT1_RGBA , GL_COMPRESSED_RGBA_S3TC_DXT1_EXT , GL_RGBA , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_DXT1_RGBA , GL_COMPRESSED_RGBA_S3TC_DXT1_EXT , GL_RGBA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_DXT3_RGBA , GL_COMPRESSED_RGBA_S3TC_DXT3_EXT , GL_RGBA , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_DXT3_RGBA , GL_COMPRESSED_RGBA_S3TC_DXT3_EXT , GL_RGBA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_DXT5_RGBA , GL_COMPRESSED_RGBA_S3TC_DXT5_EXT , GL_RGBA , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_DXT5_RGBA , GL_COMPRESSED_RGBA_S3TC_DXT5_EXT , GL_RGBA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table dxtn_srgb_formats [ ] = {
static struct vrend_format_table dxtn_srgb_formats [ ] = {
{ VIRGL_FORMAT_DXT1_SRGB , GL_COMPRESSED_SRGB_S3TC_DXT1_EXT , GL_RGB , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_DXT1_SRGB , GL_COMPRESSED_SRGB_S3TC_DXT1_EXT , GL_RGB , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_DXT1_SRGBA , GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT , GL_RGBA , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_DXT1_SRGBA , GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT , GL_RGBA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_DXT3_SRGBA , GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT , GL_RGBA , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_DXT3_SRGBA , GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT , GL_RGBA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_DXT5_SRGBA , GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT , GL_RGBA , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_DXT5_SRGBA , GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT , GL_RGBA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table rgtc_formats [ ] = {
static struct vrend_format_table rgtc_formats [ ] = {
{ VIRGL_FORMAT_RGTC1_UNORM , GL_COMPRESSED_RED_RGTC1 , GL_RED , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_RGTC1_UNORM , GL_COMPRESSED_RED_RGTC1 , GL_RED , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_RGTC1_SNORM , GL_COMPRESSED_SIGNED_RED_RGTC1 , GL_RED , GL_BYTE } ,
{ VIRGL_FORMAT_RGTC1_SNORM , GL_COMPRESSED_SIGNED_RED_RGTC1 , GL_RED , GL_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_RGTC2_UNORM , GL_COMPRESSED_RG_RGTC2 , GL_RG , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_RGTC2_UNORM , GL_COMPRESSED_RG_RGTC2 , GL_RG , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_RGTC2_SNORM , GL_COMPRESSED_SIGNED_RG_RGTC2 , GL_RG , GL_BYTE } ,
{ VIRGL_FORMAT_RGTC2_SNORM , GL_COMPRESSED_SIGNED_RG_RGTC2 , GL_RG , GL_BYTE , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table srgb_formats [ ] = {
static struct vrend_format_table srgb_formats [ ] = {
{ VIRGL_FORMAT_B8G8R8X8_SRGB , GL_SRGB8_ALPHA8 , GL_BGRA , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_B8G8R8X8_SRGB , GL_SRGB8_ALPHA8 , GL_BGRA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_B8G8R8A8_SRGB , GL_SRGB8_ALPHA8 , GL_BGRA , GL_UNSIGNED_BYTE } ,
{ 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 } ,
{ 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 } ,
{ VIRGL_FORMAT_L8_SRGB , GL_SLUMINANCE8_EXT , GL_LUMINANCE , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_L8A8_SRGB , GL_SLUMINANCE8_ALPHA8_EXT , GL_LUMINANCE_ALPHA , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_L8A8_SRGB , GL_SLUMINANCE8_ALPHA8_EXT , GL_LUMINANCE_ALPHA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table bit10_formats [ ] = {
static struct vrend_format_table bit10_formats [ ] = {
{ VIRGL_FORMAT_B10G10R10X2_UNORM , GL_RGB10_A2 , GL_BGRA , GL_UNSIGNED_INT_2_10_10_10_REV } ,
{ VIRGL_FORMAT_B10G10R10X2_UNORM , GL_RGB10_A2 , GL_BGRA , GL_UNSIGNED_INT_2_10_10_10_REV , NO_SWIZZLE } ,
{ VIRGL_FORMAT_B10G10R10A2_UNORM , GL_RGB10_A2 , GL_BGRA , GL_UNSIGNED_INT_2_10_10_10_REV } ,
{ VIRGL_FORMAT_B10G10R10A2_UNORM , GL_RGB10_A2 , GL_BGRA , GL_UNSIGNED_INT_2_10_10_10_REV , NO_SWIZZLE } ,
{ VIRGL_FORMAT_B10G10R10A2_UINT , GL_RGB10_A2UI , GL_BGRA_INTEGER , GL_UNSIGNED_INT_2_10_10_10_REV } ,
{ VIRGL_FORMAT_B10G10R10A2_UINT , GL_RGB10_A2UI , GL_BGRA_INTEGER , GL_UNSIGNED_INT_2_10_10_10_REV , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R10G10B10X2_UNORM , GL_RGB10_A2 , GL_RGBA , GL_UNSIGNED_INT_2_10_10_10_REV } ,
{ VIRGL_FORMAT_R10G10B10X2_UNORM , GL_RGB10_A2 , GL_RGBA , GL_UNSIGNED_INT_2_10_10_10_REV , NO_SWIZZLE } ,
{ VIRGL_FORMAT_R10G10B10A2_UNORM , GL_RGB10_A2 , GL_RGBA , GL_UNSIGNED_INT_2_10_10_10_REV } ,
{ VIRGL_FORMAT_R10G10B10A2_UNORM , GL_RGB10_A2 , GL_RGBA , GL_UNSIGNED_INT_2_10_10_10_REV , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table packed_float_formats [ ] = {
static struct vrend_format_table packed_float_formats [ ] = {
{ VIRGL_FORMAT_R11G11B10_FLOAT , GL_R11F_G11F_B10F , GL_RGB , GL_UNSIGNED_INT_10F_11F_11F_REV } ,
{ VIRGL_FORMAT_R11G11B10_FLOAT , GL_R11F_G11F_B10F , GL_RGB , GL_UNSIGNED_INT_10F_11F_11F_REV , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table exponent_float_formats [ ] = {
static struct vrend_format_table exponent_float_formats [ ] = {
{ VIRGL_FORMAT_R9G9B9E5_FLOAT , GL_RGB9_E5 , GL_RGB , GL_UNSIGNED_INT_5_9_9_9_REV } ,
{ VIRGL_FORMAT_R9G9B9E5_FLOAT , GL_RGB9_E5 , GL_RGB , GL_UNSIGNED_INT_5_9_9_9_REV , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table bptc_formats [ ] = {
static struct vrend_format_table bptc_formats [ ] = {
{ VIRGL_FORMAT_BPTC_RGBA_UNORM , GL_COMPRESSED_RGBA_BPTC_UNORM , GL_RGBA , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_BPTC_RGBA_UNORM , GL_COMPRESSED_RGBA_BPTC_UNORM , GL_RGBA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_BPTC_SRGBA , GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM , GL_RGBA , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_BPTC_SRGBA , GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM , GL_RGBA , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_BPTC_RGB_FLOAT , GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT , GL_RGB , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_BPTC_RGB_FLOAT , GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT , GL_RGB , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_BPTC_RGB_UFLOAT , GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT , GL_RGB , GL_UNSIGNED_BYTE } ,
{ VIRGL_FORMAT_BPTC_RGB_UFLOAT , GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT , GL_RGB , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table gles_bgra_formats [ ] = {
static struct vrend_format_table gles_bgra_formats [ ] = {
{ VIRGL_FORMAT_B8G8R8X8_UNORM , GL_BGRA_EXT , GL_BGRA_EXT , GL_UNSIGNED_BYTE , 0 } ,
{ VIRGL_FORMAT_B8G8R8X8_UNORM , GL_BGRA_EXT , GL_BGRA_EXT , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
{ VIRGL_FORMAT_B8G8R8A8_UNORM , GL_BGRA_EXT , GL_BGRA_EXT , GL_UNSIGNED_BYTE , 0 } ,
{ VIRGL_FORMAT_B8G8R8A8_UNORM , GL_BGRA_EXT , GL_BGRA_EXT , GL_UNSIGNED_BYTE , NO_SWIZZLE } ,
} ;
} ;
static struct vrend_format_table gles_z32_format [ ] = {
static struct vrend_format_table gles_z32_format [ ] = {
{ VIRGL_FORMAT_Z32_UNORM , GL_DEPTH_COMPONENT24 , GL_DEPTH_COMPONENT , GL_UNSIGNED_INT , 0 } ,
{ VIRGL_FORMAT_Z32_UNORM , GL_DEPTH_COMPONENT24 , GL_DEPTH_COMPONENT , GL_UNSIGNED_INT , NO_SWIZZLE } ,
} ;
} ;
static void vrend_add_formats ( struct vrend_format_table * table , int num_entries )
static void vrend_add_formats ( struct vrend_format_table * table , int num_entries )
@ -334,6 +338,10 @@ static void vrend_add_formats(struct vrend_format_table *table, int num_entries)
glDeleteTextures ( 1 , & tex_id ) ;
glDeleteTextures ( 1 , & tex_id ) ;
glDeleteFramebuffers ( 1 , & fb_id ) ;
glDeleteFramebuffers ( 1 , & fb_id ) ;
if ( table [ i ] . swizzle [ 0 ] ! = SWIZZLE_INVALID )
vrend_insert_format_swizzle ( table [ i ] . format , & table [ i ] , binding , table [ i ] . swizzle ) ;
else
vrend_insert_format ( & table [ i ] , binding ) ;
vrend_insert_format ( & table [ i ] , binding ) ;
}
}
}
}