diff options
Diffstat (limited to 'source/blender/gpu/intern/gpu_framebuffer.c')
-rw-r--r-- | source/blender/gpu/intern/gpu_framebuffer.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/source/blender/gpu/intern/gpu_framebuffer.c b/source/blender/gpu/intern/gpu_framebuffer.c index 6b19cea464b..1d157ecb14c 100644 --- a/source/blender/gpu/intern/gpu_framebuffer.c +++ b/source/blender/gpu/intern/gpu_framebuffer.c @@ -34,6 +34,7 @@ #include "GPU_batch.h" #include "GPU_draw.h" +#include "GPU_extensions.h" #include "GPU_framebuffer.h" #include "GPU_matrix.h" #include "GPU_shader.h" @@ -573,7 +574,20 @@ void GPU_framebuffer_recursive_downsample( glReadBuffer(GL_COLOR_ATTACHMENT0); } - for (i = 1; i < num_iter + 1 && (current_dim[0] > 4 && current_dim[1] > 4); i++) { + for (i = 1; i < num_iter + 1; i++) { + + if (GPU_type_matches(GPU_DEVICE_AMD_VEGA, GPU_OS_UNIX, GPU_DRIVER_OPENSOURCE)) { + /* NOTE : here 16 is because of a bug on AMD Vega GPU + non-pro drivers, that prevents us + * from sampling mipmaps that are smaller or equal to 16px. (9) */ + if (current_dim[0] / 2 > 16 && current_dim[1] / 2 > 16) { + break; + } + } + else { + if (current_dim[0] / 2 > 1 && current_dim[1] / 2 > 1) { + break; + } + } /* calculate next viewport size */ current_dim[0] /= 2; |