Commit Graph

41 Commits

Author SHA1 Message Date
Chris Healy 49bfbd49cd OpenGL: Integrate GLProfiler into render pass execution
Integrates the GLProfiler into GLQueueRunner to provide GPU timestamp
profiling for OpenGL render passes, similar to the Vulkan backend.

Profiled operations:
- RenderPass (with tag name for identification)
- Copy operations
- Blit operations
- Readback operations
- ReadbackImage operations

The profiler is initialized in CreateDeviceObjects() and shutdown in
DestroyDeviceObjects(). Timing results are logged each frame when the
GPU profile debug overlay is enabled.

Signed-off-by: Chris Healy <cphealy@gmail.com>
2026-03-18 09:52:43 -07:00
Henrik Rydgård 5e6ec70280 Minor stuff 2026-03-01 12:09:43 +01:00
Henrik Rydgård e0c12c9547 More lint warning fixes 2024-10-10 10:52:45 +02:00
Herman Semenov dcb8b4f81b [GPU/Core/Debugger] Reduced struct sizes using align for x64 platforms, fields carefully moved
Then revert changes that aren't worth it
2024-09-16 13:32:48 +02:00
Herman Semenov 0d1f7e2e6c [Core/GL/UI] Not all fields initilize and minor code refactor 2024-04-11 15:50:42 +03:00
Henrik Rydgård 82934b9212 OpenGL queue-runner: Add command counts (debug builds only). Useful for checking optimizations. 2023-05-25 14:15:54 +02:00
Henrik Rydgård 62b41c6640 OpenGL: Add a simple pass list to gpu profiler 2023-05-24 14:08:19 +02:00
Henrik Rydgård edd208791e Add tag field to GLRFramebuffer for debugging 2023-05-24 13:47:51 +02:00
Henrik Rydgård 84da0327d6 GLQueueRunner: Make DrawIndexed parameters more consistent. 2023-05-23 17:49:11 +02:00
Henrik Rydgård cb38c43d7e GL render manager: Merge the two stencil commands, for more compact command lists 2023-05-23 09:14:23 +02:00
Henrik Rydgård 47931deda7 Switch to FastVec for commands. Slower than std::vector! 2023-05-23 08:54:41 +02:00
Henrik Rydgård 956d784bde Add FastVec, start using it for InitSteps 2023-05-23 08:54:40 +02:00
Henrik Rydgård c30895b6b4 Remove unnecessary variable 2023-05-23 08:53:48 +02:00
Henrik Rydgård e4a729d371 Remove unnecessary zero-initialization of GLRRenderCommand structs 2023-05-23 08:53:48 +02:00
Henrik Rydgård c729519cf5 Merge pull request #17442 from hrydgard/glr-render-command-shrink
Shrink the GLRRenderCommand struct from 152 to 88 bytes
2023-05-16 16:38:41 +02:00
Henrik Rydgård b27c427547 We always bind and draw together, so let's combine them to one command. 2023-05-10 10:56:25 +02:00
Henrik Rydgård c7caefe6d8 Have Draw and DrawIndexed share command and struct. Will make the next change easier. 2023-05-10 10:40:33 +02:00
Henrik Rydgård d5e0299b0b GLR: Share union struct between Draw/DrawIndex 2023-05-10 10:32:13 +02:00
Henrik Rydgård c882046251 Remove redundant render command 2023-05-10 09:23:10 +02:00
Henrik Rydgård 8f2069ef71 GLQueueRunner: Combine BindVertexBuffer with BindIndexBuffer 2023-05-10 09:23:10 +02:00
Henrik Rydgård cc16eb8321 Shrink the GLRRenderCommand struct from 152 to 88 bytes
Turns out the VR work bloated it a bit, which can't be good.

Think it's fine to allocate these view matrices on the heap to get them
out of the way, there won't be that crazy many per frame usually.
2023-05-10 00:24:17 +02:00
haoruiwang 7cbb7a09e5 [what][style][gpu] some coding style refine 2023-04-18 19:18:38 +08:00
haoruiwang 41d561895b [what][style][gpu] some coding style refine
[how]
1. use comment instead of unnecessary logic comparison
2. remove some useless code
3. move some implemention code from header to source
4. some more assert
2023-03-16 15:07:24 +08:00
Henrik Rydgård b4aa120298 OpenGL readback: Move any format convert to when the data is read.
Eliminates a copy, and will fit better with delayed readbacks.
2023-02-07 12:12:00 +01:00
Henrik Rydgård d502198aa3 Move GLFrameData out of GLRenderManager.
Small refactor to prepare for adding delayed readback support to the
OpenGL backend.
2023-02-07 12:12:00 +01:00
Henrik Rydgård 937975000b Add a ReadbackMode parameter to more functions in the FramebufferManager 2023-02-05 13:57:45 +01:00
Henrik Rydgård b62572a78f Refactor the framedata/GPU thread management. 2023-01-30 11:49:31 +01:00
Henrik Rydgård f7df69f50c Change a Crash() to an _assert_msg_ 2023-01-01 17:23:24 +01:00
Henrik Rydgård aa51bfd1ef Use GPU "use" flags to replace IsVRBuild in the renderer. It remains elsewhere. 2022-10-17 19:57:11 +02:00
Lubos fb875b94de OpenXR - Multipass rendering fixed 2022-09-04 14:01:17 +02:00
Luboš Vonásek 11a6318509 Merge branch 'hrydgard:master' into feature_openxr_stereo 2022-08-24 19:50:45 +02:00
Henrik Rydgård eb2f12e64a Drive-by texture slot management cleanup 2022-08-24 10:22:58 +02:00
Lubos ab6c91c203 OpenXR - Integrate multiview into system 2022-08-14 18:51:45 +02:00
Henrik Rydgård 6f1f482432 Make GLQueueRunner/RenderManager aware of device caps, use it to check for NPOT and some other stuff 2022-08-07 11:15:23 +02:00
Henrik Rydgård fecf9127a0 Implement 3D texturing in the OpenGL backend too. Assorted fixes. 2022-07-31 10:43:48 +02:00
Henrik Rydgård d0d53091a8 Change from maxLevel to levelsToLoad, for better readability. Cleanup. 2022-07-30 10:45:02 +02:00
Henrik Rydgård df6abe83a3 Support depth clamping in OpenGL where available.
Should make support for depth texturing quite easy.

Unfortunately, this extension does not exist on OpenGL ES. There we'll
have to use ugly tricks with gl_FragDepth if we want this.
2021-07-09 21:09:44 +02:00
Henrik Rydgård 6310af25fa Get shader color write masking going on all backends. 2020-11-08 23:45:47 +01:00
Henrik Rydgård 207b76da6e Show an error on screen if a shader fails to compile.
Part of #1 investigation of #13541
2020-11-05 08:27:13 +01:00
Henrik Rydgård f526f5977b OpenGL: Disable auto invalidation of framebuffers, it has somehow broken
(Breaks DBZ: Tag Team)
2020-10-17 12:51:45 +02:00
Henrik Rydgård 0e3a84b4a8 Move most GPU things to Common.
It works after the move, on Windows and Android at least.

Deletes the D3DX9 shader compiler loader, which was not used.
2020-10-04 23:39:02 +02:00