Two more weeks of conformance debug, and I’m now down to 1 group of failures in GLES2 and 1 group in EGL, both of which I believe are bugs in the tests (regressions in recent CTS releases, which is why Intel hadn’t caught them already).
Fixes have included:
- Various bugs in fence handling (one of which caused throttling of frames to fail, leading to unlimited userspace BO cache usage and 2 days of debug flailing to track down).
- Allow EGLImages to be created of textures/renderbuffers that we can’t do EGL_MESA_image_dma_buf_export on.
- Fixed EGLImage import for cubemap images.
- Landed the UIF format modifier support.
- Fixed uniform lowering to not cause absurd register spilling.
- Implemented more of the GFXH-1461 workaround to fix missing Z/S clears
- Implemented a hack in gallium’s blitter to make the awful dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_* tests pass.
- Fixed incorrect reallocation of PERSISTENT buffers (also a vc4 bug!)
- Fixed 1D_ARRAY texture upload/download.
- Fixed drawing to MRT without independent blending
- Fixed MSAA mapping bugs in gallium’s transfer helper.
I also spent a day knocking out some quick performance improvements:
- Rotate through the registers to allow the backend scheduler to pair up QPU instructions more frequently.
- Allow reading from the phys regfile in the following instruction.
- Use the SFU instructions instead of magic writes on V3D 4.x.
- Skip texture parameter P2 if it’s just the default value.
- Start using small immediates (especially useful for VS input/outputs on 4.x).
- Fix extra scene flush when doing the GFXH-1461 workaround.
After this I should probably work on the GMP support again, then get back to fixing GLES3.