[BUG] Vulkan samples GPU hang (quick window resize)

Started by Dorian, February 22, 2023, 03:05:16 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Dorian

Hi,

There seems to be a problem in CapsViewer demos, when you grab window by frame and quickly make it smaller/larger.

GPU Caps View Version 1.58.0.1
Gfx: Intel Arc A770

It looks like demos can render outside of render area/framebuffer, which is forbidden by Vulkan spec:
"The application must ensure (using scissor if necessary) that all rendering is contained within the render area"


Thread 0, Frame 930, Time 6641697 us:vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) returns VkResult VK_SUCCESS (0):
  device:                         VkDevice = 0AED13A8
  pCreateInfo:                    const VkFramebufferCreateInfo* = 0D34F678:
    sType:                          VkStructureType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO (37)
pNext:                          const void* = NULL
flags:                          VkFramebufferCreateFlags = 0
renderPass:                     VkRenderPass = 243628976
attachmentCount:                uint32_t = 2
pAttachments:                   const VkImageView* = 0D34F6A8
    pAttachments[0]:                const VkImageView = 248417432
pAttachments[1]:                const VkImageView = 242692664
width:                          uint32_t = 663
height:                         uint32_t = 1
layers:                         uint32_t = 1
pAllocator:                     const VkAllocationCallbacks* = NULL
pFramebuffer:                   VkFramebuffer* = 180012888

(...)

Thread 0, Frame 930, Time 6645368 us:vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) returns void:
    commandBuffer:                  VkCommandBuffer = 0E897670   
    firstViewport:                  uint32_t = 0
    viewportCount:                  uint32_t = 1
    pViewports:                     const VkViewport* = 0D34F3F0
    pViewports[0]:                  const VkViewport = 0D34F3F0:
        x:                              float = 0
        y:                              float = 0
        width:                          float = 924   
        height:                         float = 511   
        minDepth:                       float = 0   
        maxDepth:                       float = 1

Thread 0, Frame 930, Time 6646653 us:vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) returns void:
    commandBuffer:                  VkCommandBuffer = 0E897670
    firstScissor:                   uint32_t = 0
    scissorCount:                   uint32_t = 1
    pScissors:                      const VkRect2D* = 0D34F408
        pScissors[0]:                   const VkRect2D = 0D34F408:
            offset:                         VkOffset2D = 0D34F408:
                x:                              int32_t = 0
                y:                              int32_t = 0
            extent:                         VkExtent2D = 0D34F410:
                width:                          uint32_t = 924
                height:                         uint32_t = 511

Scissors/viewport should be adjusted in time to match frameBuffer/attachment size.


JeGX

Could you do the following test?

Download the latest GeeXLab 0.51
https://www.geeks3d.com/dl/show/500

Download the Vulkan demopack:
https://www.geeks3d.com/dl/show/50102

and load into GeeXLab this demo:
geexlab-demopack-vulkan/vk2/02-triangle/v1-validation/main.xml

Let me know.