Hi all,I'm investigating b/298460913, which concerns a ChromeOS Flex device with an integrated Intel GPU and a discrete Nvidia GPU. With the switch to the passthrough command decoder the device started defaulting to Card0 (which is almost always the Nvidia card) rather than preferring the Intel card. This GPU is not well supported and has caused graphics and video playback glitches, with colors flashing on part or all of the screen.1) Where is the divergence for selecting the GPU used for the passthrough command decoder vs. the validating decoder? Would it be reasonable to change that logic to match what was previously used?2) If that logic can't be changed I will need to force Chrome to select the integrated GPU on this device. I know there's the `force_low_power_gpu` workaround, though that doesn't work on ChromeOS for now. Are there any other places where it would be reasonable to force the GPU usage?Thanks!Allen BallwayHe/Him
--
You received this message because you are subscribed to the Google Groups "angleproject" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion on the web visit https://groups.google.com/d/msgid/angleproject/CAKK1iFC_oop%2BmqaBKf-M4CsBcgTTJkHXW4%3DsEjmM-spm7a7W9Q%40mail.gmail.com.
I think ANGLE_PREFERRED_DEVICE is only used by the ANGLE Metalbackend right now.
A permanent solution I think is to add your OS/GPU/Driver to https://source.chromium.org/chromium/chromium/src/+/main:gpu/config/gpu_driver_bug_list.json.
I tried using force_low_power_gpu but it doesn't work for ChromeOS, are there other workaround options? Or would hooking up that workaround on ChromeOS be the solution here?
You can try with --use-angle=vulkan Chrome arg.
This particular device is old enough that the GPU doesn't have Vulkan support, but because of how the reven board covers all ChromeOS Flex devices we wouldn't be able to switch to Vulkan until all of our devices support it, which won't be for several years.
We need to look at how Chrome with the validating command decoder initialized GL/EGL to select the Intel device and make sure the same thing is done with ANGLE. In the end, for this device ANGLE is just EGL on top of EGL so we need to forward the same parameters.
From what I can tell, in Chrome we have the b_EGL_MESA_platform_surfaceless extension so we call eglGetPlatformDisplay. In ANGLE the platformType in FunctionsEGL::initialize isn't surfaceless so we just call eglGetDisplay rather than eglGetPlatformDisplay with EGL_PLATFORM_SURFACELESS_MESA. I'm having a hard time finding where the platformType is set. To change the display selection to be surfaceless would I need to change how ANGLE is started in Chrome or would I need to make these changes inside ANGLE?