30 Commits
Author SHA1 Message Date
LibretroAdmin f96fb1c99e Core, VideoCommon: Replace std::min, std::max and std::clamp with MIN/MAX
Twenty-five files used std::min, std::max, std::clamp or std::transform
without including <algorithm>, relying on other headers to bring it in,
which newer libstdc++ no longer does. Use libretro-common's MIN and MAX
(retro_miscellaneous.h) instead, keeping arguments that are calls in a
local first so they are evaluated once, and lowercase the boot path's
extension with tolower in a loop.

MAX(w >> level, 1u) compiles to the same instructions as std::max;
MIN(MAX(x, -1.0), 1.0) is two instructions shorter than std::clamp on
the common path.
2026-11-12 06:10:17 +01:00
LibretroAdmin a35319559c Common: Switch assertions to printf-style formatting
ASSERT_MSG, DEBUG_ASSERT_MSG, ASSERT and DEBUG_ASSERT now go through
the printf-checked PanicYesNoAssert/PanicYesNo alerts instead of fmt.
Every call site is converted with explicit casts for 64-bit and
platform-dependent types, so the format strings are compiler-checked
on Linux, Windows and Android.

The OpenGL AA mode assertions format the mode list into a stack
buffer instead of fmt::join, dropping the last <fmt/ranges.h> user
there.
2026-11-12 00:33:16 +01:00
LibretroAdmin 8455471e1f OGL: log and alert in printf terms, without fmt
The sampler and attribute names are formatted into buffers on the
stack, the GLSL header with StringFromFormat, and the missing extensions
into a buffer on the stack; a shader that fails is dumped by appending
its parts. Only the two AA mode assertions still use fmt, until the
assertions move over.
2026-11-11 19:37:59 +01:00
LibretroAdmin 00552859b7 Remove the debugger and the 'Enable debugging' option
Nothing in the libretro core drives the debugger, so its hooks only cost:
the per-access memcheck in MMU reads and writes, the breakpoint check in
the CPU run loop, branch watch calls in the interpreter and both JITs,
JIT profiling, CPU and DSP single stepping (and the DSP's 64 KiB
breakpoint table and step event). The network capture logger moves out
of PPCDebugInterface into NetworkCaptureLogger; ApplyMemoryPatch moves
into PatchEngine. Behaviour with debugging off is unchanged.
2026-11-09 09:01:29 +01:00
libretroadmin c878c0d818 remove LIBRETRO ifdefs 2026-11-07 14:23:51 +01:00
LibretroAdmin bc09a84dd1 GL: programs compiled on the driver's threads, drawn with once linked
Where the driver compiles on threads of its own
(GL_KHR_parallel_shader_compile or the ARB one), the asynchronous
shader modes on OpenGL compile in the background on the frontend's
context alone: a missing program's compile and link are started, a
couple of work items a frame, and its draws use the ubershaders, or
are skipped, until GL_COMPLETION_STATUS says the link is done; its
link is checked, its variables set and its binary written to the cache
then. A program drawn with before it is done is waited for there. A
software rasterizer, which compiles when it first draws, compiles on
the spot as before.

The shader compiler gets a deferred mode for it, without threads,
compiling the items waiting a few at a time, and AbstractPipeline tells
whether a pipeline's compile is still running and whether it can be
drawn with. With the driver's threads alone, every ubershader pipeline
there can be is not built in the background.
2026-11-07 02:05:36 +01:00
LibretroAdmin a390228b51 GL: no contexts of the core's own, the frontend's libretro GL context alone
The OpenGL renderer draws on the context the frontend hands over
through libretro GL, and the core makes no context of its own: the
platform context code goes, EGL, EGLX11, EGL for Android, WGL, AGL,
BGL and the GLX window, with the shared contexts made for the shader
compiler's threads, and GLContext::Create makes the libretro context
alone. Programs are compiled on the frontend's context, so the OpenGL
backend reports no background compiling and its shader compiler runs
no threads; the shared-context compiler, its glFinish and VAO rebinds
and the driver bug that switched it off go with it. Android no longer
links libEGL.
2026-11-07 01:36:34 +01:00
LibretroAdmin a2404c6e43 Remove the on-screen messages and the ImGui overlay
Nothing is drawn over the game any more. The OSD message queue, the
ImGui overlay that drew it (with the shader-compile progress window and
the statistics, projection and scissor windows), and the imgui and implot
libraries are removed from the build.

Core::DisplayMessage now writes to the log, and the former OSD calls
go through it. Shader compilation no longer presents frames outside
retro_run while it waits.

