mirror of https://github.com/libsdl-org/SDL.git
Removed the limit on the number of supported renderer texture formats
Fixes https://github.com/libsdl-org/SDL/issues/9056
This commit is contained in:
parent
f3d79ad75f
commit
598b4e0a1f
|
|
@ -87,7 +87,7 @@ typedef struct SDL_RendererInfo
|
||||||
const char *name; /**< The name of the renderer */
|
const char *name; /**< The name of the renderer */
|
||||||
SDL_RendererFlags flags; /**< Supported ::SDL_RendererFlags */
|
SDL_RendererFlags flags; /**< Supported ::SDL_RendererFlags */
|
||||||
int num_texture_formats; /**< The number of available texture formats */
|
int num_texture_formats; /**< The number of available texture formats */
|
||||||
SDL_PixelFormatEnum texture_formats[16]; /**< The available texture formats */
|
const SDL_PixelFormatEnum *texture_formats; /**< The available texture formats */
|
||||||
int max_texture_width; /**< The maximum texture width */
|
int max_texture_width; /**< The maximum texture width */
|
||||||
int max_texture_height; /**< The maximum texture height */
|
int max_texture_height; /**< The maximum texture height */
|
||||||
} SDL_RendererInfo;
|
} SDL_RendererInfo;
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,17 @@ char SDL_renderer_magic;
|
||||||
char SDL_texture_magic;
|
char SDL_texture_magic;
|
||||||
|
|
||||||
|
|
||||||
|
int SDL_AddSupportedTextureFormat(SDL_Renderer *renderer, SDL_PixelFormatEnum format)
|
||||||
|
{
|
||||||
|
SDL_PixelFormatEnum *texture_formats = (SDL_PixelFormatEnum *)SDL_realloc((void *)renderer->info.texture_formats, (renderer->info.num_texture_formats + 1) * sizeof(SDL_PixelFormatEnum));
|
||||||
|
if (!texture_formats) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
texture_formats[renderer->info.num_texture_formats++] = format;
|
||||||
|
renderer->info.texture_formats = texture_formats;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void SDL_SetupRendererColorspace(SDL_Renderer *renderer, SDL_PropertiesID props)
|
void SDL_SetupRendererColorspace(SDL_Renderer *renderer, SDL_PropertiesID props)
|
||||||
{
|
{
|
||||||
renderer->output_colorspace = (SDL_Colorspace)SDL_GetNumberProperty(props, SDL_PROP_RENDERER_CREATE_OUTPUT_COLORSPACE_NUMBER, SDL_COLORSPACE_SRGB);
|
renderer->output_colorspace = (SDL_Colorspace)SDL_GetNumberProperty(props, SDL_PROP_RENDERER_CREATE_OUTPUT_COLORSPACE_NUMBER, SDL_COLORSPACE_SRGB);
|
||||||
|
|
@ -780,7 +791,7 @@ const char *SDL_GetRenderDriver(int index)
|
||||||
SDL_GetNumRenderDrivers() - 1);
|
SDL_GetNumRenderDrivers() - 1);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return render_drivers[index]->info.name;
|
return render_drivers[index]->name;
|
||||||
#else
|
#else
|
||||||
SDL_SetError("SDL not built with rendering support");
|
SDL_SetError("SDL not built with rendering support");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
@ -979,7 +990,7 @@ SDL_Renderer *SDL_CreateRendererWithProperties(SDL_PropertiesID props)
|
||||||
if (name) {
|
if (name) {
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
const SDL_RenderDriver *driver = render_drivers[i];
|
const SDL_RenderDriver *driver = render_drivers[i];
|
||||||
if (SDL_strcasecmp(name, driver->info.name) == 0) {
|
if (SDL_strcasecmp(name, driver->name) == 0) {
|
||||||
// Create a new renderer instance
|
// Create a new renderer instance
|
||||||
++attempted;
|
++attempted;
|
||||||
rc = driver->CreateRenderer(renderer, window, props);
|
rc = driver->CreateRenderer(renderer, window, props);
|
||||||
|
|
@ -1104,6 +1115,7 @@ error:
|
||||||
#ifdef SDL_PLATFORM_ANDROID
|
#ifdef SDL_PLATFORM_ANDROID
|
||||||
Android_ActivityMutex_Unlock();
|
Android_ActivityMutex_Unlock();
|
||||||
#endif
|
#endif
|
||||||
|
SDL_free((void *)renderer->info.texture_formats);
|
||||||
SDL_free(renderer);
|
SDL_free(renderer);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
@ -4588,6 +4600,7 @@ void SDL_DestroyRenderer(SDL_Renderer *renderer)
|
||||||
renderer->magic = NULL; // It's no longer magical...
|
renderer->magic = NULL; // It's no longer magical...
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SDL_free((void *)renderer->info.texture_formats);
|
||||||
SDL_free(renderer);
|
SDL_free(renderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -299,8 +299,7 @@ struct SDL_RenderDriver
|
||||||
{
|
{
|
||||||
int (*CreateRenderer)(SDL_Renderer *renderer, SDL_Window *window, SDL_PropertiesID props);
|
int (*CreateRenderer)(SDL_Renderer *renderer, SDL_Window *window, SDL_PropertiesID props);
|
||||||
|
|
||||||
/* Info about the renderer capabilities */
|
const char *name;
|
||||||
SDL_RendererInfo info;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Not all of these are available in a given build. Use #ifdefs, etc. */
|
/* Not all of these are available in a given build. Use #ifdefs, etc. */
|
||||||
|
|
@ -316,6 +315,9 @@ extern SDL_RenderDriver PSP_RenderDriver;
|
||||||
extern SDL_RenderDriver SW_RenderDriver;
|
extern SDL_RenderDriver SW_RenderDriver;
|
||||||
extern SDL_RenderDriver VITA_GXM_RenderDriver;
|
extern SDL_RenderDriver VITA_GXM_RenderDriver;
|
||||||
|
|
||||||
|
/* Add a supported texture format to a renderer */
|
||||||
|
extern int SDL_AddSupportedTextureFormat(SDL_Renderer *renderer, SDL_PixelFormatEnum format);
|
||||||
|
|
||||||
/* Setup colorspace conversion */
|
/* Setup colorspace conversion */
|
||||||
extern void SDL_SetupRendererColorspace(SDL_Renderer *renderer, SDL_PropertiesID props);
|
extern void SDL_SetupRendererColorspace(SDL_Renderer *renderer, SDL_PropertiesID props);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1617,10 +1617,12 @@ int D3D_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Propertie
|
||||||
renderer->DestroyTexture = D3D_DestroyTexture;
|
renderer->DestroyTexture = D3D_DestroyTexture;
|
||||||
renderer->DestroyRenderer = D3D_DestroyRenderer;
|
renderer->DestroyRenderer = D3D_DestroyRenderer;
|
||||||
renderer->SetVSync = D3D_SetVSync;
|
renderer->SetVSync = D3D_SetVSync;
|
||||||
renderer->info = D3D_RenderDriver.info;
|
|
||||||
renderer->driverdata = data;
|
renderer->driverdata = data;
|
||||||
D3D_InvalidateCachedState(renderer);
|
D3D_InvalidateCachedState(renderer);
|
||||||
|
|
||||||
|
renderer->info.name = D3D_RenderDriver.name;
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ARGB8888);
|
||||||
|
|
||||||
SDL_GetWindowSizeInPixels(window, &w, &h);
|
SDL_GetWindowSizeInPixels(window, &w, &h);
|
||||||
if (SDL_GetWindowFlags(window) & SDL_WINDOW_FULLSCREEN) {
|
if (SDL_GetWindowFlags(window) & SDL_WINDOW_FULLSCREEN) {
|
||||||
fullscreen_mode = SDL_GetWindowFullscreenMode(window);
|
fullscreen_mode = SDL_GetWindowFullscreenMode(window);
|
||||||
|
|
@ -1717,8 +1719,8 @@ int D3D_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Propertie
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (data->shaders[SHADER_YUV]) {
|
if (data->shaders[SHADER_YUV]) {
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_YV12;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_IYUV;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1729,12 +1731,6 @@ int D3D_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Propertie
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderDriver D3D_RenderDriver = {
|
SDL_RenderDriver D3D_RenderDriver = {
|
||||||
D3D_CreateRenderer,
|
D3D_CreateRenderer, "direct3d"
|
||||||
{ "direct3d",
|
|
||||||
SDL_RENDERER_PRESENTVSYNC,
|
|
||||||
1,
|
|
||||||
{ SDL_PIXELFORMAT_ARGB8888 },
|
|
||||||
0,
|
|
||||||
0 }
|
|
||||||
};
|
};
|
||||||
#endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */
|
#endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */
|
||||||
|
|
|
||||||
|
|
@ -2801,10 +2801,20 @@ static int D3D11_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_
|
||||||
renderer->RenderPresent = D3D11_RenderPresent;
|
renderer->RenderPresent = D3D11_RenderPresent;
|
||||||
renderer->DestroyTexture = D3D11_DestroyTexture;
|
renderer->DestroyTexture = D3D11_DestroyTexture;
|
||||||
renderer->DestroyRenderer = D3D11_DestroyRenderer;
|
renderer->DestroyRenderer = D3D11_DestroyRenderer;
|
||||||
renderer->info = D3D11_RenderDriver.info;
|
|
||||||
renderer->driverdata = data;
|
renderer->driverdata = data;
|
||||||
D3D11_InvalidateCachedState(renderer);
|
D3D11_InvalidateCachedState(renderer);
|
||||||
|
|
||||||
|
renderer->info.name = D3D11_RenderDriver.name;
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ARGB8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XRGB8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XBGR2101010);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBA64_FLOAT);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV12);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P010);
|
||||||
|
|
||||||
#if SDL_WINAPI_FAMILY_PHONE
|
#if SDL_WINAPI_FAMILY_PHONE
|
||||||
/* VSync is required in Windows Phone, at least for Win Phone 8.0 and 8.1.
|
/* VSync is required in Windows Phone, at least for Win Phone 8.0 and 8.1.
|
||||||
* Failure to use it seems to either result in:
|
* Failure to use it seems to either result in:
|
||||||
|
|
@ -2844,24 +2854,7 @@ static int D3D11_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderDriver D3D11_RenderDriver = {
|
SDL_RenderDriver D3D11_RenderDriver = {
|
||||||
D3D11_CreateRenderer,
|
D3D11_CreateRenderer, "direct3d11"
|
||||||
{
|
|
||||||
"direct3d11",
|
|
||||||
SDL_RENDERER_PRESENTVSYNC, /* flags. see SDL_RendererFlags */
|
|
||||||
9, /* num_texture_formats */
|
|
||||||
{ /* texture_formats */
|
|
||||||
SDL_PIXELFORMAT_ARGB8888,
|
|
||||||
SDL_PIXELFORMAT_XRGB8888,
|
|
||||||
SDL_PIXELFORMAT_XBGR2101010,
|
|
||||||
SDL_PIXELFORMAT_RGBA64_FLOAT,
|
|
||||||
SDL_PIXELFORMAT_YV12,
|
|
||||||
SDL_PIXELFORMAT_IYUV,
|
|
||||||
SDL_PIXELFORMAT_NV12,
|
|
||||||
SDL_PIXELFORMAT_NV21,
|
|
||||||
SDL_PIXELFORMAT_P010 },
|
|
||||||
0, /* max_texture_width: will be filled in later */
|
|
||||||
0 /* max_texture_height: will be filled in later */
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
|
#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
|
||||||
|
|
|
||||||
|
|
@ -3219,10 +3219,22 @@ int D3D12_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Propert
|
||||||
renderer->RenderPresent = D3D12_RenderPresent;
|
renderer->RenderPresent = D3D12_RenderPresent;
|
||||||
renderer->DestroyTexture = D3D12_DestroyTexture;
|
renderer->DestroyTexture = D3D12_DestroyTexture;
|
||||||
renderer->DestroyRenderer = D3D12_DestroyRenderer;
|
renderer->DestroyRenderer = D3D12_DestroyRenderer;
|
||||||
renderer->info = D3D12_RenderDriver.info;
|
|
||||||
renderer->driverdata = data;
|
renderer->driverdata = data;
|
||||||
D3D12_InvalidateCachedState(renderer);
|
D3D12_InvalidateCachedState(renderer);
|
||||||
|
|
||||||
|
renderer->info.name = D3D12_RenderDriver.name;
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ARGB8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XRGB8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XBGR2101010);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBA64_FLOAT);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV12);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P010);
|
||||||
|
renderer->info.max_texture_width = 16384;
|
||||||
|
renderer->info.max_texture_height = 16384;
|
||||||
|
|
||||||
if (SDL_GetBooleanProperty(create_props, SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_BOOLEAN, SDL_FALSE)) {
|
if (SDL_GetBooleanProperty(create_props, SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_BOOLEAN, SDL_FALSE)) {
|
||||||
renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
|
renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
|
||||||
}
|
}
|
||||||
|
|
@ -3247,24 +3259,7 @@ int D3D12_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Propert
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderDriver D3D12_RenderDriver = {
|
SDL_RenderDriver D3D12_RenderDriver = {
|
||||||
D3D12_CreateRenderer,
|
D3D12_CreateRenderer, "direct3d12"
|
||||||
{
|
|
||||||
"direct3d12",
|
|
||||||
SDL_RENDERER_PRESENTVSYNC, /* flags. see SDL_RendererFlags */
|
|
||||||
9, /* num_texture_formats */
|
|
||||||
{ /* texture_formats */
|
|
||||||
SDL_PIXELFORMAT_ARGB8888,
|
|
||||||
SDL_PIXELFORMAT_XRGB8888,
|
|
||||||
SDL_PIXELFORMAT_XBGR2101010,
|
|
||||||
SDL_PIXELFORMAT_RGBA64_FLOAT,
|
|
||||||
SDL_PIXELFORMAT_YV12,
|
|
||||||
SDL_PIXELFORMAT_IYUV,
|
|
||||||
SDL_PIXELFORMAT_NV12,
|
|
||||||
SDL_PIXELFORMAT_NV21,
|
|
||||||
SDL_PIXELFORMAT_P010 },
|
|
||||||
16384, /* max_texture_width */
|
|
||||||
16384 /* max_texture_height */
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Ends C function definitions when using C++ */
|
/* Ends C function definitions when using C++ */
|
||||||
|
|
|
||||||
|
|
@ -2139,7 +2139,17 @@ static int METAL_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_
|
||||||
renderer->GetMetalLayer = METAL_GetMetalLayer;
|
renderer->GetMetalLayer = METAL_GetMetalLayer;
|
||||||
renderer->GetMetalCommandEncoder = METAL_GetMetalCommandEncoder;
|
renderer->GetMetalCommandEncoder = METAL_GetMetalCommandEncoder;
|
||||||
|
|
||||||
renderer->info = METAL_RenderDriver.info;
|
renderer->info.name = METAL_RenderDriver.name;
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ARGB8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XBGR2101010);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBA64_FLOAT);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBA128_FLOAT);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV12);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P010);
|
||||||
|
|
||||||
#if (defined(SDL_PLATFORM_MACOS) && defined(MAC_OS_X_VERSION_10_13)) || TARGET_OS_MACCATALYST
|
#if (defined(SDL_PLATFORM_MACOS) && defined(MAC_OS_X_VERSION_10_13)) || TARGET_OS_MACCATALYST
|
||||||
if (@available(macOS 10.13, *)) {
|
if (@available(macOS 10.13, *)) {
|
||||||
|
|
@ -2195,24 +2205,7 @@ static int METAL_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderDriver METAL_RenderDriver = {
|
SDL_RenderDriver METAL_RenderDriver = {
|
||||||
METAL_CreateRenderer,
|
METAL_CreateRenderer, "metal"
|
||||||
{
|
|
||||||
"metal",
|
|
||||||
SDL_RENDERER_PRESENTVSYNC,
|
|
||||||
10,
|
|
||||||
{ SDL_PIXELFORMAT_ARGB8888,
|
|
||||||
SDL_PIXELFORMAT_ABGR8888,
|
|
||||||
SDL_PIXELFORMAT_XBGR2101010,
|
|
||||||
SDL_PIXELFORMAT_RGBA64_FLOAT,
|
|
||||||
SDL_PIXELFORMAT_RGBA128_FLOAT,
|
|
||||||
SDL_PIXELFORMAT_YV12,
|
|
||||||
SDL_PIXELFORMAT_IYUV,
|
|
||||||
SDL_PIXELFORMAT_NV12,
|
|
||||||
SDL_PIXELFORMAT_NV21,
|
|
||||||
SDL_PIXELFORMAT_P010 },
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_RENDER_METAL */
|
#endif /* SDL_VIDEO_RENDER_METAL */
|
||||||
|
|
|
||||||
|
|
@ -1678,12 +1678,18 @@ static int GL_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Pro
|
||||||
renderer->DestroyTexture = GL_DestroyTexture;
|
renderer->DestroyTexture = GL_DestroyTexture;
|
||||||
renderer->DestroyRenderer = GL_DestroyRenderer;
|
renderer->DestroyRenderer = GL_DestroyRenderer;
|
||||||
renderer->SetVSync = GL_SetVSync;
|
renderer->SetVSync = GL_SetVSync;
|
||||||
renderer->info = GL_RenderDriver.info;
|
|
||||||
renderer->info.flags = 0; /* will set some flags below. */
|
renderer->info.flags = 0; /* will set some flags below. */
|
||||||
renderer->driverdata = data;
|
renderer->driverdata = data;
|
||||||
GL_InvalidateCachedState(renderer);
|
GL_InvalidateCachedState(renderer);
|
||||||
renderer->window = window;
|
renderer->window = window;
|
||||||
|
|
||||||
|
renderer->info.name = GL_RenderDriver.name;
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ARGB8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ARGB8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XRGB8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XBGR8888);
|
||||||
|
|
||||||
data->context = SDL_GL_CreateContext(window);
|
data->context = SDL_GL_CreateContext(window);
|
||||||
if (!data->context) {
|
if (!data->context) {
|
||||||
goto error;
|
goto error;
|
||||||
|
|
@ -1793,18 +1799,18 @@ static int GL_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Pro
|
||||||
#if SDL_HAVE_YUV
|
#if SDL_HAVE_YUV
|
||||||
/* We support YV12 textures using 3 textures and a shader */
|
/* We support YV12 textures using 3 textures and a shader */
|
||||||
if (data->shaders && data->num_texture_units >= 3) {
|
if (data->shaders && data->num_texture_units >= 3) {
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_YV12;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_IYUV;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We support NV12 textures using 2 textures and a shader */
|
/* We support NV12 textures using 2 textures and a shader */
|
||||||
if (data->shaders && data->num_texture_units >= 2) {
|
if (data->shaders && data->num_texture_units >= 2) {
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_NV12;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV12);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_NV21;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef SDL_PLATFORM_MACOS
|
#ifdef SDL_PLATFORM_MACOS
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_UYVY;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_UYVY);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
renderer->rect_index_order[0] = 0;
|
renderer->rect_index_order[0] = 0;
|
||||||
|
|
@ -1871,16 +1877,7 @@ error:
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderDriver GL_RenderDriver = {
|
SDL_RenderDriver GL_RenderDriver = {
|
||||||
GL_CreateRenderer,
|
GL_CreateRenderer, "opengl"
|
||||||
{ "opengl",
|
|
||||||
SDL_RENDERER_PRESENTVSYNC,
|
|
||||||
4,
|
|
||||||
{ SDL_PIXELFORMAT_ARGB8888,
|
|
||||||
SDL_PIXELFORMAT_ABGR8888,
|
|
||||||
SDL_PIXELFORMAT_XRGB8888,
|
|
||||||
SDL_PIXELFORMAT_XBGR8888 },
|
|
||||||
0,
|
|
||||||
0 }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_RENDER_OGL */
|
#endif /* SDL_VIDEO_RENDER_OGL */
|
||||||
|
|
|
||||||
|
|
@ -2087,11 +2087,16 @@ static int GLES2_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_
|
||||||
if (!data) {
|
if (!data) {
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
renderer->info = GLES2_RenderDriver.info;
|
|
||||||
renderer->driverdata = data;
|
renderer->driverdata = data;
|
||||||
GLES2_InvalidateCachedState(renderer);
|
GLES2_InvalidateCachedState(renderer);
|
||||||
renderer->window = window;
|
renderer->window = window;
|
||||||
|
|
||||||
|
renderer->info.name = GLES2_RenderDriver.name;
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBA32);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_BGRA32);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_BGRX32);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBX32);
|
||||||
|
|
||||||
/* Create an OpenGL ES 2.0 context */
|
/* Create an OpenGL ES 2.0 context */
|
||||||
data->context = SDL_GL_CreateContext(window);
|
data->context = SDL_GL_CreateContext(window);
|
||||||
if (!data->context) {
|
if (!data->context) {
|
||||||
|
|
@ -2183,14 +2188,14 @@ static int GLES2_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_
|
||||||
renderer->DestroyRenderer = GLES2_DestroyRenderer;
|
renderer->DestroyRenderer = GLES2_DestroyRenderer;
|
||||||
renderer->SetVSync = GLES2_SetVSync;
|
renderer->SetVSync = GLES2_SetVSync;
|
||||||
#if SDL_HAVE_YUV
|
#if SDL_HAVE_YUV
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_YV12;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_IYUV;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_NV12;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV12);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_NV21;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
|
||||||
#endif
|
#endif
|
||||||
#ifdef GL_TEXTURE_EXTERNAL_OES
|
#ifdef GL_TEXTURE_EXTERNAL_OES
|
||||||
if (GLES2_CacheShader(data, GLES2_SHADER_FRAGMENT_TEXTURE_EXTERNAL_OES, GL_FRAGMENT_SHADER)) {
|
if (GLES2_CacheShader(data, GLES2_SHADER_FRAGMENT_TEXTURE_EXTERNAL_OES, GL_FRAGMENT_SHADER)) {
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_EXTERNAL_OES;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_EXTERNAL_OES);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -2243,16 +2248,7 @@ error:
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderDriver GLES2_RenderDriver = {
|
SDL_RenderDriver GLES2_RenderDriver = {
|
||||||
GLES2_CreateRenderer,
|
GLES2_CreateRenderer, "opengles2"
|
||||||
{ "opengles2",
|
|
||||||
SDL_RENDERER_PRESENTVSYNC,
|
|
||||||
4,
|
|
||||||
{ SDL_PIXELFORMAT_RGBA32,
|
|
||||||
SDL_PIXELFORMAT_BGRA32,
|
|
||||||
SDL_PIXELFORMAT_BGRX32,
|
|
||||||
SDL_PIXELFORMAT_RGBX32 },
|
|
||||||
0,
|
|
||||||
0 }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_RENDER_OGL_ES2 */
|
#endif /* SDL_VIDEO_RENDER_OGL_ES2 */
|
||||||
|
|
|
||||||
|
|
@ -692,11 +692,16 @@ static int PS2_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Pr
|
||||||
renderer->DestroyTexture = PS2_DestroyTexture;
|
renderer->DestroyTexture = PS2_DestroyTexture;
|
||||||
renderer->DestroyRenderer = PS2_DestroyRenderer;
|
renderer->DestroyRenderer = PS2_DestroyRenderer;
|
||||||
renderer->SetVSync = PS2_SetVSync;
|
renderer->SetVSync = PS2_SetVSync;
|
||||||
renderer->info = PS2_RenderDriver.info;
|
|
||||||
renderer->driverdata = data;
|
renderer->driverdata = data;
|
||||||
PS2_InvalidateCachedState(renderer);
|
PS2_InvalidateCachedState(renderer);
|
||||||
renderer->window = window;
|
renderer->window = window;
|
||||||
|
|
||||||
|
renderer->info.name = PS2_RenderDriver.name;
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR1555);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR8888);
|
||||||
|
renderer->info.max_texture_width = 1024;
|
||||||
|
renderer->info.max_texture_height = 1024;
|
||||||
|
|
||||||
if (data->vsync) {
|
if (data->vsync) {
|
||||||
renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
|
renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
|
||||||
}
|
}
|
||||||
|
|
@ -704,18 +709,7 @@ static int PS2_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Pr
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderDriver PS2_RenderDriver = {
|
SDL_RenderDriver PS2_RenderDriver = {
|
||||||
.CreateRenderer = PS2_CreateRenderer,
|
PS2_CreateRenderer, "PS2 gsKit"
|
||||||
.info = {
|
|
||||||
.name = "PS2 gsKit",
|
|
||||||
.flags = SDL_RENDERER_PRESENTVSYNC,
|
|
||||||
.num_texture_formats = 2,
|
|
||||||
.texture_formats = {
|
|
||||||
[0] = SDL_PIXELFORMAT_ABGR1555,
|
|
||||||
[1] = SDL_PIXELFORMAT_ABGR8888,
|
|
||||||
},
|
|
||||||
.max_texture_width = 1024,
|
|
||||||
.max_texture_height = 1024,
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_RENDER_PS2 */
|
#endif /* SDL_VIDEO_RENDER_PS2 */
|
||||||
|
|
|
||||||
|
|
@ -1324,11 +1324,18 @@ static int PSP_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Pr
|
||||||
renderer->DestroyTexture = PSP_DestroyTexture;
|
renderer->DestroyTexture = PSP_DestroyTexture;
|
||||||
renderer->DestroyRenderer = PSP_DestroyRenderer;
|
renderer->DestroyRenderer = PSP_DestroyRenderer;
|
||||||
renderer->SetVSync = PSP_SetVSync;
|
renderer->SetVSync = PSP_SetVSync;
|
||||||
renderer->info = PSP_RenderDriver.info;
|
|
||||||
renderer->driverdata = data;
|
renderer->driverdata = data;
|
||||||
PSP_InvalidateCachedState(renderer);
|
PSP_InvalidateCachedState(renderer);
|
||||||
renderer->window = window;
|
renderer->window = window;
|
||||||
|
|
||||||
|
renderer->info.name = PSP_RenderDriver.name;
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_BGR565);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR1555);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR4444);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR8888);
|
||||||
|
renderer->info.max_texture_width = 512;
|
||||||
|
renderer->info.max_texture_height = 512;
|
||||||
|
|
||||||
data->initialized = SDL_TRUE;
|
data->initialized = SDL_TRUE;
|
||||||
data->most_recent_target = NULL;
|
data->most_recent_target = NULL;
|
||||||
data->least_recent_target = NULL;
|
data->least_recent_target = NULL;
|
||||||
|
|
@ -1399,20 +1406,7 @@ static int PSP_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Pr
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderDriver PSP_RenderDriver = {
|
SDL_RenderDriver PSP_RenderDriver = {
|
||||||
.CreateRenderer = PSP_CreateRenderer,
|
PSP_CreateRenderer, "PSP"
|
||||||
.info = {
|
|
||||||
.name = "PSP",
|
|
||||||
.flags = SDL_RENDERER_PRESENTVSYNC,
|
|
||||||
.num_texture_formats = 4,
|
|
||||||
.texture_formats = {
|
|
||||||
[0] = SDL_PIXELFORMAT_BGR565,
|
|
||||||
[1] = SDL_PIXELFORMAT_ABGR1555,
|
|
||||||
[2] = SDL_PIXELFORMAT_ABGR4444,
|
|
||||||
[3] = SDL_PIXELFORMAT_ABGR8888,
|
|
||||||
},
|
|
||||||
.max_texture_width = 512,
|
|
||||||
.max_texture_height = 512,
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_RENDER_PSP */
|
#endif /* SDL_VIDEO_RENDER_PSP */
|
||||||
|
|
|
||||||
|
|
@ -1023,58 +1023,58 @@ static void SW_DestroyRenderer(SDL_Renderer *renderer)
|
||||||
static void SW_SelectBestFormats(SDL_Renderer *renderer, SDL_PixelFormatEnum format)
|
static void SW_SelectBestFormats(SDL_Renderer *renderer, SDL_PixelFormatEnum format)
|
||||||
{
|
{
|
||||||
/* Prefer the format used by the framebuffer by default. */
|
/* Prefer the format used by the framebuffer by default. */
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = format;
|
SDL_AddSupportedTextureFormat(renderer, format);
|
||||||
|
|
||||||
switch (format) {
|
switch (format) {
|
||||||
case SDL_PIXELFORMAT_XRGB4444:
|
case SDL_PIXELFORMAT_XRGB4444:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_ARGB4444;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ARGB4444);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_XBGR4444:
|
case SDL_PIXELFORMAT_XBGR4444:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_ABGR4444;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR4444);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_ARGB4444:
|
case SDL_PIXELFORMAT_ARGB4444:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_XRGB4444;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XRGB4444);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_ABGR4444:
|
case SDL_PIXELFORMAT_ABGR4444:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_XBGR4444;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XBGR4444);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_PIXELFORMAT_XRGB1555:
|
case SDL_PIXELFORMAT_XRGB1555:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_ARGB1555;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ARGB1555);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_XBGR1555:
|
case SDL_PIXELFORMAT_XBGR1555:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_ABGR1555;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR1555);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_ARGB1555:
|
case SDL_PIXELFORMAT_ARGB1555:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_XRGB1555;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XRGB1555);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_ABGR1555:
|
case SDL_PIXELFORMAT_ABGR1555:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_XBGR1555;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XBGR1555);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_PIXELFORMAT_XRGB8888:
|
case SDL_PIXELFORMAT_XRGB8888:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_ARGB8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ARGB8888);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_RGBX8888:
|
case SDL_PIXELFORMAT_RGBX8888:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_RGBA8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBA8888);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_XBGR8888:
|
case SDL_PIXELFORMAT_XBGR8888:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_ABGR8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR8888);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_BGRX8888:
|
case SDL_PIXELFORMAT_BGRX8888:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_BGRA8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_BGRA8888);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_ARGB8888:
|
case SDL_PIXELFORMAT_ARGB8888:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_XRGB8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XRGB8888);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_RGBA8888:
|
case SDL_PIXELFORMAT_RGBA8888:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_RGBX8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBX8888);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_ABGR8888:
|
case SDL_PIXELFORMAT_ABGR8888:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_XBGR8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XBGR8888);
|
||||||
break;
|
break;
|
||||||
case SDL_PIXELFORMAT_BGRA8888:
|
case SDL_PIXELFORMAT_BGRA8888:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_BGRX8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_BGRX8888);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
@ -1088,30 +1088,30 @@ static void SW_SelectBestFormats(SDL_Renderer *renderer, SDL_PixelFormatEnum for
|
||||||
switch (SDL_PIXELORDER(format)) {
|
switch (SDL_PIXELORDER(format)) {
|
||||||
case SDL_PACKEDORDER_BGRX:
|
case SDL_PACKEDORDER_BGRX:
|
||||||
case SDL_PACKEDORDER_BGRA:
|
case SDL_PACKEDORDER_BGRA:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_BGRX8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_BGRX8888);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_BGRA8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_BGRA8888);
|
||||||
break;
|
break;
|
||||||
case SDL_PACKEDORDER_RGBX:
|
case SDL_PACKEDORDER_RGBX:
|
||||||
case SDL_PACKEDORDER_RGBA:
|
case SDL_PACKEDORDER_RGBA:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_RGBX8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBX8888);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_RGBA8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBA8888);
|
||||||
break;
|
break;
|
||||||
case SDL_PACKEDORDER_XBGR:
|
case SDL_PACKEDORDER_XBGR:
|
||||||
case SDL_PACKEDORDER_ABGR:
|
case SDL_PACKEDORDER_ABGR:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_XBGR8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XBGR8888);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_ABGR8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR8888);
|
||||||
break;
|
break;
|
||||||
case SDL_PACKEDORDER_XRGB:
|
case SDL_PACKEDORDER_XRGB:
|
||||||
case SDL_PACKEDORDER_ARGB:
|
case SDL_PACKEDORDER_ARGB:
|
||||||
default:
|
default:
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_XRGB8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XRGB8888);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_ARGB8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ARGB8888);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_XRGB8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XRGB8888);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_ARGB8888;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ARGB8888);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1155,10 +1155,11 @@ int SW_CreateRendererForSurface(SDL_Renderer *renderer, SDL_Surface *surface, SD
|
||||||
renderer->RenderPresent = SW_RenderPresent;
|
renderer->RenderPresent = SW_RenderPresent;
|
||||||
renderer->DestroyTexture = SW_DestroyTexture;
|
renderer->DestroyTexture = SW_DestroyTexture;
|
||||||
renderer->DestroyRenderer = SW_DestroyRenderer;
|
renderer->DestroyRenderer = SW_DestroyRenderer;
|
||||||
renderer->info = SW_RenderDriver.info;
|
|
||||||
renderer->driverdata = data;
|
renderer->driverdata = data;
|
||||||
SW_InvalidateCachedState(renderer);
|
SW_InvalidateCachedState(renderer);
|
||||||
|
|
||||||
|
renderer->info.name = SW_RenderDriver.name;
|
||||||
|
|
||||||
SW_SelectBestFormats(renderer, surface->format->format);
|
SW_SelectBestFormats(renderer, surface->format->format);
|
||||||
|
|
||||||
SDL_SetupRendererColorspace(renderer, create_props);
|
SDL_SetupRendererColorspace(renderer, create_props);
|
||||||
|
|
@ -1200,14 +1201,7 @@ static int SW_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Pro
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderDriver SW_RenderDriver = {
|
SDL_RenderDriver SW_RenderDriver = {
|
||||||
SW_CreateRenderer,
|
SW_CreateRenderer, SDL_SOFTWARE_RENDERER
|
||||||
{ SDL_SOFTWARE_RENDERER,
|
|
||||||
SDL_RENDERER_PRESENTVSYNC,
|
|
||||||
0,
|
|
||||||
{ /* formats filled in later */
|
|
||||||
SDL_PIXELFORMAT_UNKNOWN },
|
|
||||||
0,
|
|
||||||
0 }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_RENDER_SW */
|
#endif /* SDL_VIDEO_RENDER_SW */
|
||||||
|
|
|
||||||
|
|
@ -100,24 +100,7 @@ static void VITA_GXM_DestroyTexture(SDL_Renderer *renderer, SDL_Texture *texture
|
||||||
static void VITA_GXM_DestroyRenderer(SDL_Renderer *renderer);
|
static void VITA_GXM_DestroyRenderer(SDL_Renderer *renderer);
|
||||||
|
|
||||||
SDL_RenderDriver VITA_GXM_RenderDriver = {
|
SDL_RenderDriver VITA_GXM_RenderDriver = {
|
||||||
.CreateRenderer = VITA_GXM_CreateRenderer,
|
VITA_GXM_CreateRenderer, "VITA gxm"
|
||||||
.info = {
|
|
||||||
.name = "VITA gxm",
|
|
||||||
.flags = SDL_RENDERER_PRESENTVSYNC,
|
|
||||||
.num_texture_formats = 8,
|
|
||||||
.texture_formats = {
|
|
||||||
[0] = SDL_PIXELFORMAT_ABGR8888,
|
|
||||||
[1] = SDL_PIXELFORMAT_ARGB8888,
|
|
||||||
[2] = SDL_PIXELFORMAT_RGB565,
|
|
||||||
[3] = SDL_PIXELFORMAT_BGR565,
|
|
||||||
[4] = SDL_PIXELFORMAT_YV12,
|
|
||||||
[5] = SDL_PIXELFORMAT_IYUV,
|
|
||||||
[6] = SDL_PIXELFORMAT_NV12,
|
|
||||||
[7] = SDL_PIXELFORMAT_NV21,
|
|
||||||
},
|
|
||||||
.max_texture_width = 4096,
|
|
||||||
.max_texture_height = 4096,
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int PixelFormatToVITAFMT(Uint32 format)
|
static int PixelFormatToVITAFMT(Uint32 format)
|
||||||
|
|
@ -250,11 +233,22 @@ static int VITA_GXM_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, S
|
||||||
renderer->DestroyRenderer = VITA_GXM_DestroyRenderer;
|
renderer->DestroyRenderer = VITA_GXM_DestroyRenderer;
|
||||||
renderer->SetVSync = VITA_GXM_SetVSync;
|
renderer->SetVSync = VITA_GXM_SetVSync;
|
||||||
|
|
||||||
renderer->info = VITA_GXM_RenderDriver.info;
|
|
||||||
renderer->driverdata = data;
|
renderer->driverdata = data;
|
||||||
VITA_GXM_InvalidateCachedState(renderer);
|
VITA_GXM_InvalidateCachedState(renderer);
|
||||||
renderer->window = window;
|
renderer->window = window;
|
||||||
|
|
||||||
|
renderer->info.name = VITA_GXM_RenderDriver.name;
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ABGR8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ARGB8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGB565);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_BGR565);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV12);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
|
||||||
|
renderer->info.max_texture_width = 4096;
|
||||||
|
renderer->info.max_texture_height = 4096;
|
||||||
|
|
||||||
data->initialized = SDL_TRUE;
|
data->initialized = SDL_TRUE;
|
||||||
|
|
||||||
if (SDL_GetBooleanProperty(create_props, SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_BOOLEAN, SDL_FALSE)) {
|
if (SDL_GetBooleanProperty(create_props, SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_BOOLEAN, SDL_FALSE)) {
|
||||||
|
|
|
||||||
|
|
@ -4083,10 +4083,17 @@ static int VULKAN_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL
|
||||||
renderer->RenderPresent = VULKAN_RenderPresent;
|
renderer->RenderPresent = VULKAN_RenderPresent;
|
||||||
renderer->DestroyTexture = VULKAN_DestroyTexture;
|
renderer->DestroyTexture = VULKAN_DestroyTexture;
|
||||||
renderer->DestroyRenderer = VULKAN_DestroyRenderer;
|
renderer->DestroyRenderer = VULKAN_DestroyRenderer;
|
||||||
renderer->info = VULKAN_RenderDriver.info;
|
|
||||||
renderer->driverdata = rendererData;
|
renderer->driverdata = rendererData;
|
||||||
VULKAN_InvalidateCachedState(renderer);
|
VULKAN_InvalidateCachedState(renderer);
|
||||||
|
|
||||||
|
renderer->info.name = VULKAN_RenderDriver.name;
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_ARGB8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XRGB8888);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_XBGR2101010);
|
||||||
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_RGBA64_FLOAT);
|
||||||
|
renderer->info.max_texture_width = 16384;
|
||||||
|
renderer->info.max_texture_height = 16384;
|
||||||
|
|
||||||
if (SDL_GetBooleanProperty(create_props, SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_BOOLEAN, SDL_FALSE)) {
|
if (SDL_GetBooleanProperty(create_props, SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_BOOLEAN, SDL_FALSE)) {
|
||||||
renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
|
renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
|
||||||
}
|
}
|
||||||
|
|
@ -4108,11 +4115,11 @@ static int VULKAN_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL
|
||||||
|
|
||||||
#if SDL_HAVE_YUV
|
#if SDL_HAVE_YUV
|
||||||
if (rendererData->supportsKHRSamplerYCbCrConversion) {
|
if (rendererData->supportsKHRSamplerYCbCrConversion) {
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_YV12;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_YV12);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_IYUV;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_IYUV);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_NV12;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV12);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_NV21;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_NV21);
|
||||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_P010;
|
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_P010);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -4120,19 +4127,7 @@ static int VULKAN_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderDriver VULKAN_RenderDriver = {
|
SDL_RenderDriver VULKAN_RenderDriver = {
|
||||||
VULKAN_CreateRenderer,
|
VULKAN_CreateRenderer, "vulkan"
|
||||||
{
|
|
||||||
"vulkan",
|
|
||||||
SDL_RENDERER_PRESENTVSYNC, /* flags. see SDL_RendererFlags */
|
|
||||||
4, /* num_texture_formats */
|
|
||||||
{ /* texture_formats */
|
|
||||||
SDL_PIXELFORMAT_ARGB8888,
|
|
||||||
SDL_PIXELFORMAT_XRGB8888,
|
|
||||||
SDL_PIXELFORMAT_XBGR2101010,
|
|
||||||
SDL_PIXELFORMAT_RGBA64_FLOAT },
|
|
||||||
16384, /* max_texture_width */
|
|
||||||
16384 /* max_texture_height */
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_RENDER_VULKAN */
|
#endif /* SDL_VIDEO_RENDER_VULKAN */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue