summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends
AgeCommit message (Collapse)Author
2018-03-16Assert: Remove unused parameter from DEBUG_ASSERTLioncash
This brings the macro in line with the regular ASSERT macro, which only has one macro parameter.
2018-03-17D3D: Fix broken bounding boxStenzek
2018-03-14Assert: Uppercase assertion macrosLioncash
Macros should be all upper-cased. This is also kind of a wart that's been sticking out for quite a while now (we avoid prefixing underscores).
2018-03-15OGL: Ensure VAO is active before unmapping buffersStenzek
Fixes a crash which could occur in platforms which do not support buffer_storage, and EFB2RAM is enabled (which indirectly uses the attributeless buffer).
2018-03-14Vulkan: Provide a more accurate method of detecting drivers/vendorsStenzek
This is needed to differentiate between the open-source Mesa drivers and their binary counterparts for Intel and AMD.
2018-03-12OGL: Scale OSD text on big screens.degasus
2018-03-12OGL: Warn if buffer_storage isn't available.degasus
Yes, this commit is only to blame OSX and Mali. Through the former supports unsynchronized mappings, the latter supports *no* way to stream dynamic data at all. Let's try to make bad news, as they ignore friendly feature requests. Maybe we just need to make more noise...
2018-03-10OGL: Move primitive restart enable logic to GLUtilStenzek
2018-03-10GLUtil: Encapsulate functions in a namespaceStenzek
2018-03-10OGL: Add some basic state trackingStenzek
We would want to improve the granularity here in the future, but for now, this should avoid any performance loss from switching to the VideoCommon shader cache.
2018-03-10OGL: Re-implement async shader compilingStenzek
2018-03-10Move shader caches to VideoCommonStenzek
2018-03-10VKShader: Fix incorrect loading of binary shadersStenzek
2018-03-10D3D: Make NativeVertexFormat thread safeStenzek
2018-03-10D3D: Make StateCache thread safeStenzek
2018-03-10AbstractPipeline: Allow setting pipeline to nullStenzek
2018-03-10VKPipeline: Fix render pass and add pipeline layout fieldsStenzek
2018-03-10OGL: Fix abstract pipelines on drivers without binding layout supportStenzek
2018-03-10OGL: Make ProgramShaderCache thread safeStenzek
2018-03-02VideoCommon: Add support for Abstract FramebuffersStenzek
2018-03-01AbstractTexture: Add support for depth textures/formatsStenzek
2018-03-01AbstractTexture: Support multisampled abstract textureStenzek
2018-03-01VideoBackends: Restore the framebuffer as part of the API stateStenzek
It's not often we switch out to draw to the EFB anyway.
2018-03-01Vulkan: Fix broken post-processingStenzek
2018-02-25OGL: Use glBufferData on Mali.Markus Wick
tl;dr: This PR speedups dolphin on mobiles with the Mali GPU and ES 3.2 drivers by a factor of 10 by using the method with the biggest overhead. Please keep care not to buy this shit! The ARM driver team seems to care very well about their customers. But bad luck, users and open source developers are *not* their customers. So even device-independent feature requests are just ignored for *years*: https://community.arm.com/graphics/f/discussions/4645/gl_ext_buffer_storage-support The bad point, they neither implement any of the other common ways to stream dynamic content in unextented GL: - They just ignore the GL_MAP_UNSYNCHRONIZED_BIT flag - They don't support on-device buffer updates and just stall with glBufferSubData It seems like no benchmark is using any dynamic content - and like no customer cares about anything but benchmarks, or users... We have a flag to disable the glBufferSubData way, this PR adds the flag to also disable the unsychronized mapping way. The second one is available since their ES 3.2 update, but slow as hell. So how to continue? The last remaining technical way to stream dynamic content at all is to alloc a new buffer per draw call with glBufferData. This is very gross, but still a factor 10 speedup compared to stalling the GPU. Small tests shows that you can expect another 3-5 times speedup with EXT_buffer_data, so Mali would be on pair with Adreno here. So if you have bought such a device unfortunately, please try to make noise on your vendor forums/support and ask for this extension. If you are going to buy a new mobile, I'd recormend to avoid *any* mobile with a Mali GPU in it.
2018-02-25OGL: Only create bad shader files in Dump when compile failedStenzek
Warnings are still logged.
2018-02-23Merge pull request #6042 from stenzek/videocommon-pipelinesAnthony
VideoCommon pipelines ("Abstract Pipeline")
2018-02-23OGL: Call GLInterface->Update() on window resizeStenzek
macOS in particular requires the context be updated manually when the window is resized.
2018-02-22VideoBackends: Add AbstractShader and AbstractPipeline classesStenzek
2018-02-22D3D: Remove state stack from tracker, set explicitly insteadStenzek
2018-02-22D3D: Support state tracking of compute shadersStenzek
2018-02-22D3D: Support compiling compute shadersStenzek
2018-02-22GLUtil: Drop now-unused attributeless VAO helpersStenzek
2018-02-22OGL: Log warnings from shader compiles, even if it compiled successfullyStenzek
2018-02-22OGL: Track state of last bound vertex array objectStenzek
This reduces the overhead of calling glBindVertexArray() every time RestoreAPIState() is called, even when it is redundant.
2018-02-19Merge pull request #6367 from stenzek/gl-flushMarkus Wick
OGL: Use explicit flush instead of GL_SYNC_FLUSH_COMMANDS_BIT
2018-02-20Renderer: Handle resize events on-demand instead of pollingStenzek
We now differentiate between a resize event and surface change/destroyed event, reducing the overhead for resizes in the Vulkan backend. It is also now now safe to change the surface multiple times if the video thread is lagging behind.
2018-02-20OGL: Clear backbuffer before presenting instead of at start of frameStenzek
2018-02-20BPFunctions: Move upscaling of scissor rect to VideoCommonStenzek
2018-02-20BPFunctions: Move GX viewport conversion to VideoCommonStenzek
2018-02-14Vulkan: Remove redundant YUYV conversion shadersStenzek
These are no longer used as of hybrid XFB.
2018-02-11VideoConfig: Remove bForceCopyToRam fieldStenzek
It's the inverse of supports-copy-to-vram.
2018-02-09OGL: Use explicit flush instead of GL_SYNC_FLUSH_COMMANDS_BITStenzek
2018-02-09OGL: Don't leave staging texture buffer bound after mappingStenzek
This could cause glReadPixels() calls which assume no buffer is bound (e.g. CPU EFB access) to fail. The problem was limited to devices which don't support persistent mapping, as the map path is not otherwise.
2018-02-07Merge pull request #6334 from stenzek/startupAnthony
Video Backend Initialization/Core Boot Improvements
2018-02-07Merge pull request #6333 from stenzek/vulkan-transitionAnthony
Vulkan: Fix invalid stage mask in layout transitions
2018-02-05Do not link to libusbhid on FreeBSD/NetBSDGreg V
Both libusbhid (system library) and libhidapi (3rd party library) provide a function called hid_init. Dolphin was being linked to both. The WiimoteScannerHidapi constructor was calling hid_init without arguments. libusbhid's hid_init expects one argument (a file path). It was being called as if it was defined without arguments, which resulted in a garbage path being passed in, and because of that, the Qt GUI was failing to launch with the following error: 'dolphin-emu-qt2: @ : No such file or directory'
2018-02-01BPMemory: Handle fog configuration where both A and C are infinity/NaNStenzek
The console appears to behave against standard IEEE754 specification here, in particular around how NaNs are handled. NaNs appear to have no effect on the result, and are treated the same as positive or negative infinity, based on the sign bit. However, when the result would be NaN (inf - inf, or (-inf) - (-inf)), this results in a completely fogged color, or unfogged color respectively. We handle this by returning a constant zero for the A varaible, and positive or negative infinity for C depending on the sign bits of the A and C registers. This ensures that no NaN value is passed to the GPU in the first place, and that the result of the fog calculation cannot be NaN.
2018-01-29Merge pull request #6303 from TraceBullet/auto-adjust-window-sizeStenzek
Fix Auto-Adjust Window Size option making the window too large
2018-01-27VideoBackend: Remove PeekMessages methodStenzek
The video thread and backend no longer create any windows, therefore there will never be any messages dispatched to their thread.