by _mental_ » Mon Jun 10, 2019 3:33 am
With
this fix I managed to reproduce the crash on Vega occasionally. It's somewhere inside
vkCmdBeginRenderPass function.
Spoiler: Callstack
Code: Select all
VulkanCommandBuffer::beginRenderPass(const VkRenderPassBeginInfo * pRenderPassBegin, VkSubpassContents contents) Line 864
VulkanCommandBuffer::beginRenderPass(const RenderPassBegin & renderPassBegin, VkSubpassContents contents) Line 859
VkPPRenderState::RenderScreenQuad(VkPPRenderPassSetup * passSetup, VulkanDescriptorSet * descriptorSet, VulkanFramebuffer * framebuffer, int framebufferWidth, int framebufferHeight, int x, int y, int width, int height, const void * pushConstants, unsigned int pushConstantsSize, bool stencilTest) Line 544
VkPPRenderState::Draw() Line 509
PPCameraExposure::Render(PPRenderState * renderstate, int sceneWidth, int sceneHeight) Line 453
VkPostprocess::PostProcessScene(int fixedcm, const std::function<void __cdecl(void)> & afterBloomDrawEndScene2D) Line 50
VulkanFrameBuffer::PostProcessScene(int fixedcm, const std::function<void __cdecl(void)> & afterBloomDrawEndScene2D) Line 602
VulkanFrameBuffer::RenderViewpoint(FRenderViewpoint & mainvp, AActor * camera, IntRect * bounds, float fov, float ratio, float fovratio, bool mainview, bool toscreen) Line 492
VulkanFrameBuffer::WriteSavePic(player_t * player, FileWriter * file, int width, int height) Line 344
PutSavePic::__l7::<lambda>() Line 2165
It doesn't happen with validation layers enabled though.
With [url=https://github.com/coelckers/gzdoom/commit/13cab1c0b61176059a568724721e4043fd1e4234]this fix[/url] I managed to reproduce the crash on Vega occasionally. It's somewhere inside [url=https://github.com/coelckers/gzdoom/blob/9f2fbc1294ec453b3ac9cd2b8d7b3186d6d28c98/src/rendering/vulkan/system/vk_objects.h#L863]vkCmdBeginRenderPass[/url] function.
[spoiler=Callstack][code]VulkanCommandBuffer::beginRenderPass(const VkRenderPassBeginInfo * pRenderPassBegin, VkSubpassContents contents) Line 864
VulkanCommandBuffer::beginRenderPass(const RenderPassBegin & renderPassBegin, VkSubpassContents contents) Line 859
VkPPRenderState::RenderScreenQuad(VkPPRenderPassSetup * passSetup, VulkanDescriptorSet * descriptorSet, VulkanFramebuffer * framebuffer, int framebufferWidth, int framebufferHeight, int x, int y, int width, int height, const void * pushConstants, unsigned int pushConstantsSize, bool stencilTest) Line 544
VkPPRenderState::Draw() Line 509
PPCameraExposure::Render(PPRenderState * renderstate, int sceneWidth, int sceneHeight) Line 453
VkPostprocess::PostProcessScene(int fixedcm, const std::function<void __cdecl(void)> & afterBloomDrawEndScene2D) Line 50
VulkanFrameBuffer::PostProcessScene(int fixedcm, const std::function<void __cdecl(void)> & afterBloomDrawEndScene2D) Line 602
VulkanFrameBuffer::RenderViewpoint(FRenderViewpoint & mainvp, AActor * camera, IntRect * bounds, float fov, float ratio, float fovratio, bool mainview, bool toscreen) Line 492
VulkanFrameBuffer::WriteSavePic(player_t * player, FileWriter * file, int width, int height) Line 344
PutSavePic::__l7::<lambda>() Line 2165[/code][/spoiler]
It doesn't happen with validation layers enabled though.