Fix T57455: Laggy, freezing UI with Linux and Intel UHD 620
Seems like a driver bug but doing glFlush() before these calls fixes it.
This commit is contained in:
@@ -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});
|
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,
|
GPU_scissor(scissor_rect.xmin,
|
||||||
scissor_rect.ymin,
|
scissor_rect.ymin,
|
||||||
BLI_rcti_size_x(&scissor_rect) + 1,
|
BLI_rcti_size_x(&scissor_rect) + 1,
|
||||||
|
|||||||
@@ -66,8 +66,9 @@ typedef enum GPUDeviceType {
|
|||||||
GPU_DEVICE_NVIDIA = (1 << 0),
|
GPU_DEVICE_NVIDIA = (1 << 0),
|
||||||
GPU_DEVICE_ATI = (1 << 1),
|
GPU_DEVICE_ATI = (1 << 1),
|
||||||
GPU_DEVICE_INTEL = (1 << 2),
|
GPU_DEVICE_INTEL = (1 << 2),
|
||||||
GPU_DEVICE_SOFTWARE = (1 << 3),
|
GPU_DEVICE_INTEL_UHD = (1 << 3),
|
||||||
GPU_DEVICE_UNKNOWN = (1 << 4),
|
GPU_DEVICE_SOFTWARE = (1 << 4),
|
||||||
|
GPU_DEVICE_UNKNOWN = (1 << 5),
|
||||||
GPU_DEVICE_ANY = (0xff)
|
GPU_DEVICE_ANY = (0xff)
|
||||||
} GPUDeviceType;
|
} GPUDeviceType;
|
||||||
|
|
||||||
|
|||||||
@@ -282,6 +282,10 @@ void gpu_extensions_init(void)
|
|||||||
{
|
{
|
||||||
GG.device = GPU_DEVICE_INTEL;
|
GG.device = GPU_DEVICE_INTEL;
|
||||||
GG.driver = GPU_DRIVER_OFFICIAL;
|
GG.driver = GPU_DRIVER_OFFICIAL;
|
||||||
|
|
||||||
|
if (strstr(renderer, "UHD Graphics")) {
|
||||||
|
GG.device |= GPU_DEVICE_INTEL_UHD;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if ((strstr(renderer, "Mesa DRI R")) ||
|
else if ((strstr(renderer, "Mesa DRI R")) ||
|
||||||
(strstr(renderer, "Radeon") && strstr(vendor, "X.Org")) ||
|
(strstr(renderer, "Radeon") && strstr(vendor, "X.Org")) ||
|
||||||
|
|||||||
Reference in New Issue
Block a user