• Advertisement
Sign in to follow this  

Vertex buffer resource locking

This topic is 678 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

Hi, a question on getting the resource lock on a vertex buffer. Looking at this:

 

https://msdn.microsoft.com/en-us/library/windows/desktop/bb172568(v=vs.85).aspx

 

if you pass the D3DLOCK_DONOTWAIT flag to the lock function, then it can sometimes return D3DERR_WASSTILLDRAWING. In this case, should I still call the Unlock function? Reason I'm asking is because I know in many multithreading frameworks unlocking a mutex when its already unlocked can result in undefined behavior.

 

The documentation on the lock function doesn't seem mention anything:

 

https://msdn.microsoft.com/en-us/library/windows/desktop/bb205917(v=vs.85).aspx

 

I experimented a little bit with D3DLOCK_DONOTWAIT in my application but I never got it to return D3DERR_WASSTILLDRAWING (probably because I am doing all the d3d accesses in a single thread), so I don't plan on using it. But I still occasionally get problems in my app when I do things like hit ctrl+alt+delete, and the screen changes and so my device is lost and I have to re-initialize everything, and usually the re-initializing goes through fine but sometimes it appears to just deadlock, and just wondering if maybe something like this could be causing it.

 

Thanks!

Edited by garvey

Share this post


Link to post
Share on other sites
Advertisement

The documentation says it will return that error code if it couldn't obtain the lock immediately, ergo you don't have the lock and as such shouldn't have to unlock it.

Whether trying to unlock it when you don't have the lock is an invalid operation or not I do not know however. The safest bet is of course to not try to unlock it in this situation.

Share this post


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

  • Advertisement