Intel Developer BLORPs Older Hardware, May Help With Some Bugs
Intel's Mesa BLORP code has been ported to older "Gen 4" and "Gen 5" integrated graphics hardware, allowing more common code to be used going back to the i965 IGPs.
The BLORP blit framework has been part of Mesa since the Sandy Bridge days and with time has ended up being used by every generation of Intel graphics hardware since for surface state management. But the pre-SandyBridge hardware had never been ported to BLORP until this new port by Intel developer Jason Ekstrand.
With this patch series of 43 patches [1551 insertions, 1033 deletions], BLORP is brought to Intel Gen 4/5 hardware. Ekstrand does a nice job explaining it at the beginning of the series:
While older Intel graphics hardware doesn't get much Mesa graphics driver love, it's nice to see this BLORP porting effort and hopefully will help some users stuck on this older graphics hardware.
The BLORP blit framework has been part of Mesa since the Sandy Bridge days and with time has ended up being used by every generation of Intel graphics hardware since for surface state management. But the pre-SandyBridge hardware had never been ported to BLORP until this new port by Intel developer Jason Ekstrand.
With this patch series of 43 patches [1551 insertions, 1033 deletions], BLORP is brought to Intel Gen 4/5 hardware. Ekstrand does a nice job explaining it at the beginning of the series:
When Sandy Bridge came out, surface state management suddenly became significantly more complicated because of HiZ, MSAA, and separate stencil. In order to deal with all of these complications, Paul Berry write BLORP which is a blit framework that's capable of handling all of the exotic cases we have to deal with in a modern Intel driver. As time went on, blorp was ported to Ivy Bridge and then Haswell. At Broadwell, we tried to get away from blorp but eventually decided that having one more copy of state setup wasn't so bad compared to dealing with meta so it was brought forward to gen8-9. However, it has never been back-ported to gen4-5... Until today!
Why should we do this? For one thing, it's actually less code. The patch which actually adds gen4 support to blorp is around 300 LOC. If you add on the patch which adds SF program support, you get another 50. On the other hand, the meta PBO upload path is 450 lines of code all by itself and that doesn't include the DD table entry or the code we have to carry in i965 to support it. Secondly, it lets us unify a bunch of gen6 and gen4 stuff. You can already see in this series that I delete an entire blitframebuffers implementation because we were carrying 2 just so gen4-5 could have its own.
This series doesn't actually get everything converted over but it does convert enough that I'm reasonably confident that it all works. In the process, this series fixes 12 tests: 2 on ILK, 2 on g45, and 8 on i965.
While older Intel graphics hardware doesn't get much Mesa graphics driver love, it's nice to see this BLORP porting effort and hopefully will help some users stuck on this older graphics hardware.
5 Comments