diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-10-31 14:32:09 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-10-31 14:32:18 +0300 |
commit | 117bc96ce88474d3c6b28e669e6ee339441051fb (patch) | |
tree | 92e2e8e07752b50aa18995f5e6bbd4ea2c550ce1 /source/blender | |
parent | a248c2001a0a037b921355a6caaa161c270c762f (diff) |
Eevee: Fix dot corruption on intel HD5xx/6xx series
It is caused by some sync issue apparently. Adding glFlush in these
two places fixes it.
Caveat: it might have a small perf impact (did not measure it).
The fix is limited to the affected driver/operating systems.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_effects.c | 8 | ||||
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_occlusion.c | 10 |
2 files changed, 18 insertions, 0 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_effects.c b/source/blender/draw/engines/eevee/eevee_effects.c index 2978ea38d19..c7c3adeffc2 100644 --- a/source/blender/draw/engines/eevee/eevee_effects.c +++ b/source/blender/draw/engines/eevee/eevee_effects.c @@ -34,6 +34,7 @@ #include "eevee_private.h" #include "GPU_texture.h" #include "GPU_extensions.h" +#include "GPU_state.h" static struct { /* Downsample Depth */ @@ -470,6 +471,13 @@ void EEVEE_create_minmax_buffer(EEVEE_Data *vedata, GPUTexture *depth_src, int l /* Restore */ GPU_framebuffer_bind(fbl->main_fb); + + if (GPU_mip_render_workaround()) { + /* Fix dot corruption on intel HD5XX/HD6XX series. + * It seems affected drivers are the same that needs + * GPU_mip_render_workaround. */ + GPU_flush(); + } } /** diff --git a/source/blender/draw/engines/eevee/eevee_occlusion.c b/source/blender/draw/engines/eevee/eevee_occlusion.c index 8ede22cda5a..03aee102136 100644 --- a/source/blender/draw/engines/eevee/eevee_occlusion.c +++ b/source/blender/draw/engines/eevee/eevee_occlusion.c @@ -37,6 +37,9 @@ #include "eevee_private.h" +#include "GPU_extensions.h" +#include "GPU_state.h" + static struct { /* Ground Truth Ambient Occlusion */ struct GPUShader *gtao_sh; @@ -250,6 +253,13 @@ void EEVEE_occlusion_compute( DRW_draw_pass(psl->ao_horizon_search); } + if (GPU_mip_render_workaround()) { + /* Fix dot corruption on intel HD5XX/HD6XX series. + * It seems affected drivers are the same that needs + * GPU_mip_render_workaround. */ + GPU_flush(); + } + /* Restore */ GPU_framebuffer_bind(fbl->main_fb); |