Commit: 40d0374411e28f8d1409303743e71b8b6b8aab2c
Author: Clément Foucault
Date:   Sun Dec 2 01:57:22 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB40d0374411e28f8d1409303743e71b8b6b8aab2c

Fix T57455: Laggy, freezing UI with Linux and Intel UHD 620

Seems like a driver bug but doing glFlush() before these calls fixes it.

===================================================================

M       source/blender/editors/screen/screen_draw.c
M       source/blender/gpu/GPU_extensions.h
M       source/blender/gpu/intern/gpu_extensions.c

===================================================================

diff --git a/source/blender/editors/screen/screen_draw.c 
b/source/blender/editors/screen/screen_draw.c
index 51301b0f022..0068fe4dcf5 100644
--- a/source/blender/editors/screen/screen_draw.c
+++ b/source/blender/editors/screen/screen_draw.c
@@ -387,6 +387,12 @@ void ED_screen_draw_edges(wmWindow *win)
                BLI_rcti_do_minmax_v(&scissor_rect, (int[2]){sa->v3->vec.x, 
sa->v3->vec.y});
        }
 
+       if (GPU_type_matches(GPU_DEVICE_INTEL_UHD, GPU_OS_UNIX, GPU_OS_ANY)) {
+               /* For some reason, on linux + Intel UHD Graphics 620 the driver
+                * hangs if we don't flush before this. (See T57455) */
+               glFlush();
+       }
+
        GPU_scissor(scissor_rect.xmin,
                    scissor_rect.ymin,
                    BLI_rcti_size_x(&scissor_rect) + 1,
diff --git a/source/blender/gpu/GPU_extensions.h 
b/source/blender/gpu/GPU_extensions.h
index 07d8a5f8c8b..12a640747da 100644
--- a/source/blender/gpu/GPU_extensions.h
+++ b/source/blender/gpu/GPU_extensions.h
@@ -66,8 +66,9 @@ typedef enum GPUDeviceType {
        GPU_DEVICE_NVIDIA =     (1 << 0),
        GPU_DEVICE_ATI =        (1 << 1),
        GPU_DEVICE_INTEL =      (1 << 2),
-       GPU_DEVICE_SOFTWARE =   (1 << 3),
-       GPU_DEVICE_UNKNOWN =    (1 << 4),
+       GPU_DEVICE_INTEL_UHD =  (1 << 3),
+       GPU_DEVICE_SOFTWARE =   (1 << 4),
+       GPU_DEVICE_UNKNOWN =    (1 << 5),
        GPU_DEVICE_ANY =        (0xff)
 } GPUDeviceType;
 
diff --git a/source/blender/gpu/intern/gpu_extensions.c 
b/source/blender/gpu/intern/gpu_extensions.c
index e6e82b3cc86..99f770b4d03 100644
--- a/source/blender/gpu/intern/gpu_extensions.c
+++ b/source/blender/gpu/intern/gpu_extensions.c
@@ -282,6 +282,10 @@ void gpu_extensions_init(void)
        {
                GG.device = GPU_DEVICE_INTEL;
                GG.driver = GPU_DRIVER_OFFICIAL;
+
+               if (strstr(renderer, "UHD Graphics")) {
+                       GG.device |= GPU_DEVICE_INTEL_UHD;
+               }
        }
        else if ((strstr(renderer, "Mesa DRI R")) ||
                 (strstr(renderer, "Radeon") && strstr(vendor, "X.Org")) ||

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to