Advertisement Jump to content
Sign in to follow this  

[D3D12] ExecuteIndirect on compute pipeline

This topic is 992 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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...

Share this post

Link to post
Share on other sites

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.

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using, you agree to our community Guidelines, Terms of Use, and Privacy Policy. is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!