-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Invalid check of unity_support_test for Genio Devices (ARM Mali GPU) #1630
Comments
Thank you for reporting us your feedback! The internal ticket has been created: https://warthogs.atlassian.net/browse/CHECKBOX-1678.
|
For experiments I used I tried running the glmark2-es benchmark on one of the genio boards but it still shows llvmpipe. Are there any steps that I need to do before running the benchmark? Edit: The snap version of glmark2-es from graphics-test-tools shows llvm, but the debian version shows MALI Edit2: The discrepancy might have come from what the snap OpenGL connector exposes.
Looks like the snap is picking up the mesa implementation from the base core22. Since it's using mesa it's definitely going to be llvmpipe -> software rendering Maybe we need this: https://canonical-mir.readthedocs-hosted.com/stable/how-to/how-to-enable-graphics-core22-on-a-device/ or do the steps in the readme file: https://github.com/canonical/checkbox-mir |
In case anyone is interested in the history of GLX and EGL https://utcc.utoronto.ca/~cks/space/blog/linux/EGLAndGLXAndOpenGL |
So it looks like anything that uses GLX (the glue layer between OpenGL and X.org) will use the llvmpipe renderer. But if we run
On my own computer which is running wayland with an intel iGPU, it picks up the following:
So the ARM Mali platform has no native X support, which is expected since it only supports EGL (API binding is OpenGL_ES) and Vulkan. unity_support_test explicitly creates an X window so if the window system is wayland, it will be run through Xwayland. This is typically not an issue on PCs since most GPUs implement the full OpenGL spec, so Good thing is that Wayland only uses EGL so we may be able to pick glx vs egl tests depending on if the window system is X or wayland. To check if Xwayland is running, do |
Warning This is for Wayland only I hacked together a bunch of EGL examples to show the correct OpenGL renderer string
We may be able to convert the C code into python with ctypes so we don't need to include binaries (plus it needs to be compiled for both ARM & x86, AND it needs to be compiled on the oldest Ubuntu version that uses wayland, which is 18.04 iirc, to avoid libc complaining about not having the correct version) Warning If you use the following method it must be run on the DUT, i.e. remotely executing this code with SSH will give you incorrect results or trash values. Dec 16 update: I found a much simpler way to do this without wayland headers so it works both on X11 and Wayland: https://gist.github.com/tomli380576/abfdc4caec2ab7f3de9474a54ed615a1 Note that this is basically asking EGL to find a default display and then do the OpenGL stuff so make sure to have a display connected |
Ok looks like we don't need to write C since we have
And we can pretty much copy how if (results->renderer != NULL && (
strncmp (results->renderer, "Software Rasterizer", 19) == 0
|| strncmp (results->renderer, "Mesa X11", 8) == 0
|| strstr (results->renderer, "llvmpipe")
|| strstr (results->renderer, "on softpipe")
)
) { /** it is software rendered */ } python: # renderer: str | None
if renderer is not None:
if renderer in ("Software Rasterizer", "Mesa X11"):
# is software rendered
if "llvmpipe" in renderer or "on softpipe" in renderer:
# also software rendered
else:
# panic |
On an arm platform, the command being used to check the renderer probably will have to be replaced as |
Speaking of this I think we can use the ES2 version everywhere since ES2 is a subset of OpenGL and the renderer string API exists in both specs. @zongminl Do you know if there are any exceptions to this? (where the ES2 renderer string says the desktop is hardware rendered but it's actually not) Thanks. |
I also gave it a try with glmark2-es2-wayland on my x86 laptop, it works well. I think yes, we can use glmark2-es2 in both specs. |
We might also want to move the 1_gl_support_* tests to this method too |
Bug Description
Problem
Recently, the cold/warm boot stress tests failed on Genio and ADVANTECH - RSB-3810 devices in SRU and enabledment phase.
The failed output like below and it's caused by checking
unity support test
Reason
There were two commits to enhance and fix the validation for cold/warm stress test
subprocess.PIPE
in reboot_check_test.py (Bugfix) #1546And there’s one validation is for Unity utils. This validation is also used by gl_support case. The check and output on my PC (201712-26032) is like below
$ cd /snap/checkbox22/current/usr/lib/nux $ DISPLAY=:0 ./unity_support_test -p OpenGL vendor string: Intel OpenGL renderer string: Mesa Intel(R) UHD Graphics 620 (KBL GT2) OpenGL version string: 4.6 (Compatibility Profile) Mesa 22.0.1 Not software rendered: yes Not blacklisted: yes GLX fbconfig: yes GLX texture from pixmap: yes GL npot or rect textures: yes GL vertex program: yes GL fragment program: yes GL vertex buffer object: yes GL framebuffer object: yes GL version is 1.4+: yes Unity 3D supported: yes
However, this check point is NOT valid some devices with ARM Mali GPU (e.g., Genio G1200, G700, G510 with Desktop image).
Although the outcome shows
llvmpipe
not ARM Mali, it's EXPECTED result. See detail in https://bugs.launchpad.net/baoshan/+bug/2025696/comments/5Cert-blocker Test Case
To Reproduce
$ sudo snap install checkbox22 --beta $ sudo snap install checkbox --channel="22.04/beta" --classic
checkbox.checkbox-cli control <IP to DUT>
com.canonical.certification::client-cert-desktop-22-04-stress
test planCold-boot Stress Test
and Warm-boot Stress Test`Expected Result
No
[ ERR ] unity support test returned 1
be raised during eachloop-test
iterationActual Result
Environment
OS: Jammy Desktop Image
Checkbox Type: Snap
Hardware Testing: ARM Mali GPU
Relevant log output
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: