radv on SI and CIK GPU - update

I recently acquired an r7 360 (BONAIRE) and spent some time getting radv stable and passing the same set of conformance tests that VI and Polaris pass.

The main missing thing was 10-bit integer format clamping for a bug in the SI/CIK fragment shader output hardware, where it truncates instead of clamps. The other missing piece was code for handling f16->f32 conversions according to the vulkan spec that I'd previously fixed for VI.

I also looked at a trace from amdgpu-pro and noticed it was using a ds_swizzle for the derivative calculations which avoided accessing LDS memory. I wrote support to use this path for radv/radeonsi since LLVM supported the intrinsic for a while now.

With these fixed CIK is pretty much in the same place as VI/Polaris.

I then plugged in my SI (Tahiti), and got lots of GPU hangs and crashes. I fixed a number of SI specific bugs (tiling and MSAA handling, stencil tiling). However even with those fixed I was getting random hangs, and a bunch of people on a bugzilla had noticed the same thing. I eventually discovered adding a shader pipeline and cache flush at the end of every command buffer (this took a few days to narrow down exactly). We aren't 100% sure why this is required on SI only, it may be a kernel bug, or a command processor bug, but it does mean radv on SI now can run games without hanging.

There are still a few CTS tests outstanding on SI only, and I'll probably get to them eventually, however I also got an RX Vega and once I get a newer BIOS for it from AMD I shall be spending some time fixing the radv support for it.

Comments

  1. Why your Vega requires a new BIOS? Just because it's a preproduction card or are there bugs or performance problems on the stock firmware?

    It would be nice to know for when I buy my own, so I can update the BIOS before actually using it (I suspect the Windows driver will update automatically, but I don't use Windows :)

    ReplyDelete
    Replies
    1. Just got a prerelease card that needs the production bios on it.

      Delete
  2. Thank you for your work on RADV and SI. As a user with a Radeon HD 7850 who refuses to buy new hardware, thank you.

    ReplyDelete

Post a Comment

Popular posts from this blog

On Rust, Linux, developers, maintainers

radv: vulkan video encode status

radv: vulkan av1 video decode status