Skip to content

Commit 45d62f9

Browse files
committed
Add R8_UNORM and R16_UNORM extended surface formats
1 parent e6ca4eb commit 45d62f9

7 files changed

+25
-1
lines changed

include/FNA3D.h

+2
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ typedef enum FNA3D_SurfaceFormat
143143
FNA3D_SURFACEFORMAT_DXT5SRGB_EXT,
144144
FNA3D_SURFACEFORMAT_BC7_EXT,
145145
FNA3D_SURFACEFORMAT_BC7SRGB_EXT,
146+
FNA3D_SURFACEFORMAT_BYTE_EXT,
147+
FNA3D_SURFACEFORMAT_USHORT_EXT,
146148
} FNA3D_SurfaceFormat;
147149

148150
typedef enum FNA3D_DepthFormat

src/FNA3D_Driver.h

+4
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@ static inline int32_t Texture_GetBlockSize(
124124
case FNA3D_SURFACEFORMAT_VECTOR2:
125125
case FNA3D_SURFACEFORMAT_HDRBLENDABLE:
126126
case FNA3D_SURFACEFORMAT_VECTOR4:
127+
case FNA3D_SURFACEFORMAT_USHORT_EXT:
128+
case FNA3D_SURFACEFORMAT_BYTE_EXT:
127129
return 1;
128130
default:
129131
FNA3D_LogError(
@@ -147,12 +149,14 @@ static inline int32_t Texture_GetFormatSize(
147149
case FNA3D_SURFACEFORMAT_BC7SRGB_EXT:
148150
return 16;
149151
case FNA3D_SURFACEFORMAT_ALPHA8:
152+
case FNA3D_SURFACEFORMAT_BYTE_EXT:
150153
return 1;
151154
case FNA3D_SURFACEFORMAT_BGR565:
152155
case FNA3D_SURFACEFORMAT_BGRA4444:
153156
case FNA3D_SURFACEFORMAT_BGRA5551:
154157
case FNA3D_SURFACEFORMAT_HALFSINGLE:
155158
case FNA3D_SURFACEFORMAT_NORMALIZEDBYTE2:
159+
case FNA3D_SURFACEFORMAT_USHORT_EXT:
156160
return 2;
157161
case FNA3D_SURFACEFORMAT_COLOR:
158162
case FNA3D_SURFACEFORMAT_SINGLE:

src/FNA3D_Driver_D3D11.c

+2
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,8 @@ static DXGI_FORMAT XNAToD3D_TextureFormat[] =
331331
DXGI_FORMAT_BC3_UNORM_SRGB, /* SurfaceFormat.Dxt5SrgbEXT */
332332
DXGI_FORMAT_BC7_UNORM, /* SurfaceFormat.BC7EXT */
333333
DXGI_FORMAT_BC7_UNORM_SRGB, /* SurfaceFormat.BC7SrgbEXT */
334+
DXGI_FORMAT_R8_UNORM, /* SurfaceFormat.NormalizedByteEXT */
335+
DXGI_FORMAT_R16_UNORM, /* SurfaceFormat.NormalizedUShortEXT */
334336
};
335337

336338
static DXGI_FORMAT XNAToD3D_DepthFormat[] =

src/FNA3D_Driver_OpenGL.c

+6
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,8 @@ static int32_t XNAToGL_TextureFormat[] =
356356
GL_COMPRESSED_TEXTURE_FORMATS, /* SurfaceFormat.Dxt5SrgbEXT */
357357
GL_COMPRESSED_TEXTURE_FORMATS, /* SurfaceFormat.Bc7EXT */
358358
GL_COMPRESSED_TEXTURE_FORMATS, /* SurfaceFormat.Bc7SrgbEXT */
359+
GL_RED, /* SurfaceFormat.NormalizedByteEXT */
360+
GL_RED, /* SurfaceFormat.NormalizedUShortEXT */
359361
};
360362

361363
static int32_t XNAToGL_TextureInternalFormat[] =
@@ -385,6 +387,8 @@ static int32_t XNAToGL_TextureInternalFormat[] =
385387
GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, /* SurfaceFormat.Dxt5SrgbEXT */
386388
GL_COMPRESSED_RGBA_BPTC_UNORM_EXT, /* SurfaceFormat.BC7EXT */
387389
GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT,/* SurfaceFormat.BC7SrgbEXT */
390+
GL_R8, /* SurfaceFormat.NormalizedByteEXT */
391+
GL_R16, /* SurfaceFormat.NormalizedUShortEXT */
388392
};
389393

390394
static int32_t XNAToGL_TextureDataType[] =
@@ -414,6 +418,8 @@ static int32_t XNAToGL_TextureDataType[] =
414418
GL_ZERO, /* NOPE */
415419
GL_ZERO, /* NOPE */
416420
GL_ZERO, /* NOPE */
421+
GL_UNSIGNED_BYTE, /* SurfaceFormat.NormalizedByteEXT */
422+
GL_UNSIGNED_SHORT, /* SurfaceFormat.NormalizedUShortEXT */
417423
};
418424

419425
static int32_t XNAToGL_BlendMode[] =

src/FNA3D_Driver_OpenGL.h

+4
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,10 @@ typedef unsigned char GLboolean;
199199
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
200200
#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C
201201
#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D
202+
#define GL_R8UI 0x8232
203+
#define GL_R16UI 0x8234
204+
#define GL_R8 0x8229
205+
#define GL_R16 0x822A
202206

203207
/* EXT_framebuffer_sRGB */
204208
#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9

src/FNA3D_Driver_SDL.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,9 @@ static SDL_GPUTextureFormat XNAToSDL_SurfaceFormat[] =
113113
SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM_SRGB, /* SurfaceFormat.ColorSrgbEXT */
114114
SDL_GPU_TEXTUREFORMAT_BC3_RGBA_UNORM_SRGB, /* SurfaceFormat.Dxt5SrgbEXT */
115115
SDL_GPU_TEXTUREFORMAT_BC7_RGBA_UNORM, /* SurfaceFormat.Bc7EXT */
116-
SDL_GPU_TEXTUREFORMAT_BC7_RGBA_UNORM_SRGB /* SurfaceFormat.Bc7SrgbEXT */
116+
SDL_GPU_TEXTUREFORMAT_BC7_RGBA_UNORM_SRGB, /* SurfaceFormat.Bc7SrgbEXT */
117+
SDL_GPU_TEXTUREFORMAT_R8_UNORM, /* SurfaceFormat.NormalizedByteEXT */
118+
SDL_GPU_TEXTUREFORMAT_R16_UNORM, /* SurfaceFormat.NormalizedUShortEXT */
117119
};
118120

119121
static SDL_GPUPrimitiveType XNAToSDL_PrimitiveType[] =

src/FNA3D_Driver_Vulkan.c

+4
Original file line numberDiff line numberDiff line change
@@ -1437,6 +1437,8 @@ static VkComponentMapping XNAToVK_SurfaceSwizzle[] =
14371437
IDENTITY_SWIZZLE, /* SurfaceFormat.Dxt5SrgbEXT */
14381438
IDENTITY_SWIZZLE, /* SurfaceFormat.Bc7EXT */
14391439
IDENTITY_SWIZZLE, /* SurfaceFormat.Bc7SrgbEXT */
1440+
IDENTITY_SWIZZLE, /* SurfaceFormat.NormalizedByteEXT */
1441+
IDENTITY_SWIZZLE, /* SurfaceFormat.NormalizedUShortEXT */
14401442
};
14411443

14421444
static VkFormat XNAToVK_SurfaceFormat[] =
@@ -1466,6 +1468,8 @@ static VkFormat XNAToVK_SurfaceFormat[] =
14661468
VK_FORMAT_BC3_SRGB_BLOCK, /* SurfaceFormat.Dxt5SrgbEXT */
14671469
VK_FORMAT_BC7_UNORM_BLOCK, /* SurfaceFormat.Bc7EXT */
14681470
VK_FORMAT_BC7_SRGB_BLOCK, /* SurfaceFormat.Bc7SrgbEXT */
1471+
VK_FORMAT_R8_UNORM, /* SurfaceFormat.NormalizedByteEXT */
1472+
VK_FORMAT_R16_UNORM, /* SurfaceFormat.NormalizedUShortEXT */
14691473
};
14701474

14711475
static inline VkFormat XNAToVK_DepthFormat(

0 commit comments

Comments
 (0)