From db2a5fccb7f2f18fab9c222d6bf771fd16e98851 Mon Sep 17 00:00:00 2001 From: kcbanner Date: Sun, 13 Oct 2024 00:10:56 -0400 Subject: [PATCH 1/3] Allow SG_PIXELFORMAT_RG11B10F to be a render target when EXT_color_buffer_float is enabled --- sokol_gfx.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sokol_gfx.h b/sokol_gfx.h index 9cf317a78..c2c56019a 100644 --- a/sokol_gfx.h +++ b/sokol_gfx.h @@ -7494,7 +7494,6 @@ _SOKOL_PRIVATE void _sg_gl_init_pixelformats(bool has_bgra) { _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_BGRA8]); } _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGB10A2]); - _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RG11B10F]); _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RGB9E5]); _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG32UI]); _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG32SI]); @@ -7535,20 +7534,24 @@ _SOKOL_PRIVATE void _sg_gl_init_pixelformats_float(bool has_colorbuffer_float, b _sg_pixelformat_sfrm(&_sg.formats[SG_PIXELFORMAT_RG32F]); _sg_pixelformat_sfrm(&_sg.formats[SG_PIXELFORMAT_RGBA32F]); } + _sg_pixelformat_sfrm(&_sg.formats[SG_PIXELFORMAT_RG11B10F]); } else { _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_R32F]); _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RG32F]); _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RGBA32F]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RG11B10F]); } } else { if (has_colorbuffer_float) { _sg_pixelformat_sbrm(&_sg.formats[SG_PIXELFORMAT_R32F]); _sg_pixelformat_sbrm(&_sg.formats[SG_PIXELFORMAT_RG32F]); _sg_pixelformat_sbrm(&_sg.formats[SG_PIXELFORMAT_RGBA32F]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG11B10F]); } else { _sg_pixelformat_s(&_sg.formats[SG_PIXELFORMAT_R32F]); _sg_pixelformat_s(&_sg.formats[SG_PIXELFORMAT_RG32F]); _sg_pixelformat_s(&_sg.formats[SG_PIXELFORMAT_RGBA32F]); + _sg_pixelformat_s(&_sg.formats[SG_PIXELFORMAT_RG11B10F]); } } } From 72de62c89c56502c1af9710641a60d8cae94a21e Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Mon, 14 Oct 2024 11:39:00 +0200 Subject: [PATCH 2/3] update changelog (https://github.com/floooh/sokol/pull/1121) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b916f813c..8cd539577 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ ## Updates +### 14-Oct-2024 + +- sokol_gfx.h: The pixel format RG11B10F is now marked as renderable in the GL + backend (generally on desktop GL, and on GLES3/WebGL2 when the necessary + extensions are present). Many thanks to @kcbanner for the PR + (https://github.com/floooh/sokol/pull/1121)! + ### 17-Sep-2024 - The sokol_app.h Linux backend now has clipboard support. Many thanks to From 4bda1469d3b311af03a34dd956460776c920dc2e Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Wed, 16 Oct 2024 11:17:58 +0200 Subject: [PATCH 3/3] fix a couple of documentation typos --- sokol_app.h | 21 ++++++++++++--------- sokol_fetch.h | 8 ++++---- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/sokol_app.h b/sokol_app.h index 97f72ab32..1346c3bbf 100644 --- a/sokol_app.h +++ b/sokol_app.h @@ -94,7 +94,7 @@ ======================= | Windows | macOS | Linux | iOS | Android | HTML5 --------------------+---------+-------+-------+-------+---------+-------- - gl 3.x | YES | YES | YES | --- | --- | --- + gl 4.x | YES | YES | YES | --- | --- | --- gles3/webgl2 | --- | --- | YES(2)| YES | YES | YES metal | --- | YES | --- | YES | --- | --- d3d11 | YES | --- | --- | --- | --- | --- @@ -275,10 +275,9 @@ to various Metal API objects required for rendering, otherwise they return a null pointer. These void pointers are actually Objective-C ids converted with a (ARC) __bridge cast so that - the ids can be tunnel through C code. Also note that the returned - pointers to the renderpass-descriptor and drawable may change from one - frame to the next, only the Metal device object is guaranteed to - stay the same. + the ids can be tunneled through C code. Also note that the returned + pointers may change from one frame to the next, only the Metal device + object is guaranteed to stay the same. const void* sapp_macos_get_window(void) On macOS, get the NSWindow object pointer, otherwise a null pointer. @@ -338,7 +337,8 @@ --- Optionally implement the event-callback to handle input events. sokol-app provides the following type of input events: - a 'virtual key' was pressed down or released - - a single text character was entered (provided as UTF-32 code point) + - a single text character was entered (provided as UTF-32 encoded + UNICODE code point) - a mouse button was pressed down or released (left, right, middle) - mouse-wheel or 2D scrolling events - the mouse was moved @@ -844,6 +844,8 @@ - on Linux: highly dependent on the used window manager, but usually the window's title bar icon and/or the task bar icon - on HTML5: the favicon shown in the page's browser tab + - on macOS: the application icon shown in the dock, but only + for currently running applications NOTE that it is not possible to set the actual application icon which is displayed by the operating system on the desktop or 'home screen'. Those @@ -974,7 +976,7 @@ the browser will not generate UNICODE character events) - all other key events *do not* bubble up by default (this prevents side effects like F1 opening help, or F7 starting 'caret browsing') - - character events do no bubble up (although I haven't noticed any side effects + - character events do not bubble up (although I haven't noticed any side effects otherwise) Event bubbling can be enabled for input event categories during initialization @@ -991,9 +993,10 @@ }; } - This basically opens the floodgates lets *all* input events bubble up to the browser. + This basically opens the floodgates and lets *all* input events bubble up to the browser. + To prevent individual events from bubbling, call sapp_consume_event() from within - the sokol_app.h event callback. + the sokol_app.h event callback when that specific event is reported. OPTIONAL: DON'T HIJACK main() (#define SOKOL_NO_ENTRY) ====================================================== diff --git a/sokol_fetch.h b/sokol_fetch.h index 2cc493129..d2f989ae4 100644 --- a/sokol_fetch.h +++ b/sokol_fetch.h @@ -498,7 +498,7 @@ After the user callback returns, and all file data has been loaded (response.finished flag is set) the request has reached its end-of-life - and will recycled. + and will be recycled. Otherwise, if there's still data to load (because streaming was requested by providing a non-zero request.chunk_size), the request @@ -610,7 +610,7 @@ without downloading the entire file first (the Content-Length response header only provides the compressed size). Furthermore, for HTTP range-requests, the range is given on the compressed data, not the - uncompressed data. So if the web server decides to server the data + uncompressed data. So if the web server decides to serve the data compressed, the content-length and range-request parameters don't correspond to the uncompressed data that's arriving in the sokol-fetch buffers, and there's no way from JS or WASM to either force uncompressed @@ -671,7 +671,7 @@ When a request is sent to a channel via sfetch_send(), a "free lane" will be picked and assigned to the request. The request will occupy this lane for its entire life time (also while it is paused). If all lanes of a - channel are currently occupied, new requests will need to wait until a + channel are currently occupied, new requests will wait until a lane becomes unoccupied. Since the number of channels and lanes is known upfront, it is guaranteed @@ -800,7 +800,7 @@ On platforms with threading support, each channel runs on its own thread, but this is mainly an implementation detail to work around - the blocking traditional file IO functions, not for performance reasons. + the traditional blocking file IO functions, not for performance reasons. MEMORY ALLOCATION OVERRIDE