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

vk: Separate vertex and fragment stage push constant updates for overlays #13573

Merged
merged 1 commit into from
Mar 23, 2023

Conversation

kd-11
Copy link
Contributor

@kd-11 kd-11 commented Mar 23, 2023

Fixes a push constants spec violation. Hopefully fixes some odd crashes on novideo.

@Darkhost1999
Copy link
Contributor

Before your PR debug output would only give me

·E 0:00:06.694410 {RSX [0x0000000]} RSX: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkCmdPushConstants-offset-01795 ] Object 0: handle = 0x3dec4090, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x27bc88c6 | vkCmdPushConstants(): VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_FRAGMENT_BIT, VkPushConstantRange in VkPipelineLayout 0x2f5133000000042a[] overlapping offset = 0 and size = 80, do not contain VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_FRAGMENT_BIT. The Vulkan spec states: For each byte in the range specified by offset and size and for each shader stage in stageFlags, there must be a push constant range in layout that includes that byte and that stage (https://vulkan.lunarg.com/doc/view/1.3.224.1/windows/1.3-extensions/vkspec.html#VUID-vkCmdPushConstants-offset-01795)

After this PR I have found that most all of my games are able to use debug output except for 3 games.
This issue isn't a cause of this PR. It was just discovered thanks to this PR.
The 3 titles are
Assassin's Creed [NPUB30451]
Minecraft PlayStation 3 Edition [BLUS31426]
and
Call of Duty Black Ops [BLUS30591]
The message is

·F 0:01:18.858386 {PPU[0x1000000] Thread (main_thread) [0x000469c0]} SIG: Thread terminated due to fatal error: Null function: __escape
(in file C:\Users\ContainerAdministrator\AppData\Local\Temp\cirrus-ci-build\Utilities\JIT.cpp:890[:22], in function null)

@kd-11
Copy link
Contributor Author

kd-11 commented Mar 23, 2023

Before your PR debug output would only give me

·E 0:00:06.694410 {RSX [0x0000000]} RSX: ERROR: [Validation] Code 0 : Validation Error: [ VUID-vkCmdPushConstants-offset-01795 ] Object 0: handle = 0x3dec4090, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x27bc88c6 | vkCmdPushConstants(): VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_FRAGMENT_BIT, VkPushConstantRange in VkPipelineLayout 0x2f5133000000042a[] overlapping offset = 0 and size = 80, do not contain VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_FRAGMENT_BIT. The Vulkan spec states: For each byte in the range specified by offset and size and for each shader stage in stageFlags, there must be a push constant range in layout that includes that byte and that stage (https://vulkan.lunarg.com/doc/view/1.3.224.1/windows/1.3-extensions/vkspec.html#VUID-vkCmdPushConstants-offset-01795)

After this PR I have found that most all of my games are able to use debug output except for 3 games. This issue isn't a cause of this PR. It was just discovered thanks to this PR. The 3 titles are Assassin's Creed [NPUB30451] Minecraft PlayStation 3 Edition [BLUS31426] and Call of Duty Black Ops [BLUS30591] The message is

·F 0:01:18.858386 {PPU[0x1000000] Thread (main_thread) [0x000469c0]} SIG: Thread terminated due to fatal error: Null function: __escape
(in file C:\Users\ContainerAdministrator\AppData\Local\Temp\cirrus-ci-build\Utilities\JIT.cpp:890[:22], in function null)

This seems to just be some LLVM shenanigans. Open a separate issue so someone can take a look.

@kd-11 kd-11 merged commit ad3e740 into RPCS3:master Mar 23, 2023
@kd-11 kd-11 deleted the spec-violation branch March 23, 2023 18:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants