Skip to content

Better blits

Alyssa Rosenzweig requested to merge alyssa/mesa:asahi/better-blits into main

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

Merge request reports