GPU: Add RGB10_A2 format support
Nice format to output high definition normals or normalized colors.
This commit is contained in:
parent
1a9fe57a9f
commit
6fa984a1af
|
@ -43,6 +43,7 @@ static bool drw_texture_format_supports_framebuffer(eGPUTextureFormat format)
|
|||
case GPU_RG16F:
|
||||
case GPU_RG16I:
|
||||
case GPU_RG32F:
|
||||
case GPU_RGB10_A2:
|
||||
case GPU_R11F_G11F_B10F:
|
||||
case GPU_RGBA8:
|
||||
case GPU_RGBA16:
|
||||
|
|
|
@ -114,15 +114,15 @@ typedef enum eGPUTextureFormat {
|
|||
GPU_R16F,
|
||||
GPU_R16, /* Max texture buffer format. */
|
||||
|
||||
/* Special formats texture & renderbuffer */
|
||||
#if 0
|
||||
/* Special formats texture & renderbuffer */
|
||||
GPU_RGB10_A2,
|
||||
GPU_RGB10_A2UI,
|
||||
#endif
|
||||
GPU_R11F_G11F_B10F,
|
||||
GPU_DEPTH32F_STENCIL8,
|
||||
GPU_DEPTH24_STENCIL8,
|
||||
GPU_SRGB8_A8,
|
||||
#if 0
|
||||
GPU_RGB10_A2UI,
|
||||
#endif
|
||||
|
||||
/* Texture only format */
|
||||
GPU_RGB16F,
|
||||
|
@ -175,6 +175,7 @@ typedef enum eGPUDataFormat {
|
|||
GPU_DATA_UBYTE,
|
||||
GPU_DATA_UINT_24_8,
|
||||
GPU_DATA_10_11_11_REV,
|
||||
GPU_DATA_2_10_10_10_REV,
|
||||
} eGPUDataFormat;
|
||||
|
||||
unsigned int GPU_texture_memory_usage_get(void);
|
||||
|
|
|
@ -283,6 +283,7 @@ inline size_t to_bytesize(eGPUTextureFormat format)
|
|||
case GPU_RGBA8UI:
|
||||
case GPU_RGBA8:
|
||||
case GPU_SRGB8_A8:
|
||||
case GPU_RGB10_A2:
|
||||
case GPU_R11F_G11F_B10F:
|
||||
case GPU_R32F:
|
||||
case GPU_R32UI:
|
||||
|
@ -368,6 +369,7 @@ inline int to_component_len(eGPUTextureFormat format)
|
|||
case GPU_RGBA16:
|
||||
case GPU_RGBA32F:
|
||||
case GPU_SRGB8_A8:
|
||||
case GPU_RGB10_A2:
|
||||
return 4;
|
||||
case GPU_RGB16F:
|
||||
case GPU_R11F_G11F_B10F:
|
||||
|
@ -395,6 +397,7 @@ inline size_t to_bytesize(eGPUDataFormat data_format)
|
|||
return 4;
|
||||
case GPU_DATA_UINT_24_8:
|
||||
case GPU_DATA_10_11_11_REV:
|
||||
case GPU_DATA_2_10_10_10_REV:
|
||||
return 4;
|
||||
default:
|
||||
BLI_assert(!"Data format incorrect or unsupported\n");
|
||||
|
@ -432,6 +435,8 @@ inline bool validate_data_format(eGPUTextureFormat tex_format, eGPUDataFormat da
|
|||
case GPU_RGBA8UI:
|
||||
case GPU_SRGB8_A8:
|
||||
return ELEM(data_format, GPU_DATA_UBYTE, GPU_DATA_FLOAT);
|
||||
case GPU_RGB10_A2:
|
||||
return ELEM(data_format, GPU_DATA_2_10_10_10_REV, GPU_DATA_FLOAT);
|
||||
case GPU_R11F_G11F_B10F:
|
||||
return ELEM(data_format, GPU_DATA_10_11_11_REV, GPU_DATA_FLOAT);
|
||||
default:
|
||||
|
@ -464,6 +469,8 @@ inline eGPUDataFormat to_data_format(eGPUTextureFormat tex_format)
|
|||
case GPU_RGBA8UI:
|
||||
case GPU_SRGB8_A8:
|
||||
return GPU_DATA_UBYTE;
|
||||
case GPU_RGB10_A2:
|
||||
return GPU_DATA_2_10_10_10_REV;
|
||||
case GPU_R11F_G11F_B10F:
|
||||
return GPU_DATA_10_11_11_REV;
|
||||
default:
|
||||
|
|
|
@ -158,6 +158,8 @@ inline GLenum to_gl_internal_format(eGPUTextureFormat format)
|
|||
case GPU_R16:
|
||||
return GL_R16;
|
||||
/* Special formats texture & renderbuffer */
|
||||
case GPU_RGB10_A2:
|
||||
return GL_RGB10_A2;
|
||||
case GPU_R11F_G11F_B10F:
|
||||
return GL_R11F_G11F_B10F;
|
||||
case GPU_DEPTH32F_STENCIL8:
|
||||
|
@ -280,6 +282,8 @@ inline GLenum to_gl(eGPUDataFormat format)
|
|||
return GL_UNSIGNED_BYTE;
|
||||
case GPU_DATA_UINT_24_8:
|
||||
return GL_UNSIGNED_INT_24_8;
|
||||
case GPU_DATA_2_10_10_10_REV:
|
||||
return GL_UNSIGNED_INT_2_10_10_10_REV;
|
||||
case GPU_DATA_10_11_11_REV:
|
||||
return GL_UNSIGNED_INT_10F_11F_11F_REV;
|
||||
default:
|
||||
|
@ -333,6 +337,7 @@ inline GLenum to_gl_data_format(eGPUTextureFormat format)
|
|||
case GPU_RGBA16:
|
||||
case GPU_RGBA16F:
|
||||
case GPU_RGBA32F:
|
||||
case GPU_RGB10_A2:
|
||||
return GL_RGBA;
|
||||
case GPU_DEPTH24_STENCIL8:
|
||||
case GPU_DEPTH32F_STENCIL8:
|
||||
|
|
Loading…
Reference in New Issue