Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dirty bit handling can cause binding of stale descriptors #78

Open
jenatali opened this issue Nov 17, 2022 · 0 comments
Open

Dirty bit handling can cause binding of stale descriptors #78

jenatali opened this issue Nov 17, 2022 · 0 comments
Labels
bug Something isn't working

Comments

@jenatali
Copy link
Member

Reported by ThomasY on Discord.

This app bound a constant buffer to the PS stage, bound a pixel shader that used that constant buffer, and drew. This updated the descriptor table for constant buffers.

It then deleted that constant buffer, flushed the command list, changed the constant buffer bound to the PS, and bound a pixel shader that does not use a constant buffer, and drew.

This combination of events caused us to skip updating the PS CB descriptor table, because the currently-bound pixel shader couldn't use the new one, but then still call SetGraphicsRootDescriptorTable on the command list for the previous PS descriptor table, which now contains a descriptor pointing to a deleted resource.

I'm not sure offhand what the fix here would be. Probably to skip this binding until a PS is bound that can actually reference one of these CBs.

@jenatali jenatali added the bug Something isn't working label Nov 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant