feat(render3d): Vulkan in the game's window on Windows
- gpu_select takes Vulkan for a window on Windows; gvk_init asks for VK_KHR_surface, VK_KHR_win32_surface and VK_KHR_swapchain when the renderer will present. A window elsewhere stays on OpenGL with the reason. - gvk_open opens the window without a GL context and makes the screen images at its client area; gvk_swap_make builds the swapchain on the Win32 surface (FIFO with vsync, mailbox or immediate without) and rebuilds it when it is out of date, suboptimal or the window changes size. - gvk_present blits the screen image into the acquired swapchain image, flipped (the screen keeps OpenGL's bottom-up rows), and presents it. - Samplers pointed at a texture unit with u_i and then fed by binding units - the actors do this - read that unit's texture; on Vulkan they drew with the white stand-in (the tent, the log, the chair, the workbench). - gl.ll carries a weak win_gl_drawable for headless macOS builds. On the RTX 3070 Ti the windowed build runs the valley through Vulkan at 3840x2160 with the HUD and the frame-rate readout (16 fps: every upload still waits on the frame, and buffers are host-visible). The headless Vulkan frame is unchanged; OpenGL frames byte-identical at the five viewpoints with 59 self-tests passing. The actor fix is compiled and OpenGL-verified, not yet seen on the PC; blades at the grass's middle distance still draw black on Vulkan. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
66940f9c0a
commit
1b7408c6a1
4 changed files with 254 additions and 19 deletions
|
|
@ -376,3 +376,12 @@ define weak ptr @win_native_instance() {
|
|||
entry:
|
||||
ret ptr null
|
||||
}
|
||||
; the drawable's size, for a graphics API that follows the window without a GL context (render3d's
|
||||
; Vulkan resize check); headless there is no window, so 0 x 0. cocoa.ll's real one wins when linked.
|
||||
define weak void @win_gl_drawable(ptr %out) {
|
||||
entry:
|
||||
store i32 0, ptr %out
|
||||
%o1 = getelementptr i32, ptr %out, i32 1
|
||||
store i32 0, ptr %o1
|
||||
ret void
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue