1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Memory
  5. Motherboards
  6. Processors
  7. Software
  8. Storage
  9. Operating Systems


Facebook RSS Twitter Twitter Google Plus


Phoronix Test Suite

OpenBenchmarking.org

HyperZ: Errata & The Catalyst Command Stream

AMD

Published on 14 July 2012 03:05 PM EDT
Written by Michael Larabel in AMD
52 Comments

Following yesterday's article about Radeon Gallium3D HyperZ support defeating open-source developers, Jerome Glisse has clarified the situation after trying to make this code work properly for more than a half-year.

Jerome Glisse's blog post from this morning is entitled Hyperz, it was a long time ago. To condense several paragraphs into something more elegant: the open-source HyperZ problems are likely due to a R600+ GPU hardware bug. However, there's nothing cited as an errata within the public documentation and its unlikely any internal AMD Catalyst driver engineers would remember the details around the issue since the hardware in question is about five years old.

Due to hardware errata, the only sure way to tell how to control the hardware is by looking at the closed-source driver's command stream to see how the binary blob is programming the hardware. However, for the open-source Gallium3D driver to mirror the Catalyst driver's command stream as it pertains to HyperZ would mean re-writing much of the Gallium3D driver.
But no matter how much i followed the AMD documentation advice, i still run into issue. I went back to look at what fglrx was doing and of course i found several things that i believe was no were documented, such as never reset htile preloading if resetting same surface, or first depth clear can't be a fast clear because you need to initialize the htile surface. Maybe i just missread or missunderstand documentation i was provided and i apologize if so.

In the end, from a register value point of view in each use case my patch now pretty much exactly match the register value fglrx uses. Yet on some specific use case i am still hitting lockup. So i am left with little option here, either i am missing a single bit somewhere (despite my automatic command stream comparison i might still miss thing). Or the order in which you do thing matter much more that what we believe ie you need to program some register in some specific order to avoid issues. I believe this is the issue i am left with, but trying to match fglrx order means huge overhaul of how r600g build its command stream.

So the fact is, in the end the closed source driver is the reference implementation that got all the informations in it. So looking at closed source driver command stream is always the saffest way to be sure to have all the informations. That's at least my opinion.
Simply put, end-users and open-source Radeon driver developers are screwed right now if hoping to reliably use the performance-boosting HyperZ feature on modern Radeon graphics card. Though if you haven't upgraded from an old ATI Radeon graphics card, at least HyperZ works on the old GPUs.

About The Author
Michael Larabel is the principal author of Phoronix.com and founded the web-site in 2004 with a focus on enriching the Linux hardware experience and being the largest web-site devoted to Linux hardware reviews, particularly for products relevant to Linux gamers and enthusiasts but also commonly reviewing servers/workstations and embedded Linux devices. Michael has written more than 10,000 articles covering the state of Linux hardware support, Linux performance, graphics hardware drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated testing software. He can be followed via and or contacted via .
Latest Linux Hardware Reviews
  1. Intel Xeon E5-1680 v3 & E5-2687W v3 Compared To The Core i7 5960X On Linux
  2. Intel 120GB 530 Series SSD Linux Performance
  3. Btrfs/EXT4/XFS/F2FS RAID 0/1/5/6/10 Linux Benchmarks On Four SSDs
  4. AMD's Windows Catalyst Driver Remains Largely Faster Than Linux Drivers
Latest Linux Articles
  1. NVIDIA vs. Nouveau Drivers With Linux 3.18 + Mesa 10.4-devel
  2. Is The Open-Source NVIDIA Driver Fast Enough For Steam On Linux Gaming?
  3. Linux 3.18 File-System Performance Minimally Changed But Possible Regressions
  4. AMD Radeon Gallium3D Is Catching Up & Sometimes Beating Catalyst On Linux
Latest Linux News
  1. V2 Of KDBUS Published For Linux Kernel Review
  2. VirtualBox 4.3.20 Arrives, Still No Sign Of VirtualBox 4.4
  3. Scientific Linux 6.6 vs. Scientific Linux 7.0 Benchmarks
  4. Qualcomm Looks To Get Into The ARM Server Business
  5. HHVM 3.4 Adds New Features, Support
  6. More Radeon Driver Changes Queued For Linux 3.19
  7. Unigine 2.0 Alpha 2 Adds C# Support
  8. FFmpeg Is Returning To Ubuntu With 15.04 Release
  9. Linux Version Of Civilization: Beyond Earth Still Coming Along
  10. Yahoo To Become Default Search Provider For Firefox
Latest Forum Discussions
  1. Cant get working Kaveri APU - A10-7850k
  2. Roadmap to Catalyst 14.10 ?
  3. Debian Init System Coupling Vote Results
  4. The Slides Announcing The New "AMDGPU" Kernel Driver
  5. Updated and Optimized Ubuntu Free Graphics Drivers
  6. Debian Developer Resigns From The Systemd Maintainership Team
  7. Ubuntu Developers Still Thinking What To Do About Adobe Flash Support
  8. How to get rid of Linux