Enable OpenGL ES 3.1 on V3D
This series enables OpenGL ES 3.1 on V3D driver, the driver used by the GPU of Raspberry Pi 4
This MR includes the support of Compute Shaders developed by Eric Anholt (@anholt) and the fix for memory write violations that needs the support of kernel space DRM_V3D_PARAM_SUPPORTS_CACHE_FLUSH by (@itoral)
For the driver to pass CTS GLES 3.1 conformance the following MR need to land and 2 failing tests need to be fixed.
-
!332 "glsl: fix a binding points assignment for ssbo/ubo arrays" to fix GLES31.functional.ssbo.layout.random.all_per_block_buffers.18 (Affects all mesa drivers) -
Land !1871 (closed) "WIP: nir: add support to load_shared on Eric's prepass scheduling" to fix KHR-GLES31.core.compute_shader.shared-max -
Fix KHR-GLES31.core.shader_image_load_store.advanced-sync-vertexArray -
Fix dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.image_atomic_multiple_interleaved_write_read
Merge request reports
Activity
changed milestone to %19.3 Branchpoint Feature Tracker
added v3d label
mentioned in merge request !1663 (closed)
added 93 commits
-
fa5bbce5...fd21ee8b - 87 commits from branch
mesa:master
- d2203d74 - v3d: trivial update to obsolete comment
- 46182fc1 - v3d: add new flag dirty TMU cache at v3d_compiler
- 2d8b51ea - broadcom: document known hardware issues for L2T flush command
- 66e2d3b6 - v3d: Add Compute Shader support
- db874392 - v3d: request the kernel to flush caches when TMU is dirty
- f8da0f61 - v3d: Explicitly expose OpenGL ES Shading Language 3.1
Toggle commit list-
fa5bbce5...fd21ee8b - 87 commits from branch
enabled an automatic merge when the pipeline for f8da0f61 succeeds
mentioned in merge request !301 (merged)
mmm... it didn't expose opengl 3.1 ES on my master build. what could happened @chema ??
pi@raspberrypi:~ $ LD_LIBRARY_PATH=/home/pi/mesa/lib/arm-linux-gnueabihf LIBGL_DRIVERS_PATH=/home/pi/mesa/lib/arm-linux-gnueabihf/dri/ GBM_DRIVERS_PATH=/home/pi/mesa/lib glxinfo -B name of display: :0.0 display: :0 screen: 0 direct rendering: Yes Extended renderer info (GLX_MESA_query_renderer): Vendor: Broadcom (0x14e4) Device: V3D 4.2 (0xffffffff) Version: 19.3.0 Accelerated: yes Video memory: 3917MB Unified memory: yes Preferred profile: compat (0x2) Max core profile version: 0.0 Max compat profile version: 2.1 Max GLES1 profile version: 1.1 Max GLES[23] profile version: 3.0 OpenGL vendor string: Broadcom OpenGL renderer string: V3D 4.2 OpenGL version string: 2.1 Mesa 19.3.0-devel (git-1cea76274e) OpenGL shading language version string: 1.20 OpenGL ES profile version string: OpenGL ES 3.0 Mesa 19.3.0-devel (git-1cea76274e) OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
Enabling GLES 3.1 needs an updated linux kernel, if you don't have it the shader storage and shader images are disabled if the kernel doesn't implement cache flushing.
Kernel patches have already landed in drm-next. But current linux-kernel from raspbian (4.19.75-v7l+) already includes this patch downstream. That patch in the MR is the responsible of limiting 3.1 if your kernel shouldn't enable it !2368 (db874392) "
Indeed, now it does! I left an issue about ppsspp than gives me a segfault on master. Thanks @chema
mentioned in commit f8da0f61
- Resolved by José María Casanova Crespo
@chema may be you can fill https://gitlab.freedesktop.org/mesa/mesa/blob/master/docs/features.txt too ?
marked the checklist item Land !1871 (closed) "WIP: nir: add support to load_shared on Eric's prepass scheduling" to fix KHR-GLES31.core.compute_shader.shared-max as completed