Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Stockner <lukas.stockner@freenet.de>2018-07-27 22:42:50 +0300
committerLukas Stockner <lukas.stockner@freenet.de>2018-07-27 22:42:50 +0300
commite704c78d8799172aa0f5a9122c0ff72642db0203 (patch)
tree5610b07c0c489663c24809c88da967ba261c90c4 /source/blender/gpu/intern/gpu_texture.c
parent3c643440a3348e1fc8ddc79fcdbd3933e1245562 (diff)
parent48759580839aa4e2ad2541ff4c19baaaf751721d (diff)
Merge remote-tracking branch 'origin/blender2.8' into udimtemp-udim-images
Diffstat (limited to 'source/blender/gpu/intern/gpu_texture.c')
-rw-r--r--source/blender/gpu/intern/gpu_texture.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/source/blender/gpu/intern/gpu_texture.c b/source/blender/gpu/intern/gpu_texture.c
index 5ac746ec9c1..a5dfb6a6b73 100644
--- a/source/blender/gpu/intern/gpu_texture.c
+++ b/source/blender/gpu/intern/gpu_texture.c
@@ -160,6 +160,8 @@ static int gpu_get_component_count(GPUTextureFormat format)
/* Definitely not complete, edit according to the gl specification. */
static void gpu_validate_data_format(GPUTextureFormat tex_format, GPUDataFormat data_format)
{
+ (void)data_format;
+
if (ELEM(tex_format,
GPU_DEPTH_COMPONENT24,
GPU_DEPTH_COMPONENT16,
@@ -432,6 +434,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 > 0) && (tex->w <= GPU_max_texture_size()) &&
+ (tex->h > 0) && (tex->h <= GPU_max_texture_size()) &&
+ (tex->d > 0) && (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;