From 922d53a791d53b77e5ffcf65003555fae0a0e883 Mon Sep 17 00:00:00 2001 From: Jason Fielder Date: Wed, 30 Mar 2022 20:24:39 +0200 Subject: Metal: Adding alternative support for GPU_PRIM_TRI_FAN/LINE_LOOP For Metal backend. - Metal uniform array compatibility in DRW module. - Guard OpenGL-specific workarounds and flushes behind GPU_type_matches_ex API guard. Add further render boundaries for render paths called outside of the main loop. Authored by Apple: Michael Parkin-White Ref: T96261 Reviewed By: fclem Differential Revision: https://developer.blender.org/D14438 --- source/blender/draw/engines/eevee/eevee_effects.c | 4 ++-- source/blender/draw/engines/eevee/eevee_occlusion.c | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'source/blender/draw/engines') diff --git a/source/blender/draw/engines/eevee/eevee_effects.c b/source/blender/draw/engines/eevee/eevee_effects.c index 78b9b68bb01..5fa719facf4 100644 --- a/source/blender/draw/engines/eevee/eevee_effects.c +++ b/source/blender/draw/engines/eevee/eevee_effects.c @@ -108,7 +108,7 @@ void EEVEE_effects_init(EEVEE_ViewLayerData *sldata, * MinMax Pyramid */ - if (GPU_type_matches(GPU_DEVICE_INTEL, GPU_OS_ANY, GPU_DRIVER_ANY)) { + if (GPU_type_matches_ex(GPU_DEVICE_INTEL, GPU_OS_ANY, GPU_DRIVER_ANY, GPU_BACKEND_OPENGL)) { /* Intel gpu seems to have problem rendering to only depth hiz_format */ DRW_texture_ensure_2d(&txl->maxzbuffer, UNPACK2(effects->hiz_size), GPU_R32F, DRW_TEX_MIPMAP); GPU_framebuffer_ensure_config(&fbl->maxzbuffer_fb, @@ -230,7 +230,7 @@ void EEVEE_effects_cache_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata) /* Intel gpu seems to have problem rendering to only depth format. * Use color texture instead. */ - if (GPU_type_matches(GPU_DEVICE_INTEL, GPU_OS_ANY, GPU_DRIVER_ANY)) { + if (GPU_type_matches_ex(GPU_DEVICE_INTEL, GPU_OS_ANY, GPU_DRIVER_ANY, GPU_BACKEND_OPENGL)) { downsample_write = DRW_STATE_WRITE_COLOR; } diff --git a/source/blender/draw/engines/eevee/eevee_occlusion.c b/source/blender/draw/engines/eevee/eevee_occlusion.c index e148ac53cd4..d896c4e9331 100644 --- a/source/blender/draw/engines/eevee/eevee_occlusion.c +++ b/source/blender/draw/engines/eevee/eevee_occlusion.c @@ -200,7 +200,8 @@ void EEVEE_occlusion_compute(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata) } if (GPU_mip_render_workaround() || - GPU_type_matches(GPU_DEVICE_INTEL_UHD, GPU_OS_WIN, GPU_DRIVER_ANY)) { + GPU_type_matches_ex( + GPU_DEVICE_INTEL_UHD, GPU_OS_WIN, GPU_DRIVER_ANY, GPU_BACKEND_OPENGL)) { /* Fix dot corruption on intel HD5XX/HD6XX series. */ GPU_flush(); } -- cgit v1.2.3