[D3D12] ExecuteIndirect on compute pipeline

Started by
5 comments, last by Dingleberry 7 years, 11 months ago

I get errors if I try to transition a D3D12_RESOURCE_STATE_UNORDERED_ACCESS to D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT in a compute command list. Specifically,

D3D12_RESOURCE_STATES has invalid flags for compute command list

Well, okay, switching to a direct command list makes the error go away... but uh, does this mean compute command lists can't reliably write to a buffer and then call ExecuteIndirect on it?

The API doesn't care if I don't transition from uav to indirect, but the ExecuteIndirect call predictably gets bad data, as I assume the writes to the buffer don't get finished off.

Interestingly I can call UAV barriers just fine on a compute command list and they work great between different dispatches, however, it doesn't work in the case of ExecuteIndirect.

Is the only option to synchronize compute queues with direct queues when trying to use ExecuteIndirect? That kind of sucks...

Advertisement

Any help with this? To repro the issue all you need to do is write to a buffer and transition it from UAV to Indirect in a compute queue. I'm not trying to do something wacky like present from a compute queue.

I'll see if I can find out.

Adam Miles - Principal Software Development Engineer - Microsoft Xbox Advanced Technology Group

I'll see if I can find out.

:wub: :wub: :wub: :wub: :wub: :wub:

In short: great feedback, this is a limitation we have right now and we're going to look at improving the situation in this area. Hopefully we'll have some more information in a few weeks after we've investigated the feasibility of getting this scenario to work across all hardware.

Adam Miles - Principal Software Development Engineer - Microsoft Xbox Advanced Technology Group

Hey, wanted to close the loop here. We've done the rounds to ensure this should work on all hardware and everything looks green, so we're going to enable this moving forward. Keep an eye out for future versions of the D3D12 API headers for a feature support bit letting you know it's available.

Wowowowow thanks!!! So cool!

This topic is closed to new replies.

Advertisement