[Mesa-dev] (no subject)
kenneth at whitecape.org
Wed Feb 6 23:26:33 PST 2013
This mini-series fixes some bugs I discovered with INTEL_DEBUG=shader_time.
Patch 1 is critical: without it, enabling shader time caused GPU hangs on
Haswell because we were sending the wrong message to the wrong shared
Patches 2 and 3 are less clear cut. From my reading of the BSpec/PRM's
Data Port / Messages / Atomic Operations sections, it's illegal to use
SURFTYPE_BUFFER and R32G32B32A32_FLOAT. It looks like untyped atomic
operations require the surface format to be RAW.
Oddly, shader time works fine on both Ivybridge and Haswell without
these two patches. However, running them in the simulator causes
assertion failures, which doesn't instill confidence.
It also looks like atomic operations only use the first component, so
using a four component buffer was wasting a lot of space. As part of
converting it to RAW, I also convert it to a single component buffer.
I believe we also computed the size incorrectly.
I'd really appreciate careful review and a quick sanity test. It appears
to produce similar numbers before and after my patches, suggesting they
work, but double checking would be great.
The cut and paste of create constant surface is kind of rubbish, too.
The alternative of adding format and stride to create_constant_surface
might be preferable...not sure.
More information about the mesa-dev