Sachen die Recreated werden müssen:
-Swapchain
-Swapchain-Image-Views
-Images die abhängig von Fenstergröße sind (z.B. Depth Buffer)
-Renderpasses die entsprechende Images benutzen
Vorschlag: Resize callback für User (bereits verfügbar)
Image und Renderpass brauchen resize calls
@awasmut @tfrisch Ihr seid ja beide die Leads der Gruppen die das machen und da wollte ich Fragen was ihr zu dem Vorschlag von @agauggel meint und ob ihr mir da helfen würdet.
Ich müsste mal nachgucken, aber ein Image lässt sich garnicht so leicht resizen. Das muss man voraussichtlich komplett deallokieren und neu erzeugen, da sonst Speicher fehlt.
Das kann ich einbauen... ich fände zwar irgendwie angenehmer, wenn man so Images wie den Depth Buffer nicht selbst resizen muss, auf der Anwendungsebene, aber erstmal sollte das okay sein.
Ein Resize-Event ist dann auf jeden Fall notwendig und am besten wird erst komplett die Swapchain aufgeräumt und neu erzeugt, bevor das aufgerufen wird. Damit keine Abhängigkeit darin irgendwie Probleme macht.
Ich habe nochmal in den Code geschaut und aktuell wird der Depth Buffer pro Frame neu erzeugt in der passenden Größe. ^^'
Das ist nicht effizient, aber löst euer Problem bereits. In folgender MR habe ich das mal angepasst, so dass der Depth Buffer nur bei Größenänderungen neu erzeugt wird. Können wir später trotzdem noch anders handhaben. ^^'
Es ist tatsächlich die Pipeline betroffen, die letzten Endes präsentiert und den Viewport und Scissor dazu bestimmt. Die Swapchain images resizen müsste man eigentlich nicht manuell, da ja die presentation engine in Kontrolle dieser ist (weshalb man da auch zB keinen extra memory allokieren muss, etc).
Ich bin leider noch nicht dazu gekommen, die dynamic states einer pipeline auszuprobieren, aber das hier sollte auf jeden Fall von Interesse sein: VkDynamicState
Genauer: VK_DYNAMIC_STATE_VIEWPORT und dann entsprechend vkCmdSetViewport
Wollen wir uns dafür einen Tag hinsetzen und das gemeinsam ausprobieren?
Wäre ich dafür, da ich aber heute und morgen keine Zeit habe schlag ich Freitag vor. Bei dir war es wegen der Arbeit glaub ich ähnlich. Ansonsten sag mir nen Tag (außer Freitag Abend) und ich versuch es möglich zu machen.