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 R600g/RadeonSI Performance On Linux 3.16 With Mesa 10.3-devel
  2. Intel Pentium G3258 On Linux
  3. SilverStone Precision PS10
  4. ASRock Z97 Extreme6
Latest Linux Articles
  1. KVM Benchmarks On Ubuntu 14.10
  2. X.Org Server 1.16 Officially Released With Terrific Features
  3. Ubuntu With Linux 3.16 Smashes OS X 10.9.4 On The MacBook Air
  4. Preview: Benchmarking CentOS 7.0 & Scientific Linux 7.0
Latest Linux News
  1. Unigine Develops City Traffic System, A Driving Simulator
  2. Intel 3.0 X.Org Driver Still Baking, New Development Release
  3. Eric Anholt Makes Progress With Broadcom VC4 Graphics Driver
  4. Intel Is Getting Very Close To OpenGL 4.0/4.1/4.2 Mesa Support
  5. Valve Is Still Hiring For SteamOS, Linux Work
  6. Users Warned About Possible Regressions With DRI3
  7. GNOME Shell Gets Wayland HiDPI Fonts, Mutter Gets Touch Gestures
  8. BPTC Texture Compression Comes To Nouveau After Intel's Work
  9. Development Continues For Supporting EXT4 On NVDIMMs
  10. Libinput 0.5 Improves Pointer Acceleration, Adds A Configuration API
Latest Forum Discussions
  1. Radeon related kernel bug??
  2. AMD Publishes Open-Source Linux HSA Kernel Driver
  3. Next-Gen OpenGL To Be Announced Next Month
  4. Open-Source Radeon Performance Boosted By Linux 3.16
  5. Remote gui not accessible in Phoronix Test Suite 5.2
  6. AMD "Hawaii" Open-Source GPU Acceleration Still Not Working Right
  7. Updated and Optimized Ubuntu Free Graphics Drivers
  8. In Road To Qt, Audacious Switches From GTK3 Back To GTK2