|
@@ -288,13 +288,13 @@ static bool GPU_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_
|
|
|
case SDL_PIXELFORMAT_INDEX8:
|
|
case SDL_PIXELFORMAT_INDEX8:
|
|
|
case SDL_PIXELFORMAT_YV12:
|
|
case SDL_PIXELFORMAT_YV12:
|
|
|
case SDL_PIXELFORMAT_IYUV:
|
|
case SDL_PIXELFORMAT_IYUV:
|
|
|
- case SDL_PIXELFORMAT_P408:
|
|
|
|
|
|
|
+ case SDL_PIXELFORMAT_I444:
|
|
|
case SDL_PIXELFORMAT_NV12:
|
|
case SDL_PIXELFORMAT_NV12:
|
|
|
case SDL_PIXELFORMAT_NV21:
|
|
case SDL_PIXELFORMAT_NV21:
|
|
|
format = SDL_GPU_TEXTUREFORMAT_R8_UNORM;
|
|
format = SDL_GPU_TEXTUREFORMAT_R8_UNORM;
|
|
|
break;
|
|
break;
|
|
|
case SDL_PIXELFORMAT_P010:
|
|
case SDL_PIXELFORMAT_P010:
|
|
|
- case SDL_PIXELFORMAT_P416:
|
|
|
|
|
|
|
+ case SDL_PIXELFORMAT_I4FL:
|
|
|
format = SDL_GPU_TEXTUREFORMAT_R16_UNORM;
|
|
format = SDL_GPU_TEXTUREFORMAT_R16_UNORM;
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
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
|
|
// Need to add size for the U and V planes
|
|
|
size += 2 * ((texture->h + 1) / 2) * ((data->pitch + 1) / 2);
|
|
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
|
|
// Need to add size for the U and V planes
|
|
|
size += 2 * texture->h * data->pitch;
|
|
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");
|
|
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->yuv = true;
|
|
|
|
|
|
|
|
data->textureU = SDL_GetPointerProperty(create_props, SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_U_POINTER, NULL);
|
|
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);
|
|
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);
|
|
data->YCbCr_matrix = SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, bits_per_pixel);
|
|
|
if (!data->YCbCr_matrix) {
|
|
if (!data->YCbCr_matrix) {
|
|
|
return SDL_SetError("Unsupported YUV colorspace");
|
|
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);
|
|
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) {
|
|
} 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 *Yplane = (const Uint8 *)pixels;
|
|
|
const Uint8 *Uplane = Yplane + rect->h * pitch;
|
|
const Uint8 *Uplane = Yplane + rect->h * pitch;
|
|
|
const Uint8 *Vplane = Uplane + 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_GPUCommandBuffer *cbuf = renderdata->state.command_buffer;
|
|
|
SDL_GPUCopyPass *cpass = SDL_BeginGPUCopyPass(cbuf);
|
|
SDL_GPUCopyPass *cpass = SDL_BeginGPUCopyPass(cbuf);
|
|
|
retval &= GPU_UpdateTextureInternal(renderdata, cpass, data->texture, bpp, rect->x, rect->y, rect->w, rect->h, Yplane, Ypitch);
|
|
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->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);
|
|
retval &= GPU_UpdateTextureInternal(renderdata, cpass, data->textureV, bpp, rect->x, rect->y, rect->w, rect->h, Vplane, Vpitch);
|
|
|
} else {
|
|
} else {
|
|
@@ -928,7 +928,7 @@ static void CalculateAdvancedShaderConstants(SDL_Renderer *renderer, const SDL_R
|
|
|
break;
|
|
break;
|
|
|
case SDL_PIXELFORMAT_YV12:
|
|
case SDL_PIXELFORMAT_YV12:
|
|
|
case SDL_PIXELFORMAT_IYUV:
|
|
case SDL_PIXELFORMAT_IYUV:
|
|
|
- case SDL_PIXELFORMAT_P408:
|
|
|
|
|
|
|
+ case SDL_PIXELFORMAT_I444:
|
|
|
constants->texture_type = TEXTURETYPE_YUV;
|
|
constants->texture_type = TEXTURETYPE_YUV;
|
|
|
constants->input_type = INPUTTYPE_SRGB;
|
|
constants->input_type = INPUTTYPE_SRGB;
|
|
|
break;
|
|
break;
|
|
@@ -944,7 +944,7 @@ static void CalculateAdvancedShaderConstants(SDL_Renderer *renderer, const SDL_R
|
|
|
constants->texture_type = TEXTURETYPE_NV12;
|
|
constants->texture_type = TEXTURETYPE_NV12;
|
|
|
constants->input_type = INPUTTYPE_HDR10;
|
|
constants->input_type = INPUTTYPE_HDR10;
|
|
|
break;
|
|
break;
|
|
|
- case SDL_PIXELFORMAT_P416:
|
|
|
|
|
|
|
+ case SDL_PIXELFORMAT_I4FL:
|
|
|
constants->texture_type = TEXTURETYPE_YUV;
|
|
constants->texture_type = TEXTURETYPE_YUV;
|
|
|
constants->input_type = INPUTTYPE_HDR10;
|
|
constants->input_type = INPUTTYPE_HDR10;
|
|
|
break;
|
|
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_INDEX8);
|
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
|
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
|
|
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_NV12);
|
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
|
|
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P010);
|
|
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);
|
|
SDL_SetNumberProperty(SDL_GetRendererProperties(renderer), SDL_PROP_RENDERER_MAX_TEXTURE_SIZE_NUMBER, 16384);
|
|
|
|
|
|