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. Btrfs On 4 x Intel SSDs In RAID 0/1/5/6/10
  2. AMD Radeon R9 290 On Ubuntu 14.10: RadeonSI Gallium3D vs. Catalyst
  3. MSI X99S SLI PLUS On Linux
  4. NVIDIA GeForce GTX 970 Offers Great Linux Performance
Latest Linux Articles
  1. Windows 8.1 vs. Ubuntu 14.10 With Intel HD Graphics
  2. 6-Way Ubuntu 14.10 Radeon Gallium3D vs. Catalyst Driver Comparison
  3. NVIDIA vs. Nouveau Drivers On Ubuntu 14.10
  4. Ubuntu 14.10 Offers AMD Radeon Driver Performance Improvements
Latest Linux News
  1. Has The Sky Fallen? Qualcomm Contributes To Freedreno's DRM/KMS Driver
  2. Manjaro Works To Make Calamares A Distribution-Independent Installer
  3. DisplayLink USB 3.0 Support Sounds Like A Mess
  4. PulseAudio Gains A Native Bluetooth Headset Backend
  5. X.Org Foundation Decides On Its Women Outreach Project
  6. GTK+ 3.16's New GtkGLArea Widget Gets Improved
  7. X.Org Server 1.17 ABI Bumped
  8. Fedora 21 Beta To Be Released Next Week
  9. Go 1.4 Beta Release Brings Big Runtime Changes
  10. SIMD For JavaScript Continues Coming Along
Latest Forum Discussions
  1. Closed source to opensource
  2. How to get rid of Linux
  3. Is foolish currently develop in machine code, hexadecimal and assembly?
  4. Reducing The CPU Usage In Mesa To Improve Performance
  5. Help diagnosing problems with a Readon HD 4670 on Mesa 10.3.2-1
  6. Advertisements On Phoronix
  7. nv and xorg.conf under Debian PPC
  8. Looking for a Open-Source AMD experienced Linux mentor