You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I work on the Intel Linux Graphics (Mesa) team and we're testing Dota 2 and CS2 on our next platform codenamed Lunar Lake (LNL) and we're seeing both of them crashing right when the game starts. The relevant error messages seem to be:
Buffer allocation failed for DEVICE_LOCAL memory indicating video memory is full, trying again in system memory as a fallback.
ERROR! VK call failed! result = Unknown VkResult value ( vmaCreateBufferWithAlignment )
vmaCreateBufferWithAlignment failed fallback system memory allocation. Fatal error: out of video and system memory.
What's different about LNL, and the likely reason behind the crash, is that its memory types are different from previous platforms:
We have a memory type that can only be used by VkImages (it supports Intel's compression feature), but not for VkBuffers.
We have additional memory types that can be used by both buffers and images, and they all have the HOST_COHERENT bit.
It is memoryTypes[0] that is the one that's only supported for VkImages but not VkBuffers.
I have been testing Dota 2 and modifying our memory types and I'm able to see a few configurations that make Dota 2 work, but this seems like an application bug. Basically, the game only launches once it is able to successfully find a memoryType where it can store both VkBuffers and VkImages, otherwise it crashes. Also, I can see that it's the third buffer buffer creation that seems to be failing, which leads to some questions:
Could the engine be trying to allocate the buffer in some kind of image memory pool and failing?
Or maybe the engine is just trying memoryType[0] for the buffer because it's forgetting to get the initialize the value somhhwere so it's zero?
Putting some printfs in the driver helps highlight the issue. Please see printf-debug.patch for the patch and printf-debug-output.txt for the result on an unpatched tree. One of the simplest ways to fix this issue is by removing the special memoryType for compression. Doing that, we get the output printf-debug-output-works.txt (this file contains only the first memory allocations done).
On our side we've been discussing this issue here:
I am limited in my debugging of this issue due to not knowing exactly what the Source2 engine is trying to do. You guys have more information than I do, so if you believe this is an Intel driver issue please tell us.
Hello
I work on the Intel Linux Graphics (Mesa) team and we're testing Dota 2 and CS2 on our next platform codenamed Lunar Lake (LNL) and we're seeing both of them crashing right when the game starts. The relevant error messages seem to be:
What's different about LNL, and the likely reason behind the crash, is that its memory types are different from previous platforms:
VkImage
s (it supports Intel's compression feature), but not forVkBuffer
s.HOST_COHERENT
bit.vulkaninfo
reports:The relevant code for our driver is here:
It is memoryTypes[0] that is the one that's only supported for VkImages but not VkBuffers.
I have been testing Dota 2 and modifying our memory types and I'm able to see a few configurations that make Dota 2 work, but this seems like an application bug. Basically, the game only launches once it is able to successfully find a memoryType where it can store both VkBuffers and VkImages, otherwise it crashes. Also, I can see that it's the third buffer buffer creation that seems to be failing, which leads to some questions:
Putting some printfs in the driver helps highlight the issue. Please see
printf-debug.patch
for the patch and printf-debug-output.txt for the result on an unpatched tree. One of the simplest ways to fix this issue is by removing the special memoryType for compression. Doing that, we get the output printf-debug-output-works.txt (this file contains only the first memory allocations done).On our side we've been discussing this issue here:
And I've proposed the following workaround patch while we don't have a permanent fix:
I am limited in my debugging of this issue due to not knowing exactly what the Source2 engine is trying to do. You guys have more information than I do, so if you believe this is an Intel driver issue please tell us.
printf-debug-output.txt
printf-debug-output-works.txt
vulkaninfo.txt
printf-debug.patch.txt
Thanks,
Paulo
The text was updated successfully, but these errors were encountered: