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
Edited by José María Casanova Crespo

Merge request reports