-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
Vulkan: freezes/crashes (Nvidia Specific) #1679
Comments
Nvidia drivers don't support VSync with Vulkan atm. They expose Mailbox/FIFO/... present mode but for some reasons they're not vsynced. |
Seems vkAllocateDescriptorSets fails at least for the first two. |
@B1ackDaemon You could try and increase the descriptor pool sizes. They currently top out at 1000 draw calls per frame. They were increased before, but it seems they need to be increased some more. I've seen games with > 1000 calls in some situations. |
@kd-11 VKHelpers.h |
@SakataGintokiYT you need to change that as well as in the VKGSRender intitialization code. There are some values there like 3000 and 16000 which are calculated using 1000 * num_descriptors; i.e there are 3 uniform buffer descriptors, 16 texture descriptors and 16 vertex texture descriptors giving 3000, 16000 and 16000 respectively. You'll need to recalculate those values as well. We'll need to automatically balance the draw call load by flushing the command queues when we run out of descriptors, but increasing the sets should be ok for now. |
#1766 will fix most of the descriptor set issues. |
Vsync is working with Vulkan in Nvidia driver 368.81 (driver level , not the VSync option in RPCS3) |
@kd-11 .Thanks for fixing the memory type crash on NV . The 1942 Joint Strike is a different crash that startup ok but everytime crash with the following error only ·E {rsx::thread} RSX: ERROR: [DS] Code 7 : Cannot submit cmd buffer using deleted image 0x2000. |
About 1942; on radeon it detects that we are issuing commands without an open commandbuffer, but as far as I can tell, that is not the case. I'm suspecting a bug in the validation layers somewhere that caused the commandbuffer to detect as closed. Maybe its because of the deleted image stuff. I'll look into it separately. |
@raven02; Just a hunch, could you check if commenting out the |
@kd-11 Just tried to comment out that block and compile but it still crashes with the same error.
|
Just tried out 4 elements HD and want to test the mentioned freeze , it boots up then hit this error . F {rsx::thread} class fmt::exception thrown: vk::image::image(): Assertion failed! Result is C4650B07h |
@raven02 Thats a failed VkCreateImage call. You'll need to check the specifics of the failed image configuration in that case. NV uses their own internal error codes so there's no way to know what that error code means. |
I see this error code before when we check the resize/full screen issue previously.
|
Get more detail when enabled debug output. It is width = 0 .
|
Interesting . I tried a build few days ago, it can show few screens though hit the same error once reach the title screen. It first "break" at #1982 |
@raven02 Can you obtain a callstack using visual studio? If we can find the function responsible for creating an image with bogus dimensions, we can probably find the broken register decode. That height value of 47104 is also bogus. Just add a check and throw in the image constructor for width 0 and break, then get the callstack. |
Sure . let me check this out. |
Probably is NV3089_IMAGE_IN_SIZE or NV3089_IMAGE_OUT_SIZE |
@raven02 |
I put in the following in VKtexturecache.h and looks like width zero is 2D texture
F {rsx::thread} class fmt::exception thrown: vk::texture_cache::upload_texture(): width is zero, height = f800 , teture type : 1 |
@raven02 also since you're there, you could fix that typo lol (teture type should be texture type, no?) |
@Nezarn. Yep, it is only for testing purpose . |
@kd-11 . no more assertion failed but infinite looping with the following errors and black screen E {rsx::thread} RSX: Texture upload requested but invalid texture dimensions passed |
Well, yea, 0 dimensions will give a blank output. I'm surprised that DX12 is getting a different texture dimension than vulkan here: I'm probably missing something thats broken elsewhere. Can you check what dimensions DX12 gets for this texture upload request? |
Sure will check this out on DX12 |
@kd-11 , not really , DX12 also failed at zero width and f800 height as well . I logged at get_texture_description():
|
It affects all backends indeed |
4 Elements HD [NPUB30347] - freezes ingame, when tutorial dialog appears.
http://rghost.ru/7JpXZHY22/image.png
Bayonetta [BLES00599] and Bayonetta: First Climax demo [NPEB90193] - always freezes after you trying to pass "Press Start Button" screen.
http://rghost.ru/6CysPvx6M/image.png
Disgaea 3 [BLES00452] - freezes after intro skip, when you start new game.
The Guided Fate Paradox [NPUB31320] - got ingame freeze, when try attempt to equip items.
Those freezes doesn't occur, when using OpenGL renderer. Also noticed, that VSync option doesn't work. Tested on GeForce GTX 970 with 364.91 drivers (Vulkan API 1.0.8).
Edit: added logs from recent master build 75fe95e, PR #1676
http://rghost.ru/7SSVCm8j5
The text was updated successfully, but these errors were encountered: