From b39f0a2f088174d3578def3502051a997cb0971f Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Tue, 8 Sep 2026 17:51:22 -0700
Subject: [PATCH] Rename SDL_PIXELFORMAT_P408 and SDL_PIXELFORMAT_P416 to
SDL_PIXELFORMAT_I444 and SDL_PIXELFORMAT_I4FL
By convention, PNNN YUV formats are bi-planar, and SDL was using them to refer to 3 plane YUV formats.
These have been replaced with I444 and I4FL, which are the most standard FOURCC values for these that I could find.
Reference: https://github.com/videolan/vlc/blob/master/src/misc/fourcc_list.h
---
include/SDL3/SDL_pixels.h | 10 +++----
src/render/SDL_render.c | 6 ++--
src/render/SDL_yuv_sw.c | 26 ++++++++---------
src/render/direct3d/SDL_render_d3d.c | 10 +++----
src/render/direct3d11/SDL_render_d3d11.c | 22 +++++++--------
src/render/direct3d12/SDL_render_d3d12.c | 22 +++++++--------
src/render/gpu/SDL_render_gpu.c | 26 ++++++++---------
src/render/metal/SDL_render_metal.m | 20 ++++++-------
src/render/opengl/SDL_render_gl.c | 12 ++++----
src/render/opengles2/SDL_render_gles2.c | 18 ++++++------
src/render/vulkan/SDL_render_vulkan.c | 24 ++++++++--------
src/video/SDL_pixels.c | 6 ++--
src/video/SDL_yuv.c | 26 ++++++++---------
src/video/yuv2rgb/yuv_rgb_std.c | 2 +-
src/video/yuv2rgb/yuv_rgb_std.h | 2 +-
test/testautomation_pixels.c | 36 ++++++++++++------------
test/testyuv.c | 22 +++++++--------
test/testyuv_cvt.c | 14 ++++-----
18 files changed, 152 insertions(+), 152 deletions(-)
diff --git a/include/SDL3/SDL_pixels.h b/include/SDL3/SDL_pixels.h
index 1ac325b9aed7c..94bd873c6154f 100644
--- a/include/SDL3/SDL_pixels.h
+++ b/include/SDL3/SDL_pixels.h
@@ -364,7 +364,7 @@ typedef enum SDL_PackedLayout
((format) == SDL_PIXELFORMAT_UYVY) || \
((format) == SDL_PIXELFORMAT_YVYU) || \
((format) == SDL_PIXELFORMAT_P010) || \
- ((format) == SDL_PIXELFORMAT_P416)) ? 2 : 1) : (((format) >> 0) & 0xFF))
+ ((format) == SDL_PIXELFORMAT_I4FL)) ? 2 : 1) : (((format) >> 0) & 0xFF))
/**
@@ -672,12 +672,12 @@ typedef enum SDL_PixelFormat
/* SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'), */
SDL_PIXELFORMAT_NV21 = 0x3132564eu, /**< YUV 4:2:0 8-bit planar mode: Y + V/U interleaved (2 planes) */
/* SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'), */
+ SDL_PIXELFORMAT_I444 = 0x34343449u, /**< YUV 4:4:4 8-bit planar mode: Y + U + V (3 planes) */
+ /* SDL_DEFINE_PIXELFOURCC('I', '4', '4', '4'), */
SDL_PIXELFORMAT_P010 = 0x30313050u, /**< YUV 4:2:0 16-bit planar mode: Y + U/V interleaved (2 planes) */
/* SDL_DEFINE_PIXELFOURCC('P', '0', '1', '0'), */
- SDL_PIXELFORMAT_P408 = 0x38303450u, /**< YUV 4:4:4 8-bit planar mode: Y + U + V (3 planes) */
- /* SDL_DEFINE_PIXELFOURCC('P', '4', '0', '8'), */
- SDL_PIXELFORMAT_P416 = 0x36313450u, /**< YUV 4:4:4 16-bit planar mode: Y + U + V (3 planes) */
- /* SDL_DEFINE_PIXELFOURCC('P', '4', '0', '8'), */
+ SDL_PIXELFORMAT_I4FL = 0x4c463449u, /**< YUV 4:4:4 16-bit planar mode: Y + U + V (3 planes) */
+ /* SDL_DEFINE_PIXELFOURCC('I', '4', 'F', 'L'), */
SDL_PIXELFORMAT_EXTERNAL_OES = 0x2053454fu, /**< Android video texture format */
/* SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ') */
diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c
index 8b8a5487f251c..bd0c2eb6fc782 100644
--- a/src/render/SDL_render.c
+++ b/src/render/SDL_render.c
@@ -2497,9 +2497,9 @@ bool SDL_UpdateYUVTexture(SDL_Texture *texture, const SDL_Rect *rect,
CHECK_PARAM(texture->format != SDL_PIXELFORMAT_YV12 &&
texture->format != SDL_PIXELFORMAT_IYUV &&
- texture->format != SDL_PIXELFORMAT_P408 &&
- texture->format != SDL_PIXELFORMAT_P416) {
- return SDL_SetError("Texture format must be YV12, IYUV, P408, or P416");
+ texture->format != SDL_PIXELFORMAT_I444 &&
+ texture->format != SDL_PIXELFORMAT_I4FL) {
+ return SDL_SetError("Texture format must be YV12, IYUV, I444, or I4FL");
}
real_rect.x = 0;
diff --git a/src/render/SDL_yuv_sw.c b/src/render/SDL_yuv_sw.c
index 97d8b0b59fd6b..02fb98afa92fb 100644
--- a/src/render/SDL_yuv_sw.c
+++ b/src/render/SDL_yuv_sw.c
@@ -35,8 +35,8 @@ SDL_SW_YUVTexture *SDL_SW_CreateYUVTexture(SDL_PixelFormat format, SDL_Colorspac
switch (format) {
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
- case SDL_PIXELFORMAT_P408:
- case SDL_PIXELFORMAT_P416:
+ case SDL_PIXELFORMAT_I444:
+ case SDL_PIXELFORMAT_I4FL:
case SDL_PIXELFORMAT_YUY2:
case SDL_PIXELFORMAT_UYVY:
case SDL_PIXELFORMAT_YVYU:
@@ -82,8 +82,8 @@ SDL_SW_YUVTexture *SDL_SW_CreateYUVTexture(SDL_PixelFormat format, SDL_Colorspac
swdata->planes[1] = swdata->planes[0] + swdata->pitches[0] * h;
swdata->planes[2] = swdata->planes[1] + swdata->pitches[1] * ((h + 1) / 2);
break;
- case SDL_PIXELFORMAT_P408:
- case SDL_PIXELFORMAT_P416:
+ case SDL_PIXELFORMAT_I444:
+ case SDL_PIXELFORMAT_I4FL:
swdata->pitches[0] = w * SDL_BYTESPERPIXEL(format);
swdata->pitches[1] = swdata->pitches[0];
swdata->pitches[2] = swdata->pitches[1];
@@ -171,8 +171,8 @@ bool SDL_SW_UpdateYUVTexture(SDL_SW_YUVTexture *swdata, const SDL_Rect *rect,
}
}
break;
- case SDL_PIXELFORMAT_P408:
- case SDL_PIXELFORMAT_P416:
+ case SDL_PIXELFORMAT_I444:
+ case SDL_PIXELFORMAT_I4FL:
if (rect->x == 0 && rect->y == 0 &&
rect->w == swdata->w && rect->h == swdata->h && pitch == swdata->pitches[0]) {
SDL_memcpy(swdata->pixels, pixels, (size_t)(swdata->h * pitch * 3));
@@ -294,8 +294,8 @@ bool SDL_SW_UpdateYUVTexturePlanar(SDL_SW_YUVTexture *swdata, const SDL_Rect *re
// Copy the U plane
src = Uplane;
- if (swdata->format == SDL_PIXELFORMAT_P408 ||
- swdata->format == SDL_PIXELFORMAT_P416) {
+ if (swdata->format == SDL_PIXELFORMAT_I444 ||
+ swdata->format == SDL_PIXELFORMAT_I4FL) {
dst = swdata->pixels + swdata->h * swdata->pitches[0];
dst += rect->y * swdata->pitches[1] + rect->x * bpp;
length = rect->w * bpp;
@@ -322,8 +322,8 @@ bool SDL_SW_UpdateYUVTexturePlanar(SDL_SW_YUVTexture *swdata, const SDL_Rect *re
// Copy the V plane
src = Vplane;
- if (swdata->format == SDL_PIXELFORMAT_P408 ||
- swdata->format == SDL_PIXELFORMAT_P416) {
+ if (swdata->format == SDL_PIXELFORMAT_I444 ||
+ swdata->format == SDL_PIXELFORMAT_I4FL) {
dst = swdata->pixels + swdata->h * swdata->pitches[0] + swdata->h * swdata->pitches[1];
dst += rect->y * swdata->pitches[2] + rect->x * bpp;
length = rect->w * bpp;
@@ -390,12 +390,12 @@ bool SDL_SW_LockYUVTexture(SDL_SW_YUVTexture *swdata, const SDL_Rect *rect,
switch (swdata->format) {
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
- case SDL_PIXELFORMAT_P408:
- case SDL_PIXELFORMAT_P416:
+ case SDL_PIXELFORMAT_I444:
+ case SDL_PIXELFORMAT_I4FL:
case SDL_PIXELFORMAT_NV12:
case SDL_PIXELFORMAT_NV21:
if (rect && (rect->x != 0 || rect->y != 0 || rect->w != swdata->w || rect->h != swdata->h)) {
- return SDL_SetError("YV12, IYUV, P408, P416, NV12, NV21 textures only support full surface locks");
+ return SDL_SetError("YV12, IYUV, I444, I4FL, NV12, NV21 textures only support full surface locks");
}
break;
default:
diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c
index c06ec7998a1da..ed5e4130df0d7 100644
--- a/src/render/direct3d/SDL_render_d3d.c
+++ b/src/render/direct3d/SDL_render_d3d.c
@@ -223,7 +223,7 @@ static D3DFORMAT PixelFormatToD3DFMT(Uint32 format)
case SDL_PIXELFORMAT_IYUV:
case SDL_PIXELFORMAT_NV12:
case SDL_PIXELFORMAT_NV21:
- case SDL_PIXELFORMAT_P408:
+ case SDL_PIXELFORMAT_I444:
return D3DFMT_L8;
default:
for (int i = 0; i < SDL_arraysize(d3d_format_map); i++) {
@@ -629,7 +629,7 @@ static bool D3D_UpdateTexture(SDL_Renderer *renderer, SDL_Texture *texture,
}
#ifdef SDL_HAVE_YUV
if (texturedata->yuv) {
- if (texture->format == SDL_PIXELFORMAT_P408) {
+ if (texture->format == SDL_PIXELFORMAT_I444) {
// Skip to the correct offset into the next texture
pixels = (const void *)((const Uint8 *)pixels + rect->h * pitch);
if (!D3D_UpdateTextureRep(data->device, &texturedata->utexture, rect->x, rect->y, rect->w, rect->h, pixels, pitch)) {
@@ -708,7 +708,7 @@ static bool D3D_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_
return SDL_SetError("Unsupported YUV colorspace");
}
}
- if (texture->format == SDL_PIXELFORMAT_P408) {
+ if (texture->format == SDL_PIXELFORMAT_I444) {
texturedata->yuv = true;
if (!D3D_CreateTextureRep(data->device, &texturedata->utexture, usage, texture->format, PixelFormatToD3DFMT(texture->format), texture->w, texture->h)) {
@@ -772,7 +772,7 @@ static bool D3D_UpdateTextureYUV(SDL_Renderer *renderer, SDL_Texture *texture,
if (!D3D_UpdateTextureRep(data->device, &texturedata->texture, rect->x, rect->y, rect->w, rect->h, Yplane, Ypitch)) {
return false;
}
- if (texture->format == SDL_PIXELFORMAT_P408) {
+ if (texture->format == SDL_PIXELFORMAT_I444) {
if (!D3D_UpdateTextureRep(data->device, &texturedata->utexture, rect->x, rect->y, rect->w, rect->h, Uplane, Upitch)) {
return false;
}
@@ -2045,7 +2045,7 @@ static bool D3D_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_P
if (caps.MaxSimultaneousTextures >= 3 && data->shaders[SHADER_YUV]) {
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
- SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P408);
+ SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_I444);
}
#endif
diff --git a/src/render/direct3d11/SDL_render_d3d11.c b/src/render/direct3d11/SDL_render_d3d11.c
index 0128ff793acaa..6a541a36fed3e 100644
--- a/src/render/direct3d11/SDL_render_d3d11.c
+++ b/src/render/direct3d11/SDL_render_d3d11.c
@@ -266,14 +266,14 @@ static DXGI_FORMAT SDLPixelFormatToDXGITextureFormat(Uint32 format, Uint32 outpu
case SDL_PIXELFORMAT_INDEX8:
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
- case SDL_PIXELFORMAT_P408:
+ case SDL_PIXELFORMAT_I444:
return DXGI_FORMAT_R8_UNORM;
case SDL_PIXELFORMAT_NV12:
case SDL_PIXELFORMAT_NV21:
return DXGI_FORMAT_NV12;
case SDL_PIXELFORMAT_P010:
return DXGI_FORMAT_P010;
- case SDL_PIXELFORMAT_P416:
+ case SDL_PIXELFORMAT_I4FL:
return DXGI_FORMAT_R16_UNORM;
default:
for (int i = 0; i < SDL_arraysize(dxgi_format_map); i++) {
@@ -1311,8 +1311,8 @@ static bool D3D11_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
return SDL_SetError("Unsupported YUV colorspace");
}
}
- if (texture->format == SDL_PIXELFORMAT_P408 ||
- texture->format == SDL_PIXELFORMAT_P416) {
+ if (texture->format == SDL_PIXELFORMAT_I444 ||
+ texture->format == SDL_PIXELFORMAT_I4FL) {
textureData->yuv = true;
@@ -1344,7 +1344,7 @@ static bool D3D11_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
}
SDL_SetPointerProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER, textureData->mainTextureV);
- const int bits_per_pixel = (texture->format == SDL_PIXELFORMAT_P408) ? 8 : 16;
+ const int bits_per_pixel = (texture->format == SDL_PIXELFORMAT_I444) ? 8 : 16;
textureData->YCbCr_matrix = SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, bits_per_pixel);
if (!textureData->YCbCr_matrix) {
return SDL_SetError("Unsupported YUV colorspace");
@@ -1603,7 +1603,7 @@ static bool D3D11_UpdateTexture(SDL_Renderer *renderer, SDL_Texture *texture,
return D3D11_UpdateTextureNV(renderer, texture, rect, plane0, Ypitch, plane1, UVpitch);
} else if (textureData->yuv) {
- if (texture->format == SDL_PIXELFORMAT_P408 || texture->format == SDL_PIXELFORMAT_P416) {
+ if (texture->format == SDL_PIXELFORMAT_I444 || texture->format == SDL_PIXELFORMAT_I4FL) {
const Uint8 *plane0 = (const Uint8 *)srcPixels;
const Uint8 *plane1 = plane0 + rect->h * srcPitch;
const Uint8 *plane2 = plane1 + rect->h * srcPitch;
@@ -1653,7 +1653,7 @@ static bool D3D11_UpdateTextureYUV(SDL_Renderer *renderer, SDL_Texture *texture,
if (!D3D11_UpdateTextureInternal(rendererData, textureData->mainTexture, SDL_BYTESPERPIXEL(texture->format), rect->x, rect->y, rect->w, rect->h, Yplane, Ypitch)) {
return false;
}
- if (texture->format == SDL_PIXELFORMAT_P408 || texture->format == SDL_PIXELFORMAT_P416) {
+ if (texture->format == SDL_PIXELFORMAT_I444 || texture->format == SDL_PIXELFORMAT_I4FL) {
if (!D3D11_UpdateTextureInternal(rendererData, textureData->mainTextureU, SDL_BYTESPERPIXEL(texture->format), rect->x, rect->y, rect->w, rect->h, Uplane, Upitch)) {
return false;
}
@@ -2216,7 +2216,7 @@ static void D3D11_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
break;
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
- case SDL_PIXELFORMAT_P408:
+ case SDL_PIXELFORMAT_I444:
constants->texture_type = TEXTURETYPE_YUV;
constants->input_type = INPUTTYPE_SRGB;
break;
@@ -2232,7 +2232,7 @@ static void D3D11_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
constants->texture_type = TEXTURETYPE_NV12;
constants->input_type = INPUTTYPE_HDR10;
break;
- case SDL_PIXELFORMAT_P416:
+ case SDL_PIXELFORMAT_I4FL:
constants->texture_type = TEXTURETYPE_YUV;
constants->input_type = INPUTTYPE_HDR10;
break;
@@ -3075,11 +3075,11 @@ static bool D3D11_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_INDEX8);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
- SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P408);
+ SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_I444);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV12);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P010);
- SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P416);
+ SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_I4FL);
return true;
}
diff --git a/src/render/direct3d12/SDL_render_d3d12.c b/src/render/direct3d12/SDL_render_d3d12.c
index b6e7c2ef8b6e0..daff2f13a9a81 100644
--- a/src/render/direct3d12/SDL_render_d3d12.c
+++ b/src/render/direct3d12/SDL_render_d3d12.c
@@ -328,14 +328,14 @@ static DXGI_FORMAT SDLPixelFormatToDXGITextureFormat(SDL_PixelFormat format, Uin
case SDL_PIXELFORMAT_INDEX8:
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
- case SDL_PIXELFORMAT_P408:
+ case SDL_PIXELFORMAT_I444:
return DXGI_FORMAT_R8_UNORM;
case SDL_PIXELFORMAT_NV12:
case SDL_PIXELFORMAT_NV21:
return DXGI_FORMAT_NV12;
case SDL_PIXELFORMAT_P010:
return DXGI_FORMAT_P010;
- case SDL_PIXELFORMAT_P416:
+ case SDL_PIXELFORMAT_I4FL:
return DXGI_FORMAT_R16_UNORM;
default:
for (int i = 0; i < SDL_arraysize(dxgi_format_map); i++) {
@@ -1741,8 +1741,8 @@ static bool D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
}
}
- if (texture->format == SDL_PIXELFORMAT_P408 ||
- texture->format == SDL_PIXELFORMAT_P416) {
+ if (texture->format == SDL_PIXELFORMAT_I444 ||
+ texture->format == SDL_PIXELFORMAT_I4FL) {
textureData->yuv = true;
if (!GetTextureProperty(create_props, SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_U_POINTER, &textureData->mainTextureU)) {
@@ -1783,7 +1783,7 @@ static bool D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
textureData->mainResourceStateV = D3D12_RESOURCE_STATE_COPY_DEST;
SDL_SetPointerProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_D3D12_TEXTURE_V_POINTER, textureData->mainTextureV);
- const int bits_per_pixel = (texture->format == SDL_PIXELFORMAT_P408) ? 8 : 16;
+ const int bits_per_pixel = (texture->format == SDL_PIXELFORMAT_I444) ? 8 : 16;
textureData->YCbCr_matrix = SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, bits_per_pixel);
if (!textureData->YCbCr_matrix) {
return SDL_SetError("Unsupported YUV colorspace");
@@ -2071,7 +2071,7 @@ static bool D3D12_UpdateTexture(SDL_Renderer *renderer, SDL_Texture *texture,
}
#ifdef SDL_HAVE_YUV
if (textureData->yuv) {
- if (texture->format == SDL_PIXELFORMAT_P408 || texture->format == SDL_PIXELFORMAT_P416) {
+ if (texture->format == SDL_PIXELFORMAT_I444 || texture->format == SDL_PIXELFORMAT_I4FL) {
// Skip to the correct offset into the next texture
srcPixels = (const void *)((const Uint8 *)srcPixels + rect->h * srcPitch);
if (!D3D12_UpdateTextureInternal(rendererData, textureData->mainTextureU, 0, rect->x, rect->y, rect->w, rect->h, srcPixels, srcPitch, &textureData->mainResourceStateU)) {
@@ -2136,7 +2136,7 @@ static bool D3D12_UpdateTextureYUV(SDL_Renderer *renderer, SDL_Texture *texture,
if (!D3D12_UpdateTextureInternal(rendererData, textureData->mainTexture, 0, rect->x, rect->y, rect->w, rect->h, Yplane, Ypitch, &textureData->mainResourceState)) {
return false;
}
- if (texture->format == SDL_PIXELFORMAT_P408 || texture->format == SDL_PIXELFORMAT_P416) {
+ if (texture->format == SDL_PIXELFORMAT_I444 || texture->format == SDL_PIXELFORMAT_I4FL) {
if (!D3D12_UpdateTextureInternal(rendererData, textureData->mainTextureU, 0, rect->x, rect->y, rect->w, rect->h, Uplane, Upitch, &textureData->mainResourceStateU)) {
return false;
}
@@ -2676,7 +2676,7 @@ static void D3D12_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
break;
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
- case SDL_PIXELFORMAT_P408:
+ case SDL_PIXELFORMAT_I444:
constants->texture_type = TEXTURETYPE_YUV;
constants->input_type = INPUTTYPE_SRGB;
break;
@@ -2692,7 +2692,7 @@ static void D3D12_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
constants->texture_type = TEXTURETYPE_NV12;
constants->input_type = INPUTTYPE_HDR10;
break;
- case SDL_PIXELFORMAT_P416:
+ case SDL_PIXELFORMAT_I4FL:
constants->texture_type = TEXTURETYPE_YUV;
constants->input_type = INPUTTYPE_HDR10;
break;
@@ -3681,11 +3681,11 @@ bool D3D12_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Proper
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_INDEX8);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
- SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P408);
+ SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_I444);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV12);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P010);
- SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P416);
+ SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_I4FL);
return true;
}
diff --git a/src/render/gpu/SDL_render_gpu.c b/src/render/gpu/SDL_render_gpu.c
index 5a5b7aa5e4007..db065138f668e 100644
--- a/src/render/gpu/SDL_render_gpu.c
+++ b/src/render/gpu/SDL_render_gpu.c
@@ -288,13 +288,13 @@ static bool GPU_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_
case SDL_PIXELFORMAT_INDEX8:
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
- case SDL_PIXELFORMAT_P408:
+ case SDL_PIXELFORMAT_I444:
case SDL_PIXELFORMAT_NV12:
case SDL_PIXELFORMAT_NV21:
format = SDL_GPU_TEXTUREFORMAT_R8_UNORM;
break;
case SDL_PIXELFORMAT_P010:
- case SDL_PIXELFORMAT_P416:
+ case SDL_PIXELFORMAT_I4FL:
format = SDL_GPU_TEXTUREFORMAT_R16_UNORM;
break;
default:
@@ -328,8 +328,8 @@ static bool GPU_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_
// Need to add size for the U and V planes
size += 2 * ((texture->h + 1) / 2) * ((data->pitch + 1) / 2);
}
- if (texture->format == SDL_PIXELFORMAT_P408 ||
- texture->format == SDL_PIXELFORMAT_P416) {
+ if (texture->format == SDL_PIXELFORMAT_I444 ||
+ texture->format == SDL_PIXELFORMAT_I4FL) {
// Need to add size for the U and V planes
size += 2 * texture->h * data->pitch;
}
@@ -411,8 +411,8 @@ static bool GPU_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_
return SDL_SetError("Unsupported YUV colorspace");
}
}
- if (texture->format == SDL_PIXELFORMAT_P408 ||
- texture->format == SDL_PIXELFORMAT_P416) {
+ if (texture->format == SDL_PIXELFORMAT_I444 ||
+ texture->format == SDL_PIXELFORMAT_I4FL) {
data->yuv = true;
data->textureU = SDL_GetPointerProperty(create_props, SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_U_POINTER, NULL);
@@ -437,7 +437,7 @@ static bool GPU_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_
}
SDL_SetPointerProperty(props, SDL_PROP_TEXTURE_GPU_TEXTURE_V_POINTER, data->textureU);
- const int bits_per_pixel = (texture->format == SDL_PIXELFORMAT_P408) ? 8 : 16;
+ const int bits_per_pixel = (texture->format == SDL_PIXELFORMAT_I444) ? 8 : 16;
data->YCbCr_matrix = SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, bits_per_pixel);
if (!data->YCbCr_matrix) {
return SDL_SetError("Unsupported YUV colorspace");
@@ -581,7 +581,7 @@ static bool GPU_UpdateTexture(SDL_Renderer *renderer, SDL_Texture *texture, cons
retval &= GPU_UpdateTextureInternal(renderdata, cpass, data->textureNV, bpp, rect->x / 2, rect->y / 2, (rect->w + 1) / 2, (rect->h + 1) / 2, UVplane, UVpitch);
} else if (data->yuv) {
- if (texture->format == SDL_PIXELFORMAT_P408 || texture->format == SDL_PIXELFORMAT_P416) {
+ if (texture->format == SDL_PIXELFORMAT_I444 || texture->format == SDL_PIXELFORMAT_I4FL) {
const Uint8 *Yplane = (const Uint8 *)pixels;
const Uint8 *Uplane = Yplane + rect->h * pitch;
const Uint8 *Vplane = Uplane + rect->h * pitch;
@@ -625,7 +625,7 @@ static bool GPU_UpdateTextureYUV(SDL_Renderer *renderer, SDL_Texture *texture,
SDL_GPUCommandBuffer *cbuf = renderdata->state.command_buffer;
SDL_GPUCopyPass *cpass = SDL_BeginGPUCopyPass(cbuf);
retval &= GPU_UpdateTextureInternal(renderdata, cpass, data->texture, bpp, rect->x, rect->y, rect->w, rect->h, Yplane, Ypitch);
- if (texture->format == SDL_PIXELFORMAT_P408 || texture->format == SDL_PIXELFORMAT_P416) {
+ if (texture->format == SDL_PIXELFORMAT_I444 || texture->format == SDL_PIXELFORMAT_I4FL) {
retval &= GPU_UpdateTextureInternal(renderdata, cpass, data->textureU, bpp, rect->x, rect->y, rect->w, rect->h, Uplane, Upitch);
retval &= GPU_UpdateTextureInternal(renderdata, cpass, data->textureV, bpp, rect->x, rect->y, rect->w, rect->h, Vplane, Vpitch);
} else {
@@ -928,7 +928,7 @@ static void CalculateAdvancedShaderConstants(SDL_Renderer *renderer, const SDL_R
break;
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
- case SDL_PIXELFORMAT_P408:
+ case SDL_PIXELFORMAT_I444:
constants->texture_type = TEXTURETYPE_YUV;
constants->input_type = INPUTTYPE_SRGB;
break;
@@ -944,7 +944,7 @@ static void CalculateAdvancedShaderConstants(SDL_Renderer *renderer, const SDL_R
constants->texture_type = TEXTURETYPE_NV12;
constants->input_type = INPUTTYPE_HDR10;
break;
- case SDL_PIXELFORMAT_P416:
+ case SDL_PIXELFORMAT_I4FL:
constants->texture_type = TEXTURETYPE_YUV;
constants->input_type = INPUTTYPE_HDR10;
break;
@@ -1908,11 +1908,11 @@ static bool GPU_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_P
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_INDEX8);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
- SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P408);
+ SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_I444);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV12);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P010);
- SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P416);
+ SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_I4FL);
SDL_SetNumberProperty(SDL_GetRendererProperties(renderer), SDL_PROP_RENDERER_MAX_TEXTURE_SIZE_NUMBER, 16384);
diff --git a/src/render/metal/SDL_render_metal.m b/src/render/metal/SDL_render_metal.m
index 0f6389d45b640..14b9853e3fd9b 100644
--- a/src/render/metal/SDL_render_metal.m
+++ b/src/render/metal/SDL_render_metal.m
@@ -755,14 +755,14 @@ static bool METAL_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
break;
case SDL_PIXELFORMAT_INDEX8:
case SDL_PIXELFORMAT_IYUV:
- case SDL_PIXELFORMAT_P408:
+ case SDL_PIXELFORMAT_I444:
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_NV12:
case SDL_PIXELFORMAT_NV21:
pixfmt = MTLPixelFormatR8Unorm;
break;
case SDL_PIXELFORMAT_P010:
- case SDL_PIXELFORMAT_P416:
+ case SDL_PIXELFORMAT_I4FL:
pixfmt = MTLPixelFormatR16Unorm;
break;
case SDL_PIXELFORMAT_RGBA64_FLOAT:
@@ -806,12 +806,12 @@ static bool METAL_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
SDL_SetPointerProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_METAL_TEXTURE_POINTER, (__bridge void *)mtltexture);
#ifdef SDL_HAVE_YUV
- BOOL yuv = (texture->format == SDL_PIXELFORMAT_IYUV || texture->format == SDL_PIXELFORMAT_YV12 || texture->format == SDL_PIXELFORMAT_P408 || texture->format == SDL_PIXELFORMAT_P416);
+ BOOL yuv = (texture->format == SDL_PIXELFORMAT_IYUV || texture->format == SDL_PIXELFORMAT_YV12 || texture->format == SDL_PIXELFORMAT_I444 || texture->format == SDL_PIXELFORMAT_I4FL);
BOOL nv12 = (texture->format == SDL_PIXELFORMAT_NV12 || texture->format == SDL_PIXELFORMAT_NV21 || texture->format == SDL_PIXELFORMAT_P010);
if (yuv) {
mtltexdesc.pixelFormat = pixfmt;
- if (texture->format == SDL_PIXELFORMAT_P408 || texture->format == SDL_PIXELFORMAT_P416) {
+ if (texture->format == SDL_PIXELFORMAT_I444 || texture->format == SDL_PIXELFORMAT_I4FL) {
mtltexdesc.width = texture->w;
mtltexdesc.height = texture->h;
} else {
@@ -1004,7 +1004,7 @@ static bool METAL_UpdateTexture(SDL_Renderer *renderer, SDL_Texture *texture,
id<MTLTexture> secondplane = texture->format == SDL_PIXELFORMAT_YV12 ? texturedata.mtltextureU : texturedata.mtltextureV;
int UVpitch;
SDL_Rect UVrect;
- if (texture->format == SDL_PIXELFORMAT_P408 || texture->format == SDL_PIXELFORMAT_P416) {
+ if (texture->format == SDL_PIXELFORMAT_I444 || texture->format == SDL_PIXELFORMAT_I4FL) {
UVpitch = pitch;
UVrect = *rect;
} else {
@@ -1055,7 +1055,7 @@ static bool METAL_UpdateTextureYUV(SDL_Renderer *renderer, SDL_Texture *texture,
@autoreleasepool {
SDL3METAL_TextureData *texturedata = (__bridge SDL3METAL_TextureData *)texture->internal;
SDL_Rect UVrect;
- if (texture->format == SDL_PIXELFORMAT_P408 || texture->format == SDL_PIXELFORMAT_P416) {
+ if (texture->format == SDL_PIXELFORMAT_I444 || texture->format == SDL_PIXELFORMAT_I4FL) {
UVrect = *rect;
} else {
UVrect.x = rect->x / 2;
@@ -1516,8 +1516,8 @@ static void SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderCommand
break;
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
- case SDL_PIXELFORMAT_P408:
- case SDL_PIXELFORMAT_P416:
+ case SDL_PIXELFORMAT_I444:
+ case SDL_PIXELFORMAT_I4FL:
constants->texture_type = TEXTURETYPE_YUV;
break;
case SDL_PIXELFORMAT_NV12:
@@ -2618,11 +2618,11 @@ in case we want to use it later (recreating the renderer)
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_INDEX8);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
- SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P408);
+ SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_I444);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV12);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P010);
- SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P416);
+ SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_I4FL);
#if defined(SDL_PLATFORM_MACOS) || TARGET_OS_MACCATALYST
data.mtllayer.displaySyncEnabled = NO;
diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c
index 4ae3ec8ad478d..b56e325612f01 100644
--- a/src/render/opengl/SDL_render_gl.c
+++ b/src/render/opengl/SDL_render_gl.c
@@ -435,7 +435,7 @@ static bool convert_format(Uint32 pixel_format, GLint *internalFormat, GLenum *f
case SDL_PIXELFORMAT_INDEX8:
case SDL_PIXELFORMAT_YV12:
case SDL_PIXELFORMAT_IYUV:
- case SDL_PIXELFORMAT_P408:
+ case SDL_PIXELFORMAT_I444:
case SDL_PIXELFORMAT_NV12:
case SDL_PIXELFORMAT_NV21:
*internalFormat = GL_LUMINANCE;
@@ -594,7 +594,7 @@ static bool GL_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_P
// Need to add size for the U and V planes
size += 2 * ((texture->h + 1) / 2) * ((data->pitch + 1) / 2);
}
- if (texture->format == SDL_PIXELFORMAT_P408) {
+ if (texture->format == SDL_PIXELFORMAT_I444) {
// Need to add size for the U and V planes
size += 2 * texture->h * data->pitch;
}
@@ -729,7
(Patch may be truncated, please check the link at the top of this post.)