1 Reply Latest reply on Oct 8, 2015 3:46 AM by pinform

    Compute shader issue in current D3D driver

    ronan.bel

      Hi, there is a bug in the current driver (present from 15.5 beta driver)

       

      (short)

       

      If you code a sequence of 3 ComputeShader using one resource as UAV then UAV then SRV

      CS1 ( rsc @ slotN as UAV )    // rsc used as WriteOnly

      CS2 ( rsc @ slotN as UAV )    // rsc used as Read then Write

      CS3 ( rsc @ slotK as SRV )    // rsc used as ReadOnly (SRV)

      it seems the driver doesn't insert a proper sync between CS1 and CS2 (and a proper sync between CS2 and CS3)

      I can't send you a repro (confidental big engine with huge dataset)

      I can add more detail by email (ronan.bel@ubisoft.com)

       

      (long)

       

      My dev PC has an NVidia GPU.

      I was working on some GPU code running fine with this kind of GPU.

      The same code was giving random results on PC with AMD GPU, even causing the driver to reset (win7,win8.1) or simply to hang (win10)

      I tried to find a bug in my code (believing it was due to the 32/64 threads difference between warp & wavefront)

      The code was running fine on a PC with 14.12 AMD driver. I checked with later drivers, the bug appeared with 15.5 beta driver.

      Today (after 2 weeks banging me head against the walls), I reproduced this issue on a PS4, and figured out what was wrong using Razor.

      We were inserting sync only for rsc state transitions, in this case, since the rsc was UAV (RW) then UAV (RW), we missed a sync.

      And I believe it's also the case in current driver (from 15.5).

       

      (hazard and state transition are listed page 77 of Mantle documentation)

       

      Changing my code using 2 buffers (same size, same flags) solves the issue (it's not a solution, only a hack)

      CS1 ( rsc1 @ slotN as UAV )

      CS2 ( rsc2 @ slotN as UAV + rsc1 @ slotT as SRV )

      CS2 ( rsc2 @ slotK as SRV )

       

       

      (by the way, I wasn't able to post in dev forum, in the past I was able to post in CodeXL forum)

        • Re: Compute shader issue in current D3D driver
          pinform

          Hi Ronan,

           

          Welcome and thanks for posting.

          The move to the Jive platform for the community necessitates all new threads to be moderated once. I am white-listing you now -- post that, you should be able to directly post in any developer forum without moderation. I am also moving this post to the relevant dev forum -- where the experts should respond.

           

          --Prasad