Tim Kane
f35459a0f9
Added a scoped lock, rather than explicitly unlocking at all return points
2025-07-12 18:46:26 +10:00
Tim Kane
6054b1a2a1
Needed a little more work to resolve a number of outstanding thread sanitiser concerns
...
This is a little nasty..
I'm trying to keep all changes localised to imgui_impl_osx.mm
Ideally the ImGui_IO_lock would live within ImGuiIO but I didn't want to muddy the waters
Perhaps better if this lock primitive is delivered through BackendPlatformUserData, and only used where provided
This change requires the client platform to explicitly lock the primitive from outside of ImGui around ImGui::NewFrame specifically, and additionally from anywhere on the client side (external to ImGui) that concurrently hooks into ImGuiIO
That requires the client to define an extern lock (and use it appropriately)
extern NSlock *ImGui_IO_lock
If this lock were native to ImGui we could have ImGui::NewFrame() handle the lock on our behalf, negating the need for client side locking
2025-07-12 18:46:26 +10:00
Tim Kane
6508586fc2
Resolve Xcode runtime warnings regarding access of NSView/NSWindow properties from a non-main thread
...
This issue presents when rendering from a thread that is other than the window thread, more easily reproduced when disabling vsync
This commit aims to populate the relevant data into backend_data, by way of dispatch_async (ocurring on the main thread). Those particular backend data items are protected by an NSlock
There may be more elegant ways to do this
Main Thread Checker
imgui/backends/imgui_impl_osx.mm:608 -[NSView window] must be used from main thread only
imgui/backends/imgui_impl_osx.mm:608 -[NSWindow backingScaleFactor] must be used from main thread only
imgui/backends/imgui_impl_osx.mm:609 -[NSView bounds] must be used from main thread only
2025-07-12 18:46:26 +10:00
ocornut
336d9212fc
Backends: using range-for to iterate draw_data->CmdLists[].
2025-07-11 17:41:52 +02:00
Pascal Thomet
18dca11dd0
Backends: GLFW, SDL2: ImplXXX_GetContentScaleXXX() helpers return 1.0f on emscripten / apple / android ( #8742 , #8733 )
...
We can divide platforms into two cases based on how they report screen geometry:
- Case 1: Platforms which report screen size in "physical pixels": Windows (for "Dpi aware" apps), Linux (with Wayland)
- Case 2: Platforms which report screen size in "density-independent pixels": macOS, iOS, Android, emscripten
As a consequence, there are two important things we need to know:
- FramebufferScale: The scaling factor FrameBufferSize / ScreenSize
- In case 1, the framebuffer size is equal to the screen size and DisplayFramebufferScale=1.
- In case 2, the framebuffer size is equal to the screen size multiplied by a factor, for example DisplayFramebufferScale=2.
- ContentScale The scaling factor for the content that we will display
- In case 1, the content scale will often need to be > 1 (e.g., 2), because we will need to display bigger elements so that they show with a correct physical size on the screen.
- In case 2, the content scale is equal to 1
This commit fixes ContentScale for platforms in case 2.
2025-07-08 15:53:42 +02:00
Moses Miller
032e1397d9
Backends: Vulkan: use separate barrier for buffer. ( #8772 )
2025-07-07 16:58:42 +02:00
Moses Miller
c2d9b07533
Backends: Vulkan: fixed texture synchronization. ( #8772 )
2025-07-07 16:58:41 +02:00
ocornut
57a93e1a19
Backends: Allegro5: fixed texture update broken on some platforms where ALLEGRO_LOCK_WRITEONLY needed all texels to be rewritten. ( #8770 )
2025-07-07 15:36:24 +02:00
ocornut
495d6f1e39
Undef 'Status' in main header file. ( #8751 , #8765 )
2025-07-07 14:56:50 +02:00
ocornut
d99ab9f903
Backends: SDL2: undef Status for X11. ( #8751 )
2025-06-28 17:15:18 +02:00
morrazzzz
fff47f1119
Backends: SDL3: avoid calling SDL_StartTextInput() again if already active. ( #8727 )
2025-06-27 16:35:59 +02:00
Thomas Quante
8e3aac5744
Backends: Vulkan: use nonCoherentAtomSize to align upload_size, fixing validation error on some setups. ( #8743 , #8744 )
2025-06-27 16:32:17 +02:00
Christian Fillion
22ad62c90c
Backends: OSX: added ImGuiMouseCursor_Wait and ImGuiMouseCursor_Progress mouse cursor support. ( #8739 )
...
Yet another undocumented standard cursor.
Amend 8a35386 .
2025-06-27 13:35:03 +02:00
ocornut
dcf14505e2
Backends: SDLGPU: fixes call to SDL_MapGPUTransferBuffer(). Fixes artifacts on OSX/Metal. ( #8465 , #8703 )
2025-06-25 15:48:56 +02:00
Geert Bleyen
04a5b9c2cf
Backends: SDL3: fixed pulling SDL_PROP_WINDOW_COCOA_WINDOW_POINTER into viewport->PlatformHandleRaw. ( #8725 , #8726 )
...
SDL_VIDEO_DRIVER_COCOA does not exist on SDL3.
2025-06-24 18:14:39 +02:00
ocornut
afe20dc9b6
Backends: warning fix.
2025-06-20 15:23:52 +02:00
ocornut
e97e55adbc
Backends: Fixed various warnings discovered when using MinGW GCC 15/Clang on latest backends.
...
dx12: 'ImGui_ImplDX12_Data* bd' shadowed local in spite of being in lambda.
2025-06-20 15:18:00 +02:00
ocornut
9a50c09172
Bsckends: SDL2, GLFW: fixed ImGui_ImplXXXX_GetContentScaleXXX functions never using SDL 2.0.4 & GLFW 3.3 path in master.
...
Amend 9da3e6696a , 8269924c (was broken for master)
2025-06-20 14:38:33 +02:00
ocornut
8d6e66d38c
Backends: DX10, DX11, DX12, OpenGL3, Vulkan, WGPU: Assert when CreateDeviceObjects() calls return false.
2025-06-20 09:49:53 +02:00
ocornut
f7dabede8b
Backends: Allegro5: Fixed missing invisible mouse cursor, broken by ee8941e0d.
2025-06-20 09:49:53 +02:00
PlayDay
725d185a31
Backends: DirectX12: fixed build on MinGW. ( #8702 , #4594 )
2025-06-19 20:10:39 +02:00
ocornut
f633a60581
Backends: GLFW: Added support for multiple Dear ImGui contexts. ( #8676 , #8239 , #8069 )
2025-06-18 16:46:37 +02:00
ocornut
d290e583c5
Backends: GLFW: fixed WndProc relying on current context. ( #8676 , #8239 , #8069 )
...
This makes the backend closer to support multi-context.
2025-06-18 16:39:57 +02:00
Shawn Hatori
6b3cbb10a2
Backends: Vulkan: correct minimum pool size assertion ( #8691 )
2025-06-16 11:59:26 +02:00
ocornut
7ac99a4366
Backends: OSX: ImGui_ImplOSX_HandleEvent() only process event for window containing our view. ( #8644 )
2025-06-12 15:44:18 +02:00
ocornut
571dae9664
Backends: WGPU: added ImGuiBackendFlags_RendererHasTextures support. ( #8465 )
2025-06-12 15:31:51 +02:00
ocornut
b178fd4286
Backends: WebGPU: moved sampler creation out of ImGui_ImplWGPU_CreateFontsTexture().
2025-06-12 14:55:46 +02:00
ocornut
df068ce11e
Various/misc fixes following back-and-forth dynamic_fonts->master->docking merges. Added missing API BREAKING CHANGES section.
2025-06-11 18:50:16 +02:00
ocornut
b98e92839c
Backends: SDL2, SDL3, GLFW: Backport small part of c90ea13 from docking.
2025-06-11 16:24:04 +02:00
ocornut
8269924c33
Backends: GLFW: added ImGui_ImplGlfw_GetContentScaleForMonitor(), ImGui_ImplGlfw_GetContentScaleForWindow() helpers.
...
# Conflicts:
# backends/imgui_impl_glfw.cpp
2025-06-11 16:13:49 +02:00
ocornut
9da3e6696a
Backends: SDL2: added ImGui_ImplSDL2_GetDpiScaleForDisplay(), ImGui_ImplSDL2_GetContentScaleForWindow() helpers.
2025-06-11 16:12:41 +02:00
thedmd
26c017d5ea
Backends: Metal: added ImGuiBackendFlags_RendererHasTextures support.
...
# Conflicts:
# backends/imgui_impl_metal.h
# backends/imgui_impl_metal.mm
2025-06-11 15:41:05 +02:00
ocornut
ee8941e0de
Backends: Allegro5: added ImGuiBackendFlags_RendererHasTextures support.
2025-06-11 15:41:05 +02:00
ocornut
16fe666e36
Backends: SDLGPU3: added ImGuiBackendFlags_RendererHasTextures support.
...
# Conflicts:
# backends/imgui_impl_sdlgpu3.cpp
# backends/imgui_impl_sdlgpu3.h
2025-06-11 15:38:14 +02:00
ocornut
e538883a20
Backends: SDL_Renderer3: added ImGuiBackendFlags_RendererHasTextures support.
2025-06-11 15:38:13 +02:00
ocornut
9fa65cd190
Backends: SDL_Renderer2: added ImGuiBackendFlags_RendererHasTextures support.
2025-06-11 15:37:50 +02:00
ocornut
abe294bfd0
Backends: Vulkan: added ImGuiBackendFlags_RendererHasTextures support.
...
# Conflicts:
# backends/imgui_impl_vulkan.cpp
2025-06-11 15:33:28 +02:00
ocornut
0430c55b84
Backends: OpenGL2: added ImGuiBackendFlags_RendererHasTextures support.
...
Removed ImGui_ImplOpenGL2_CreateFontsTexture() and ImGui_ImplOpenGL2_DestroyFontsTexture().
2025-06-11 15:30:45 +02:00
ocornut
dbb91a574f
Backends: OpenGL3: added ImGuiBackendFlags_RendererHasTextures support.
...
+ Removed ImGui_ImplOpenGL3_CreateFontsTexture() and ImGui_ImplOpenGL3_DestroyFontsTexture().
2025-06-11 15:29:14 +02:00
ocornut
eefe5d5aac
Backends: DirectX12: added ImGuiBackendFlags_RendererHasTextures support.
...
# Conflicts:
# backends/imgui_impl_dx12.cpp
2025-06-11 15:27:19 +02:00
ocornut
2d2b1bc1cc
Backends: DirectX10: added ImGuiBackendFlags_RendererHasTextures support.
...
# Conflicts:
# backends/imgui_impl_dx10.cpp
# backends/imgui_impl_dx10.h
2025-06-11 15:27:16 +02:00
ocornut
75efba7ec7
Backends: DirectX9: added ImGuiBackendFlags_RendererHasTextures support
...
# Conflicts:
# backends/imgui_impl_dx9.cpp
2025-06-11 15:27:11 +02:00
ocornut
372fd27e71
Backends: DirectX11: added ImGuiBackendFlags_RendererHasTextures support.
...
# Conflicts:
# backends/imgui_impl_dx11.cpp
2025-06-11 15:26:00 +02:00
Dylam De La Torre
201899b611
Backends: OpenGL3: Fixed using non-existing features on GLES 3.20 which would push a GL error. ( #8664 )
...
* GL_PRIMITIVE_RESTART is not a valid enum for glEnable&co on GLES 3.20
* GL_CONTEXT_PROFILE_MASK is not a valid enum for glGetIntegerv on GLES 3.20
2025-06-04 23:48:56 +02:00
ocornut
9361c35176
Backends: SDL2, SDL3: maximum room for sanitizer to not be zealous.
2025-05-15 15:36:42 +02:00
ocornut
b5a73033ab
Examples: Apple: Amend build scripts and gitignore, fix misc OSX warnings. ( #8637 )
...
# Conflicts:
# backends/imgui_impl_metal.mm
2025-05-14 18:23:31 +02:00
ocornut
08689c51a9
Backends: GLFW, SDL2, SDL3: include GLFW/SDL version number in io.BackendPlatformName.
...
# Conflicts:
# backends/imgui_impl_sdl2.cpp
# backends/imgui_impl_sdl3.cpp
2025-05-13 15:50:51 +02:00
ocornut
4a6ba95392
Backends: SDL3: Comments ( #6146 )
2025-05-12 19:19:30 +02:00
tamas-rabel
b9ac32a0d5
Backends: DirectX12: Make sure texture sampling in the dx12 backend is not limited to the highest mip. ( #8631 )
2025-05-12 00:04:44 +02:00
WSSDude
ba513ba804
Backends: DX10, DX11, DX12: honor FramebufferScale. ( #8412 )
...
# Conflicts:
# backends/imgui_impl_dx11.cpp
# backends/imgui_impl_dx12.cpp
2025-05-07 19:19:30 +02:00