mirror of
				https://github.com/Ed94/VEFontCache-Odin.git
				synced 2025-11-03 23:36:16 -08:00 
			
		
		
		
	update sokol (views update for gfx was breaking change)
This commit is contained in:
		
							
								
								
									
										93
									
								
								thirdparty/sokol/app/app.odin
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										93
									
								
								thirdparty/sokol/app/app.odin
									
									
									
									
										vendored
									
									
								
							@@ -66,18 +66,30 @@ package sokol_app
 | 
			
		||||
 | 
			
		||||
    Link with the following system libraries:
 | 
			
		||||
 | 
			
		||||
    - on macOS with Metal: Cocoa, QuartzCore, Metal, MetalKit
 | 
			
		||||
    - on macOS with GL: Cocoa, QuartzCore, OpenGL
 | 
			
		||||
    - on iOS with Metal: Foundation, UIKit, Metal, MetalKit
 | 
			
		||||
    - on iOS with GL: Foundation, UIKit, OpenGLES, GLKit
 | 
			
		||||
    - on Linux with EGL: X11, Xi, Xcursor, EGL, GL (or GLESv2), dl, pthread, m(?)
 | 
			
		||||
    - on Linux with GLX: X11, Xi, Xcursor, GL, dl, pthread, m(?)
 | 
			
		||||
    - on macOS:
 | 
			
		||||
        - all backends: Foundation, Cocoa, QuartzCore
 | 
			
		||||
        - with SOKOL_METAL: Metal, MetalKit
 | 
			
		||||
        - with SOKOL_GLCORE: OpenGL
 | 
			
		||||
        - with SOKOL_WGPU: a WebGPU implementation library (tested with webgpu_dawn)
 | 
			
		||||
    - on iOS:
 | 
			
		||||
        - all backends: Foundation, UIKit
 | 
			
		||||
        - with SOKOL_METAL: Metal, MetalKit
 | 
			
		||||
        - with SOKOL_GLES3: OpenGLES, GLKit
 | 
			
		||||
    - on Linux:
 | 
			
		||||
        - all backends: X11, Xi, Xcursor, dl, pthread, m
 | 
			
		||||
        - with SOKOL_GLCORE: GL
 | 
			
		||||
        - with SOKOL_GLES3: GLESv2
 | 
			
		||||
        - with SOKOL_WGPU: a WebGPU implementation library (tested with webgpu_dawn)
 | 
			
		||||
        - with EGL: EGL
 | 
			
		||||
    - on Android: GLESv3, EGL, log, android
 | 
			
		||||
    - on Windows with the MSVC or Clang toolchains: no action needed, libs are defined in-source via pragma-comment-lib
 | 
			
		||||
    - on Windows with MINGW/MSYS2 gcc: compile with '-mwin32' so that _WIN32 is defined
 | 
			
		||||
        - link with the following libs: -lkernel32 -luser32 -lshell32
 | 
			
		||||
        - additionally with the GL backend: -lgdi32
 | 
			
		||||
        - additionally with the D3D11 backend: -ld3d11 -ldxgi
 | 
			
		||||
    - on Windows:
 | 
			
		||||
        - with MSVC or Clang: library dependencies are defined via `#pragma comment`
 | 
			
		||||
        - with SOKOL_WGPU: a WebGPU implementation library (tested with webgpu_dawn)
 | 
			
		||||
        - with MINGW/MSYS2 gcc:
 | 
			
		||||
            - compile with '-mwin32' so that _WIN32 is defined
 | 
			
		||||
            - link with the following libs: -lkernel32 -luser32 -lshell32
 | 
			
		||||
            - additionally with the GL backend: -lgdi32
 | 
			
		||||
            - additionally with the D3D11 backend: -ld3d11 -ldxgi
 | 
			
		||||
 | 
			
		||||
    On Linux, you also need to use the -pthread compiler and linker option, otherwise weird
 | 
			
		||||
    things will happen, see here for details: https://github.com/floooh/sokol/issues/376
 | 
			
		||||
