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. AMD Launches New FX CPUs, Cuts Prices On Existing Processors
  2. Preview: AMD's FX-9590 Eight-Core At Up To 5.0GHz On Linux
  3. Intel Launches The Core i7 5960X, Mighty Powerful Haswell-E CPUs
  4. AMD Radeon R9 290: Gallium3D vs. Catalyst Drivers
Latest Linux Articles
  1. Ondemand vs. Performance CPU Governing For AMD FX CPUs On Linux 3.17
  2. How Intel Graphics On Linux Compare To Open-Source AMD/NVIDIA Drivers
  3. The Fastest NVIDIA GPUs For Open-Source Nouveau With Steam Linux Gaming
  4. Testing For The Latest Linux Kernel Power Regression
Latest Linux News
  1. webOS Lives On As LuneOS With New Release
  2. Marek Lands Radeon Gallium3D HyperZ Improvements
  3. Mozilla Firefox 32 Surfaces With HTML5, Developer Changes
  4. Nouveau X.Org Driver Released With DRI3+Present, Maxwell, GLAMOR
  5. Microsoft & AMD Release C++ AMP Compiler With Linux Support
  6. AMD, Wine & Valve Dominated August For Linux Users
  7. Linux 3.17-rc3 Kernel Released Back On Schedule
  8. Lennart Poettering Talks Up His New Linux Vision That Involves Btrfs
  9. Mesa 10.3 RC2 Arrives Via Its New Release Manager
  10. Ubuntu 14.10's Lack Of X.Org Server 1.16 Gets Blamed On AMD
Latest Forum Discussions
  1. Lennart Poettering Talks Up His New Linux Vision That Involves Btrfs
  2. AMD graphics doesn't work with AMD Catalyst drivers
  3. Best Radeon for a Power Mac G5?
  4. The dangers of Linux kernel development
  5. Updated and Optimized Ubuntu Free Graphics Drivers
  6. AMD Releases UVD Video Decode Support For R600 GPUs
  7. SSD seems slow
  8. Is laptop with Intel CPU and AMD dGPU worth buying considering especially AMD Enduro?