From e3ae7d1f2f4592a0cc9032e2056b2236a39795f8 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Fri, 8 Jan 2021 12:14:12 +0100 Subject: Fix T83942: improve error checking when trying to render high resolution volume Reviewers: fclem Differential Revision: https://developer.blender.org/D10032 --- source/blender/draw/intern/draw_cache_impl_volume.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'source/blender/draw') diff --git a/source/blender/draw/intern/draw_cache_impl_volume.c b/source/blender/draw/intern/draw_cache_impl_volume.c index 1119e0458a5..7244dfd12c3 100644 --- a/source/blender/draw/intern/draw_cache_impl_volume.c +++ b/source/blender/draw/intern/draw_cache_impl_volume.c @@ -330,9 +330,17 @@ static DRWVolumeGrid *volume_grid_cache_get(Volume *volume, format, GPU_DATA_FLOAT, dense_grid.voxels); - GPU_texture_swizzle_set(cache_grid->texture, (channels == 3) ? "rgb1" : "rrr1"); - GPU_texture_wrap_mode(cache_grid->texture, false, false); - BKE_volume_dense_float_grid_clear(&dense_grid); + /* The texture can be null if the resolution along one axis is larger than + * GL_MAX_3D_TEXTURE_SIZE. */ + if (cache_grid->texture != NULL) { + GPU_texture_swizzle_set(cache_grid->texture, (channels == 3) ? "rgb1" : "rrr1"); + GPU_texture_wrap_mode(cache_grid->texture, false, false); + BKE_volume_dense_float_grid_clear(&dense_grid); + } + else { + MEM_freeN(dense_grid.voxels); + printf("Error: Could not allocate 3D texture for volume.\n"); + } } /* Free grid from memory if it wasn't previously loaded. */ -- cgit v1.2.3