JolifantoBambla / vk

Common Lisp/CFFI bindings for the Vulkan API.
https://jolifantobambla.github.io/vk/
MIT License
48 stars 5 forks source link

compile fail on windows 10 #9

Open aiffc opened 2 years ago

aiffc commented 2 years ago

Environment

vk version: vk-20220707-git from quicklisp CL implementation (name & version): SBCL 2.2.8 OS: windows 10

How to reproduce the issue

just quickload vk, (ql:quickload :vk)

Expected behavior

quickload vk success on windows 10

Actual behavior

quickload vk fail, get an error "The function VK::PROCESS-ARGS is undefined"

Additional context

error log: CL-USER> (ql:quickload :vk) To load "vk": Load 1 ASDF system: vk ; Loading "vk" .................................................. .................................................. ................

; in: ; DEFVKFUN (CREATE-INSTANCE VULKAN:CREATE-INSTANCE ; ((CREATE-INFO (OR INSTANCE-CREATE-INFO CFFI-SYS:FOREIGN-POINTER))) ; (((ALLOCATOR DEFAULT-ALLOCATOR) ; (OR ALLOCATION-CALLBACKS CFFI-SYS:FOREIGN-POINTER))) ; :HANDLE-CONSTRUCTOR MAKE-INSTANCE-WRAPPER) ; (VK::DEFVKFUN (VK:CREATE-INSTANCE VULKAN:CREATE-INSTANCE ; ((VK:CREATE-INFO ; (OR VK:INSTANCE-CREATE-INFO CFFI-SYS:FOREIGN-POINTER))) ; (((VK::ALLOCATOR VK:DEFAULT-ALLOCATOR) ; (OR VK:ALLOCATION-CALLBACKS CFFI-SYS:FOREIGN-POINTER))) ; :HANDLE-CONSTRUCTOR VK:MAKE-INSTANCE-WRAPPER) ; #<(SIMPLE-ARRAY CHARACTER ; (682)) Represents vkCreateInstance. ;
; Args: ; - CREATE-INFO: a (OR INSTANCE-CREATE-INFO CFFI:FOREIGN-POINTER) ; - A... {100824533F}> ; (VK:CREATE-INFO '(:STRUCT VULKAN:INSTANCE-CREATE-INFO) VK:CREATE-INFO :IN) ; (VK::ALLOCATOR '(:STRUCT VULKAN:ALLOCATION-CALLBACKS) VK::ALLOCATOR :IN ; :OPTIONAL) ; (VK:INSTANCE 'VULKAN:INSTANCE VK:INSTANCE :OUT :DISPATCHABLE :HANDLE)) ; ; caught ERROR: ; (during macroexpansion of (DEFVKFUN (CREATE-INSTANCE VULKAN:CREATE-INSTANCE ...) ; ...)) ; The function VK::PROCESS-ARGS is undefined.

; in: ; DEFVKFUN (DESTROY-INSTANCE VULKAN:DESTROY-INSTANCE NIL ; (((INSTANCE (MAKE-INSTANCE-WRAPPER #)) INSTANCE) ; ((ALLOCATOR DEFAULT-ALLOCATOR) ; (OR ALLOCATION-CALLBACKS CFFI-SYS:FOREIGN-POINTER))) ; :TRIVIAL-RETURN-TYPE :TRIVIAL) ; (VK::DEFVKFUN (VK:DESTROY-INSTANCE VULKAN:DESTROY-INSTANCE NIL ; (((VK:INSTANCE #) VK:INSTANCE) ; ((VK::ALLOCATOR VK:DEFAULT-ALLOCATOR) ; (OR VK:ALLOCATION-CALLBACKS CFFI-SYS:FOREIGN-POINTER))) ; :TRIVIAL-RETURN-TYPE :TRIVIAL) ; #<(SIMPLE-ARRAY CHARACTER ; (357)) Represents vkDestroyInstance. ;
; Args: ; - INSTANCE (optional): a INSTANCE, defaults to: NIL ; - ALLOCATOR (... {100829E61F}> ; (VK:INSTANCE 'VULKAN:INSTANCE VK:INSTANCE :IN :DISPATCHABLE :HANDLE ; :OPTIONAL) ; (VK::ALLOCATOR '(:STRUCT VULKAN:ALLOCATION-CALLBACKS) VK::ALLOCATOR :IN ; :OPTIONAL)) ; ; caught ERROR: ; (during macroexpansion of (DEFVKFUN (DESTROY-INSTANCE VULKAN:DESTROY-INSTANCE ...) ; ...)) ; The function VK::PROCESS-ARGS is undefined.

; in: ; DEFVKFUN (ENUMERATE-PHYSICAL-DEVICES VULKAN:ENUMERATE-PHYSICAL-DEVICES ; ((INSTANCE INSTANCE)) NIL :HANDLE-CONSTRUCTOR ; MAKE-PHYSICAL-DEVICE-WRAPPER :COUNT-ARG-NAME PHYSICAL-DEVICE-COUNT ; :FIRST-ARRAY-ARG-NAME PHYSICAL-DEVICES :ENUMERATE-P T) ; (VK::DEFVKFUN (VK:ENUMERATE-PHYSICAL-DEVICES ; VULKAN:ENUMERATE-PHYSICAL-DEVICES ((VK:INSTANCE VK:INSTANCE)) ; NIL :HANDLE-CONSTRUCTOR VK:MAKE-PHYSICAL-DEVICE-WRAPPER ; :COUNT-ARG-NAME VK:PHYSICAL-DEVICE-COUNT :FIRST-ARRAY-ARG-NAME ; VK:PHYSICAL-DEVICES :ENUMERATE-P T) ; #<(SIMPLE-ARRAY CHARACTER ; (434)) Represents vkEnumeratePhysicalDevices. ;
; Args: ; - INSTANCE: a INSTANCE ;
; Returns: ; (CL:VALUES ; ... {10082B8D2F}> ; (VK:INSTANCE 'VULKAN:INSTANCE VK:INSTANCE :IN :DISPATCHABLE :HANDLE) ; (VK:PHYSICAL-DEVICE-COUNT :UINT32 VK:PHYSICAL-DEVICE-COUNT :OUT) ; (VK:PHYSICAL-DEVICES 'VULKAN:PHYSICAL-DEVICE VK:PHYSICAL-DEVICES :OUT ; :DISPATCHABLE :HANDLE :LIST)) ; ; caught ERROR: ; (during macroexpansion of (DEFVKFUN (ENUMERATE-PHYSICAL-DEVICES VULKAN:ENUMERATE-PHYSICAL-DEVICES ...) ; ...)) ; The function VK::PROCESS-ARGS is undefined.

and so on

JolifantoBambla commented 2 years ago

Thanks for reporting. I'll look into it

aiffc commented 2 years ago

I tried to use cmd to load the package then i got this error. I think it should be sbcl‘s bug

here is the error log C:\Users\admin>sbcl This is SBCL 2.2.8, an implementation of ANSI Common Lisp. More information about SBCL is available at http://www.sbcl.org/.

SBCL is free software, provided as is, with absolutely no warranty. It is mostly in the public domain; some portions are provided under BSD-style licenses. See the CREDITS and COPYING files in the distribution for more information.

Welcome to LDB, a low-level debugger for the Lisp runtime environment. (GC in progress, oldspace=2, newspace=3) ldb>

JolifantoBambla commented 2 years ago

Yes, looks like sbcl ran out of memory during compilation. and when you try to load the systems later on, process-args is not defined because it's only available during compilation. My last two weeks were a bit busy, sorry. I'll try to fix it this weekend.

aiffc commented 2 years ago

It doesn't matter, thanks. Maybe you could take a rest.

Aksej commented 1 year ago

I have the same problem on Debian. Is there a known workaround?

JolifantoBambla commented 1 year ago

As far as I know, this only happens during compilation, not at runtime. So what you could try is to increase the dynamic space (sbcl --dynamic-space-size <MiB>) and/or lowering the debug compiler policy (using restrict-compiler-policy) when compiling vk and using your default settings afterwards. I still need to figure out a permanent solution.

schn4v1d commented 1 year ago

Hi, has there been any update on this? Thanks!