Better blits
Lots of stuff to blit better:
- blit with compute shaders, since it's much lower overhead than 3D and lets us chain together arbitrarily many blits into a single batch to reduce kernel+firmware overhead to O(1)
- eliminate piles of flushing / stalling when blitting
- use blitter for some copies
- fix snorm copying bugs
There are some BIG wins here:
- mipmap generation is massively faster now. glmark2 -bterrain doubles fps. yes, really.
- texture upload is a lot faster. Google Maps no longer stutters
😄 - readpixels are both a lot faster. CTS without EXT_copy_image is about 20% faster.
- copy_image is faster. originally copy image tests would take close to 5 minutes, now they're under 2 minutes. so putting it together, adding copyimage ends up adding about about 50 seconds of CTS time, instead of 4+ minutes. so, copy image is enabled now that it can be tested well.
This probably needs to be tested on M2 and on Pro/Max/Ultra, especially the random barrier bits problems. also want to make sure the compute blitter works on all the hardware (if not we can fallback, meh).
the magic run-gles script (tune jobs
for bigger chips)
MESA_SHADER_CACHE_DIR=/dev/shm EGL_PLATFORM=surfaceless deqp-runner run --deqp ~/GLCTS/glcts --output output --jobs 8 --caselist ~/bin/master.txt --skips ~/mesa/.gitlab-ci/all-skips.txt -- --deqp-surface-type=pbuffer --deqp-gl-config-name=rgba8888d24s8ms0 --deqp-surface-width=256 --deqp-surface-height=256 --deqp-log-images=disable --deqp-log-shader-sources=disable
case list: https://rosenzweig.io/master.txt
brrr
Edited by Alyssa Rosenzweig