@@ -87,7 +99,7 @@ package sokol_app
 | 
			
		||||
    On Emscripten:
 | 
			
		||||
        - for WebGL2: add the linker option `-s USE_WEBGL2=1`
 | 
			
		||||
        - for WebGPU: compile and link with `--use-port=emdawnwebgpu`
 | 
			
		||||
          (for more exotic situations, read: https://dawn.googlesource.com/dawn/+/refs/heads/main/src/emdawnwebgpu/pkg/README.md)
 | 
			
		||||
          (for more exotic situations read: https://dawn.googlesource.com/dawn/+/refs/heads/main/src/emdawnwebgpu/pkg/README.md)
 | 
			
		||||
 | 
			
		||||
    FEATURE OVERVIEW
 | 
			
		||||
    ================
 | 
			
		||||
@@ -95,11 +107,12 @@ package sokol_app
 | 
			
		||||
    implements the 'application-wrapper' parts of a 3D application:
 | 
			
		||||
 | 
			
		||||
    - a common application entry function
 | 
			
		||||
    - creates a window and 3D-API context/device with a 'default framebuffer'
 | 
			
		||||
    - creates a window and 3D-API context/device with a swapchain
 | 
			
		||||
      surface, depth-stencil-buffer surface and optionally MSAA surface
 | 
			
		||||
    - makes the rendered frame visible
 | 
			
		||||
    - provides keyboard-, mouse- and low-level touch-events
 | 
			
		||||
    - platforms: MacOS, iOS, HTML5, Win32, Linux/RaspberryPi, Android
 | 
			
		||||
    - 3D-APIs: Metal, D3D11, GL4.1, GL4.3, GLES3, WebGL, WebGL2, NOAPI
 | 
			
		||||
    - 3D-APIs: Metal, D3D11, GL4.1, GL4.3, GLES3, WebGL2, WebGPU, NOAPI
 | 
			
		||||
 | 
			
		||||
    FEATURE/PLATFORM MATRIX
 | 
			
		||||
    =======================
 | 
			
		||||
@@ -109,6 +122,7 @@ package sokol_app
 | 
			
		||||
    gles3/webgl2        | ---     | ---   | YES(2)| YES   | YES     |  YES
 | 
			
		||||
    metal               | ---     | YES   | ---   | YES   | ---     |  ---
 | 
			
		||||
    d3d11               | YES     | ---   | ---   | ---   | ---     |  ---
 | 
			
		||||
    webgpu              | YES(4)  | YES(4)| YES(4)| NO    | NO      |  YES
 | 
			
		||||
    noapi               | YES     | TODO  | TODO  | ---   | TODO    |  ---
 | 
			
		||||
    KEY_DOWN            | YES     | YES   | YES   | SOME  | TODO    |  YES
 | 
			
		||||
    KEY_UP              | YES     | YES   | YES   | SOME  | TODO    |  YES
 | 
			
		||||
@@ -134,7 +148,7 @@ package sokol_app
 | 
			
		||||
    IME                 | TODO    | TODO? | TODO  | ???   | TODO    |  ???
 | 
			
		||||
    key repeat flag     | YES     | YES   | YES   | ---   | ---     |  YES
 | 
			
		||||
    windowed            | YES     | YES   | YES   | ---   | ---     |  YES
 | 
			
		||||
    fullscreen          | YES     | YES   | YES   | YES   | YES     |  ---
 | 
			
		||||
    fullscreen          | YES     | YES   | YES   | YES   | YES     |  YES(3)
 | 
			
		||||
    mouse hide          | YES     | YES   | YES   | ---   | ---     |  YES
 | 
			
		||||
    mouse lock          | YES     | YES   | YES   | ---   | ---     |  YES
 | 
			
		||||
    set cursor type     | YES     | YES   | YES   | ---   | ---     |  YES
 | 
			
		||||
@@ -148,6 +162,9 @@ package sokol_app
 | 
			
		||||
 | 
			
		||||
    (1) macOS has no regular window icons, instead the dock icon is changed
 | 
			
		||||
    (2) supported with EGL only (not GLX)
 | 
			
		||||
    (3) fullscreen in the browser not supported on iphones
 | 
			
		||||
    (4) WebGPU on native desktop platforms should be considered experimental
 | 
			
		||||
        and mainly useful for debugging and benchmarking
 | 
			
		||||
 | 
			
		||||
    STEP BY STEP
 | 
			
		||||
    ============
 | 
			
		||||
@@ -687,8 +704,7 @@ package sokol_app
 | 
			
		||||
                const size_t num_bytes = response->data.size;
 | 
			
		||||
                // and the pointer to the data (same as 'buf' in the fetch-call):
 | 
			
		||||
                const void* ptr = response->data.ptr;
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
            } else {
 | 
			
		||||
                // on error check the error code:
 | 
			
		||||
                switch (response->error_code) {
 | 
			
		||||
                    case SAPP_HTML5_FETCH_ERROR_BUFFER_TOO_SMALL:
 | 
			
		||||
@@ -865,6 +881,15 @@ package sokol_app
 | 
			
		||||
    To check if the application window is currently in fullscreen mode,
 | 
			
		||||
    call sapp_is_fullscreen().
 | 
			
		||||
 | 
			
		||||
    On the web, sapp_desc.fullscreen will have no effect, and the application
 | 
			
		||||
    will always start in non-fullscreen mode. Call sapp_toggle_fullscreen()
 | 
			
		||||
    from within or 'near' an input event to switch to fullscreen programatically.
 | 
			
		||||
    Note that on the web, the fullscreen state may change back to windowed at
 | 
			
		||||
    any time (either because the browser had rejected switching into fullscreen,
 | 
			
		||||
    or the user leaves fullscreen via Esc), this means that the result
 | 
			
		||||
    of sapp_is_fullscreen() may change also without calling sapp_toggle_fullscreen()!
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    WINDOW ICON SUPPORT
 | 
			
		||||
    ===================
 | 
			
		||||
    Some sokol_app.h backends allow to change the window icon programmatically:
 | 
			
		||||
@@ -1408,6 +1433,10 @@ foreign sokol_app_clib {
 | 
			
		||||
    set_mouse_cursor :: proc(cursor: Mouse_Cursor)  ---
 | 
			
		||||
    // get current mouse cursor type
 | 
			
		||||
    get_mouse_cursor :: proc() -> Mouse_Cursor ---
 | 
			
		||||
    // associate a custom mouse cursor image to a sapp_mouse_cursor enum entry
 | 
			
		||||
    bind_mouse_cursor_image :: proc(cursor: Mouse_Cursor, #by_ptr desc: Image_Desc) -> Mouse_Cursor ---
 | 
			
		||||
    // restore the sapp_mouse_cursor enum entry to it's default system appearance
 | 
			
		||||
    unbind_mouse_cursor_image :: proc(cursor: Mouse_Cursor)  ---
 | 
			
		||||
    // return the userdata pointer optionally provided in sapp_desc
 | 
			
		||||
    userdata :: proc() -> rawptr ---
 | 
			
		||||
    // return a copy of the sapp_desc structure
 | 
			
		||||
@@ -1775,16 +1804,18 @@ Range :: struct {
 | 
			
		||||
/*
 | 
			
		||||
    sapp_image_desc
 | 
			
		||||
 | 
			
		||||
    This is used to describe image data to sokol_app.h (at first, window
 | 
			
		||||
    icons, later maybe cursor images).
 | 
			
		||||
    This is used to describe image data to sokol_app.h (window icons and cursor images).
 | 
			
		||||
 | 
			
		||||
    Note that the actual image pixel format depends on the use case:
 | 
			
		||||
    The pixel format is RGBA8.
 | 
			
		||||
 | 
			
		||||
    - window icon pixels are RGBA8
 | 
			
		||||
    cursor_hotspot_x and _y are used only for cursors, to define which pixel
 | 
			
		||||
    of the image should be aligned with the mouse position.
 | 
			
		||||
*/
 | 
			
		||||
Image_Desc :: struct {
 | 
			
		||||
    width : c.int,
 | 
			
		||||
    height : c.int,
 | 
			
		||||
    cursor_hotspot_x : c.int,
 | 
			
		||||
    cursor_hotspot_y : c.int,
 | 
			
		||||
    pixels : Range,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1852,6 +1883,7 @@ Log_Item :: enum i32 {
 | 
			
		||||
    WIN32_REGISTER_RAW_INPUT_DEVICES_FAILED_MOUSE_LOCK,
 | 
			
		||||
    WIN32_REGISTER_RAW_INPUT_DEVICES_FAILED_MOUSE_UNLOCK,
 | 
			
		||||
    WIN32_GET_RAW_INPUT_DATA_FAILED,
 | 
			
		||||
    WIN32_DESTROYICON_FOR_CURSOR_FAILED,
 | 
			
		||||
    LINUX_GLX_LOAD_LIBGL_FAILED,
 | 
			
		||||
    LINUX_GLX_LOAD_ENTRY_POINTS_FAILED,
 | 
			
		||||
    LINUX_GLX_EXTENSION_NOT_FOUND,
 | 
			
		||||
@@ -1910,6 +1942,9 @@ Log_Item :: enum i32 {
 | 
			
		||||
    ANDROID_NATIVE_ACTIVITY_ONCREATE,
 | 
			
		||||
    ANDROID_CREATE_THREAD_PIPE_FAILED,
 | 
			
		||||
    ANDROID_NATIVE_ACTIVITY_CREATE_SUCCESS,
 | 
			
		||||
    WGPU_DEVICE_LOST,
 | 
			
		||||
    WGPU_DEVICE_LOG,
 | 
			
		||||
    WGPU_DEVICE_UNCAPTURED_ERROR,
 | 
			
		||||
    WGPU_SWAPCHAIN_CREATE_SURFACE_FAILED,
 | 
			
		||||
    WGPU_SWAPCHAIN_SURFACE_GET_CAPABILITIES_FAILED,
 | 
			
		||||
    WGPU_SWAPCHAIN_CREATE_DEPTH_STENCIL_TEXTURE_FAILED,
 | 
			
		||||
@@ -2036,5 +2071,21 @@ Mouse_Cursor :: enum i32 {
 | 
			
		||||
    RESIZE_NESW,
 | 
			
		||||
    RESIZE_ALL,
 | 
			
		||||
    NOT_ALLOWED,
 | 
			
		||||
    CUSTOM_0,
 | 
			
		||||
    CUSTOM_1,
 | 
			
		||||
    CUSTOM_2,
 | 
			
		||||
    CUSTOM_3,
 | 
			
		||||
    CUSTOM_4,
 | 
			
		||||
    CUSTOM_5,
 | 
			
		||||
    CUSTOM_6,
 | 
			
		||||
    CUSTOM_7,
 | 
			
		||||
    CUSTOM_8,
 | 
			
		||||
    CUSTOM_9,
 | 
			
		||||
    CUSTOM_10,
 | 
			
		||||
    CUSTOM_11,
 | 
			
		||||
    CUSTOM_12,
 | 
			
		||||
    CUSTOM_13,
 | 
			
		||||
    CUSTOM_14,
 | 
			
		||||
    CUSTOM_15,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user