wip(0.S3): outside the runtime, its drawable size, scale, screen and tile size are read and set through its functions; a migration reports such a reference instead of threading the runtime's state

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-25 15:47:21 +03:00
parent d70b00f30d
commit 7b17b4a1b9
15 changed files with 46529 additions and 46216 deletions

View file

@ -1328,20 +1328,19 @@ function gvk_manifest(render3d_st: mut Render3dState) -> bool {
# The screen: a colour and a depth image. Headless they are the asked-for size; with a window
# they are its client area in pixels, and the swapchain is made on it.
function gvk_open(render3d_st: mut Render3dState, w: int, h: int, title: string) -> bool {
gl_w = w
gl_h = h
gl_set_drawable(w, h)
if is_windowed() {
win_open(w, h, 1, title) # the window exists before main: this retitles it
win_gl_resize(w, h)
if render3d_st.gvk_size_buf == null { render3d_st.gvk_size_buf = words(4) }
win_gl_drawable(render3d_st.gvk_size_buf)
if render3d_st.gvk_size_buf[0] > 0 and render3d_st.gvk_size_buf[1] > 0 { gl_w = render3d_st.gvk_size_buf[0]; gl_h = render3d_st.gvk_size_buf[1] }
gl_scale = win_gl_scale()
if render3d_st.gvk_size_buf[0] > 0 and render3d_st.gvk_size_buf[1] > 0 { gl_set_drawable(render3d_st.gvk_size_buf[0], render3d_st.gvk_size_buf[1]) }
gl_set_pixel_scale(win_gl_scale())
}
if not gvk_frame_init(render3d_st) { return false }
if not gvk_screen_make(render3d_st, gl_w, gl_h) { return false }
if not gvk_screen_make(render3d_st, gl_width(), gl_height()) { return false }
if r3d_env_has(render3d_st, "R3D_VK_PROBE") { gvk_compute_probe(render3d_st) }
if is_windowed() { return gvk_swap_make(render3d_st, gl_w, gl_h) }
if is_windowed() { return gvk_swap_make(render3d_st, gl_width(), gl_height()) }
return true
}
@ -1695,10 +1694,9 @@ function gvk_resize_check(render3d_st: mut Render3dState) -> bool {
let w = render3d_st.gvk_size_buf[0]
let h = render3d_st.gvk_size_buf[1]
if w <= 0 or h <= 0 { return false }
if w == gl_w and h == gl_h and not render3d_st.gvk_swap_stale { return false }
if w == gl_width() and h == gl_height() and not render3d_st.gvk_swap_stale { return false }
gvk_flush(render3d_st)
gl_w = w
gl_h = h
gl_set_drawable(w, h)
gvk_screen_make(render3d_st, w, h)
gvk_swap_make(render3d_st, w, h)
return true