Fix T55888: Eevee: crash when shadow cube size is > 512px
Note that this was only reported to happen on AMD GPU + windows.
This commit is contained in:
@@ -66,6 +66,7 @@
|
||||
|
||||
static struct GPUGlobal {
|
||||
GLint maxtexsize;
|
||||
GLint maxtexlayers;
|
||||
GLint maxcubemapsize;
|
||||
GLint maxtextures;
|
||||
GLint maxubosize;
|
||||
@@ -96,6 +97,11 @@ int GPU_max_texture_size(void)
|
||||
return GG.maxtexsize;
|
||||
}
|
||||
|
||||
int GPU_max_texture_layers(void)
|
||||
{
|
||||
return GG.maxtexlayers;
|
||||
}
|
||||
|
||||
int GPU_max_textures(void)
|
||||
{
|
||||
return GG.maxtextures;
|
||||
@@ -142,6 +148,7 @@ void gpu_extensions_init(void)
|
||||
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &GG.maxtextures);
|
||||
|
||||
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &GG.maxtexsize);
|
||||
glGetIntegerv(GL_MAX_ARRAY_TEXTURE_LAYERS, &GG.maxtexlayers);
|
||||
glGetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, &GG.maxcubemapsize);
|
||||
|
||||
if (GLEW_EXT_texture_filter_anisotropic)
|
||||
|
||||
@@ -432,6 +432,11 @@ static bool gpu_texture_try_alloc(
|
||||
glTexImage2D(proxy, 0, internalformat, tex->w, tex->h, 0, data_format, data_type, NULL);
|
||||
break;
|
||||
case GL_PROXY_TEXTURE_2D_ARRAY:
|
||||
/* HACK: Some driver wrongly check GL_PROXY_TEXTURE_2D_ARRAY as a GL_PROXY_TEXTURE_3D
|
||||
* checking all dimensions against GPU_max_texture_layers (see T55888). */
|
||||
return (tex->w < GPU_max_texture_size()) &&
|
||||
(tex->h < GPU_max_texture_size()) &&
|
||||
(tex->d < GPU_max_texture_layers());
|
||||
case GL_PROXY_TEXTURE_3D:
|
||||
glTexImage3D(proxy, 0, internalformat, tex->w, tex->h, tex->d, 0, data_format, data_type, NULL);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user