Deleted with it: the "OSD enabled" core option, the OSD, FPS, speed,
graph, statistics and internal-resolution display settings, and the
ImGui shaders and texture conversion.
2026-11-05 23:34:25 +01:00
LibretroAdmin 74999e2082 Remove analytics
Drop DolphinAnalytics and Common/Analytics along with every game-quirk,
game-start, performance-sample and GPU-bug-override report, the
Main.Analytics settings, and the Android opt-in dialog, settings
entries, JNI hooks and session-timestamp tracking that only fed it.
DriverDetails loses its to_string helpers and stored driver name,
which only built the bug-override report.
2026-11-05 04:48:00 +01:00
Craig Carnell b14fb4347c libretro: disable GL debug by default, add options for this plus toggle some GLES features 2026-06-26 14:27:34 +01:00
Dr. Dystopia 9ae9c12938 Replace find(x) != npos with contains(x) - Core 2026-04-20 09:36:08 +02:00
Martino Fontana a14c88ba67 Remove unused imports
Yellow squiggly lines begone!
Done automatically on .cpp files through `run-clang-tidy`, with manual corrections to the mistakes.
If an import is directly used, but is technically unnecessary since it's recursively imported by something else, it is *not* removed.
The tool doesn't touch .h files, so I did some of them by hand while fixing errors due to old recursive imports.
Not everything is removed, but the cleanup should be substantial enough.
Because this done on Linux, code that isn't used on it is mostly untouched.
(Hopefully no open PR is depending on these imports...)
2026-01-25 16:12:15 +01:00
Sintendo 1e0473e44f Fix various typos and spelling mistakes 2026-01-17 20:11:38 +01:00
Jordan Woyak c18c039089 VideoCommon: Move backend_info out of VideoConfig struct. 2025-03-09 01:42:45 -06:00
mitaclaw 88a1a5b4f2 Modernize std::set_intersection with ranges 2024-10-10 00:53:48 -07:00
mitaclaw 01d0bdf1bb Modernize std::is_sorted with ranges
In OGLConfig.cpp, `std::views::reverse` is used rather than sorting using `std::ranges::greater` in order to parallel other instances of reverse iteration in the function.
2024-10-10 00:53:48 -07:00
mitaclaw 78440ca335 Modernize std::reverse with ranges 2024-10-10 00:53:48 -07:00
Alfred Wingate d7c93d87be Add support for libfmt-11
fmt::join was moved into fmt/ranges.h

Signed-off-by: Alfred Wingate <[email protected]>
2024-08-22 16:54:35 +03:00
TellowKrinkle b7a451fc87 VideoCommon: Post to analytics when bug is overridden 2024-01-28 23:24:23 -06:00
Dentomologist becbaf50c4 OGLConfig: Only use Warn Log if OGL extensions are missing 2023-11-27 20:52:04 -08:00
TellowKrinkle 4f2a79058a VideoBackends:OGL: Handle when SSBOs are only supported in some shader stages 2023-10-25 17:47:04 +02:00
Admiral H. Curtiss 8f51a9d2d8 Merge pull request #11699 from Pokechu22/gl-check-maximum-samples
OpenGL: Check the list of supported AA modes instead of hardcoding
2023-06-09 15:07:07 +02:00
Pokechu22 b246a634d4 OpenGL: Check the list of supported AA modes instead of hardcoding 2023-06-08 22:07:41 -07:00
iwubcode 834f8f7b5c VideoBackends: add support to allow rendering to multiple output textures 2023-06-03 14:52:31 -05:00
Pokechu22 8b0bd31e72 OGL: Use GL_OES_texture_storage_multisample_2d_array when supported
See https://bugs.dolphin-emu.org/issues/13198
2023-04-08 15:32:27 -07:00
Pokechu22 53beda526b OGL: Remove bSupports2DTextureStorageMultisample and bSupports3DTextureStorageMultisample
bSupports2DTextureStorageMultisample is completely unused, while bSupports3DTextureStorageMultisample is practically unused. In the past, these were checked and fell back to sampler2DMS instead of sampler2DMSArray on GLES 3.1, but this path was removed in f039149198 and Dolphin always uses array textures now.
2023-04-08 15:32:27 -07:00
Pokechu22 c68d484a65 OGL: Convert SupportedESPointSize to an enum class 2023-04-08 15:32:27 -07:00
TellowKrinkle f25a0b43b6 VideoCommon: Fix stereoscopic 3D on OpenGL < 4.3 (macOS) 2023-02-14 18:25:33 +01:00
degasus 4b2aa948e6 VideoBackend/OGL: Prefer KHR_subgroup over NV_shader_thread.
While the NV extension is totally fine, the KHR extension should be able to support more hardware.

For NVIDIA, the hardware either supports both or neither, it just needs a driver from the last two years.
For AMD, the drivers from late 2022-12 seems to bring support for the KHR extension.
For Intel, the KHR is also supported for some years.
2023-02-09 13:27:02 +01:00
Scott Mansell f0336a3129 Implement AbstractGfx for OpenGL
Mostly involves moving contents of OGLRender
to OGLGfx and OGLConfig
2023-01-31 18:46:04 +13:00