mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-16 11:06:49 +01:00
Fixed bug 2122 - SDL_CreateTexture allows illegal texture sizes
Lloyd Bryant SDL_CreateTexture() is succeeding (i.e. returning a valid pointer) when the requested horizontal or vertical size of the texture exceeds the maximum allowed by the render. This results in hard-to-understand errors showing up when later attempting to use that texture (such as with SDL_SetRenderTarget()).
This commit is contained in:
parent
058aba086c
commit
22a972a440
@ -410,6 +410,11 @@ SDL_CreateTexture(SDL_Renderer * renderer, Uint32 format, int access, int w, int
|
|||||||
SDL_SetError("Texture dimensions can't be 0");
|
SDL_SetError("Texture dimensions can't be 0");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if ((renderer->info.max_texture_width && w > renderer->info.max_texture_width) ||
|
||||||
|
(renderer->info.max_texture_height && h > renderer->info.max_texture_height)) {
|
||||||
|
SDL_SetError("Texture dimensions are limited to %dx%d", renderer->info.max_texture_width, renderer->info.max_texture_height);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
texture = (SDL_Texture *) SDL_calloc(1, sizeof(*texture));
|
texture = (SDL_Texture *) SDL_calloc(1, sizeof(*texture));
|
||||||
if (!texture) {
|
if (!texture) {
|
||||||
SDL_OutOfMemory();
|
SDL_OutOfMemory();
|
||||||
|
@ -1627,6 +1627,7 @@ GLES2_CreateRenderer(SDL_Window *window, Uint32 flags)
|
|||||||
#endif
|
#endif
|
||||||
Uint32 windowFlags;
|
Uint32 windowFlags;
|
||||||
GLint window_framebuffer;
|
GLint window_framebuffer;
|
||||||
|
GLint value;
|
||||||
|
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
|
||||||
@ -1685,6 +1686,13 @@ GLES2_CreateRenderer(SDL_Window *window, Uint32 flags)
|
|||||||
renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
|
renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
value = 0;
|
||||||
|
rdata->glGetIntegerv(GL_MAX_TEXTURE_SIZE, &value);
|
||||||
|
renderer->info.max_texture_width = value;
|
||||||
|
value = 0;
|
||||||
|
rdata->glGetIntegerv(GL_MAX_TEXTURE_SIZE, &value);
|
||||||
|
renderer->info.max_texture_height = value;
|
||||||
|
|
||||||
/* Determine supported shader formats */
|
/* Determine supported shader formats */
|
||||||
/* HACK: glGetInteger is broken on the Zune HD's compositor, so we just hardcode this */
|
/* HACK: glGetInteger is broken on the Zune HD's compositor, so we just hardcode this */
|
||||||
rdata->glGetError();
|
rdata->glGetError();
|
||||||
|
Loading…
Reference in New Issue
Block a user