summaryrefslogtreecommitdiffstats
path: root/src/video_core/gpu.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* nvnflinger/gpu: implement layer stack compositionLiam2024-01-311-19/+10
|
* GPU-SMMU: Estimate game leak and preallocate device region.Fernando Sahmkow2024-01-191-2/+0
|
* GPU SMMU: Expand to 34 bitsFernando Sahmkow2024-01-191-0/+1
|
* SMMU: Initial adaptation to video_core.Fernando Sahmkow2024-01-191-13/+15
|
* NVDRV: Implement sessions and initial implementation of SMMUFernando Sahmkow2024-01-191-1/+1
|
* Query Cachge: Fully rework Vulkan's query cacheFernando Sahmkow2023-09-231-1/+3
|
* Memory Tracking: Optimize tracking to only use atomic writes when contested with the host GPUFernando Sahmkow2023-06-281-1/+9
|
* MemoryTracking: Initial setup of atomic writes.Fernando Sahmkow2023-06-281-1/+3
|
* (wall, native)_clock: Add GetGPUTickMorph2023-06-081-8/+3
| | | | Allows us to directly calculate the GPU tick without double conversion to and from the host clock tick.
* core_timing: Use CNTPCT as the guest CPU tickMorph2023-06-081-7/+7
| | | | | Previously, we were mixing the raw CPU frequency and CNTFRQ. The raw CPU frequency (1020 MHz) should've never been used as CNTPCT (whose frequency is CNTFRQ) is the only counter available.
* core: frontend: Refactor GraphicsContext to its own module.bunnei2023-06-031-0/+1
|
* GPU: Add Reactive flushingFernando Sahmkow2023-05-071-0/+19
|
* core_timing: Use higher precision sleeps on WindowsMorph2023-03-051-1/+1
| | | | | | The precision of sleep_for and wait_for is limited to 1-1.5ms on Windows. Using SleepForOneTick() allows us to sleep for exactly one interval of the current timer resolution. This allows us to take advantage of systems that have a timer resolution of 0.5ms to reduce CPU overhead in the event loop.
* Remove OnCommandListEndCommandBehunin2023-02-081-1/+1
| | | | Call rasterizer->ReleaseFences() directly
* renderer_opengl: refactor context acquireLiam2022-12-131-2/+3
|
* General: address feedbackFernando Sahmkow2022-10-061-1/+1
|
* VideoCore: Refactor fencing system.Fernando Sahmkow2022-10-061-10/+7
|
* NVDRV: Further refactors and eliminate old code.Fernando Sahmkow2022-10-061-48/+0
|
* NVDRV: Refactor Host1xFernando Sahmkow2022-10-061-25/+2
|
* VideoCore: Refactor syncing.Fernando Sahmkow2022-10-061-95/+102
|
* Texture cache: Fix the remaining issues with memory mnagement and unmapping.Fernando Sahmkow2022-10-061-0/+8
|
* NVHOST_CTRl: Implement missing method and fix some stuffs.Fernando Sahmkow2022-10-061-0/+5
|
* VideoCore: implement channels on gpu caches.Fernando Sahmkow2022-10-061-387/+81
|
* general: Convert source file copyright comments over to SPDXMorph2022-04-231-3/+2
| | | | | This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
* video_core: Replace lock_guard with scoped_lockMerry2022-04-071-3/+3
|
* Rasterizer: Refactor inlineToMemory.Fernando Sahmkow2022-02-011-4/+2
|
* GPU: Improve syncing.Fernando Sahmkow2022-01-291-3/+10
|
* Rasterizer: Implement Inline2Memory Acceleration.Fernando Sahmkow2022-01-291-0/+1
|
* Merge pull request #7636 from vonchenplus/buffer_queue_querybunnei2022-01-041-1/+0
|\ | | | | core:hle:service:nvflinger Implement few type in bufferqueue query method
| * Remove invalid header includeFeng Chen2021-12-281-1/+0
| |
* | gpu: Add shut down method to synchronize threads before destructionameerj2022-01-041-0/+10
| |
* | Revert "Merge pull request #7668 from ameerj/fence-stop-token"ameerj2022-01-041-6/+13
| | | | | | | | | | This reverts commit e7733544779f2706d108682dd027d44e7fa5ff4b, reversing changes made to abbbdc2bc027ed7af236625ae8427a46df63f7e7.
* | gpu: Use std::stop_token in WaitFence for VSync threadameerj2022-01-031-13/+6
|/ | | | Fixes a hang that may occur when stopping emulation and the VSync thread is blocked on the syncpoint condition variable.
* Address feedbackFeng Chen2021-12-041-4/+5
|
* Support multiple videos playingFeng Chen2021-12-021-30/+13
|
* nvhost_ctrl: Refactor usage of gpu.LockSync()ameerj2021-10-031-8/+1
| | | | This seems to only be used to protect a later gpu function call. So we can move the lock into that call instead.
* gpu: Migrate implementation to the cpp fileameerj2021-10-031-420/+800
|
* gpu: Use std::jthread for async gpu threadameerj2021-09-161-8/+0
|
* accelerateDMA: Accelerate Buffer Copies.Fernando Sahmkow2021-07-111-0/+1
|
* Fence Manager: Add fences on Reference Count.Fernando Sahmkow2021-07-091-1/+3
|
* video_core: gpu: WaitFence: Do not block threads during shutdown.bunnei2021-05-291-1/+11
| | | | | - Fixes a hang on shutdown when NVFlinger thread is waiting on a syncpoint that will never occur. - Commonly observed when stopping emulation in Super Mario Odyssey.
* perf_stats: Rework FPS counter to be more accurateameerj2021-05-161-0/+5
| | | | | | | | | The FPS counter was based on metrics in the nvdisp swapbuffers call. This metric would be accurate if the gpu thread/renderer were synchronous with the nvdisp service, but that's no longer the case. This commit moves the frame counting responsibility onto the concrete renderers after their frame draw calls. Resulting in more meaningful metrics. The displayed FPS is now made up of the average framerate between the previous and most recent update, in order to avoid distracting FPS counter updates when framerate is oscillating between close values. The status bar update frequency was also changed from 2 seconds to 500ms.
* nvhost_vic: Fix device closureameerj2021-04-251-3/+1
| | | | | | Implements the OnClose method of the nvhost_vic device, and removes the remnants of an older implementation. Also cleans up some of the surrounding code.
* Merge pull request #6125 from ogniK5377/nvdec-close-devbunnei2021-04-171-5/+7
|\ | | | | nvdrv: Cleanup CDMA Processor on device closure
| * Address issuesChloe Marcec2021-04-161-3/+2
| |
| * nvdrv: Cleanup CDMA Processor on device closureChloe Marcec2021-03-301-5/+8
| | | | | | | | Brings us a step closer to unifying all channels to share a common interface.
* | common: Move settings to common from core.bunnei2021-04-151-1/+1
| | | | | | | | - Removes a dependency on core and input_common from common.
* | video_core/gpu_thread: Implement a ShutDown method.Markus Wick2021-04-071-2/+2
|/ | | | | | This was implicitly done by `is_powered_on = false`, however the explicit method allows us to block until the GPU is actually gone. This should fix a race condition while removing the other subsystems while the GPU is still active.
* gpu_thread: Remove Async NVDEC placeholdersameerj2021-03-011-1/+1
| | | | This commit removes early placeholders for an implementation of async nvdec. With recent changes to the source code, the placeholders are no longer accurate, and can cause a nullptr dereference due to the nature of the cdma_pusher lifetime.
* rebase, fix name shadowing, more constameerj2021-02-131-2/+1
|
* nvdec cleanupameerj2021-02-131-2/+1
|
* gpu: Report renderer errors with exceptionsReinUsesLisp2021-02-131-4/+4
| | | | | | Instead of using a two step initialization to report errors, initialize the GPU renderer and rasterizer on the constructor and report errors through std::runtime_error.
* video_core: gpu: Implement synchronous mode using threaded GPU.bunnei2020-12-291-2/+5
|
* video_core: gpu: Refactor out synchronous/asynchronous GPU implementations.bunnei2020-12-291-5/+71
| | | | - We must always use a GPU thread now, even with synchronous GPU.
* video_core: Remove unnecessary enum class casting in logging messagesLioncash2020-12-071-5/+3
| | | | | | | fmt now automatically prints the numeric value of an enum class member by default, so we don't need to use casts any more. Reduces the line noise a bit.
* video_core: Resolve more variable shadowing scenariosLioncash2020-12-041-2/+6
| | | | | | Resolves variable shadowing scenarios up to the end of the OpenGL code to make it nicer to review. The rest will be resolved in a following commit.
* nvdrv, video_core: Don't index out of bounds when given invalid syncpoint IDcomex2020-11-241-11/+18
| | | | | | | | - Use .at() instead of raw indexing when dealing with untrusted indices. - For the special case of WaitFence with syncpoint id UINT32_MAX, instead of crashing, log an error and ignore. This is what I get when running Super Mario Maker 2.
* video_core: gpu: Implement WaitFence and IncrementSyncPoint.bunnei2020-11-011-24/+24
|
* video_core: NVDEC Implementationameerj2020-10-271-1/+10
| | | | | | | | | | | | | | This commit aims to implement the NVDEC (Nvidia Decoder) functionality, with video frame decoding being handled by the FFmpeg library. The process begins with Ioctl commands being sent to the NVDEC and VIC (Video Image Composer) emulated devices. These allocate the necessary GPU buffers for the frame data, along with providing information on the incoming video data. A Submit command then signals the GPU to process and decode the frame data. To decode the frame, the respective codec's header must be manually composed from the information provided by NVDEC, then sent with the raw frame data to the ffmpeg library. Currently, H264 and VP9 are supported, with VP9 having some minor artifacting issues related mainly to the reference frame composition in its uncompressed header. Async GPU is not properly implemented at the moment. Co-Authored-By: David <25727384+ogniK5377@users.noreply.github.com>
* video_core: Remove all Core::System references in rendererReinUsesLisp2020-09-061-2/+2
| | | | | | | | | Now that the GPU is initialized when video backends are initialized, it's no longer needed to query components once the game is running: it can be done when yuzu is booting. This allows us to pass components between constructors and in the process remove all Core::System references in the video backend.
* video_core: Initialize renderer with a GPUReinUsesLisp2020-08-221-12/+19
| | | | | Add an extra step in GPU initialization to be able to initialize render backends with a valid GPU instance.
* yuzu: Resolve C++20 deprecation warnings related to lambda capturesLioncash2020-08-031-1/+1
| | | | | C++20 deprecates capturing the this pointer via the '=' capture. Instead, we replace it or extend the capture specification.
* async shadersDavid Marcec2020-07-171-0/+2
|
* configuration: implement per-game configurations (#4098)lat9nq2020-07-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Switch game settings to use a pointer In order to add full per-game settings, we need to be able to tell yuzu to switch to using either the global or game configuration. Using a pointer makes it easier to switch. * configuration: add new UI without changing existing funcitonality The new UI also adds General, System, Graphics, Advanced Graphics, and Audio tabs, but as yet they do nothing. This commit keeps yuzu to the same functionality as originally branched. * configuration: Rename files These weren't included in the last commit. Now they are. * configuration: setup global configuration checkbox Global config checkbox now enables/disables the appropriate tabs in the game properties dialog. The use global configuration setting is now saved to the config, defaulting to true. This also addresses some changes requested in the PR. * configuration: swap to per-game config memory for properties dialog Does not set memory going in-game. Swaps to game values when opening the properties dialog, then swaps back when closing it. Uses a `memcpy` to swap. Also implements saving config files, limited to certain groups of configurations so as to not risk setting unsafe configurations. * configuration: change config interfaces to use config-specific pointers When a game is booted, we need to be able to open the configuration dialogs without changing the settings pointer in the game's emualtion. A new pointer specific to just the configuration dialogs can be used to separate changes to just those config dialogs without affecting the emulation. * configuration: boot a game using per-game settings Swaps values where needed to boot a game. * configuration: user correct config during emulation Creates a new pointer specifically for modifying the configuration while emulation is in progress. Both the regular configuration dialog and the game properties dialog now use the pointer Settings::config_values to focus edits to the correct struct. * settings: split Settings::values into two different structs By splitting the settings into two mutually exclusive structs, it becomes easier, as a developer, to determine how to use the Settings structs after per-game configurations is merged. Other benefits include only duplicating the required settings in memory. * settings: move use_docked_mode to Controls group `use_docked_mode` is set in the input settings and cannot be accessed from the system settings. Grouping it with system settings causes it to be saved with per-game settings, which may make transferring configs more difficult later on, especially since docked mode cannot be set from within the game properties dialog. * configuration: Fix the other yuzu executables and a regression In main.cpp, we have to get the title ID before the ROM is loaded, else the renderer will reflect only the global settings and now the user's game specific settings. * settings: use a template to duplicate memory for each setting Replaces the type of each variable in the Settings::Values struct with a new class that allows basic data reading and writing. The new struct Settings::Setting duplicates the data in memory and can manage global overrides per each setting. * configuration: correct add-ons config and swap settings when apropriate Any add-ons interaction happens directly through the global values struct. Swapping bewteen structs now also includes copying the necessary global configs that cannot be changed nor saved in per-game settings. General and System config menus now update based on whether it is viewing the global or per-game settings. * settings: restore old values struct No longer needed with the Settings::Setting class template. * configuration: implement hierarchical game properties dialog This sets the apropriate global or local data in each setting. * clang format * clang format take 2 can the docker container save this? * address comments and style issues * config: read and write settings with global awareness Adds new functions to read and write settings while keeping the global state in focus. Files now generated per-game are much smaller since often they only need address the global state. * settings: restore global state when necessary Upon closing a game or the game properties dialog, we need to restore all global settings to the original global state so that we can properly open the configuration dialog or boot a different game. * configuration: guard setting values incorrectly This disables setting values while a game is running if the setting is overwritten by a per game setting. * config: don't write local settings in the global config Simple guards to prevent writing the wrong settings in the wrong files. * configuration: add comments, assume less, and clang format No longer assumes that a disabled UI element means the global state is turned off, instead opting to directly answer that question. Still however assumes a game is running if it is in that state. * configuration: fix a logic error Should not be negated * restore settings' global state regardless of accept/cancel Fixes loading a properties dialog and causing the global config dialog to show local settings. * fix more logic errors Fixed the frame limit would set the global setting from the game properties dialog. Also strengthened the Settings::Setting member variables and simplified the logic in config reading (ReadSettingGlobal). * fix another logic error In my efforts to guard RestoreGlobalState, I accidentally negated the IsPowered condition. * configure_audio: set toggle_stretched_audio to tristate * fixed custom rtc and rng seed overwriting the global value * clang format * rebased * clang format take 4 * address my own review Basically revert unintended changes * settings: literal instead of casting "No need to cast, use 1U instead" Thanks, Morph! Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com> * Revert "settings: literal instead of casting " This reverts commit 95e992a87c898f3e882ffdb415bb0ef9f80f613f. * main: fix status buttons reporting wrong settings after stop emulation * settings: Log UseDockedMode in the Controls group This should have happened when use_docked_mode was moved over to the controls group internally. This just reflects this in the log. * main: load settings if the file has a title id In other words, don't exit if the loader has trouble getting a title id. * use a zero * settings: initalize resolution factor with constructor instead of casting * Revert "settings: initalize resolution factor with constructor instead of casting" This reverts commit 54c35ecb46a29953842614620f9b7de1aa9d5dc8. * configure_graphics: guard device selector when Vulkan is global Prevents the user from editing the device selector if Vulkan is the global renderer backend. Also resets the vulkan_device variable when the users switches back-and-forth between global and Vulkan. * address reviewer concerns Changes function variables to const wherever they don't need to be changed. Sets Settings::Setting to final as it should not be inherited from. Sets ConfigurationShared::use_global_text to static. Co-Authored-By: VolcaEM <volcaem@users.noreply.github.com> * main: load per-game settings after LoadROM This prevents `Restart Emulation` from restoring the global settings *after* the per-game settings were applied. Thanks to BSoDGamingYT for finding this bug. * Revert "main: load per-game settings after LoadROM" This reverts commit 9d0d48c52d2dcf3bfb1806cc8fa7d5a271a8a804. * main: only restore global settings when necessary Loading the per-game settings cannot happen after the ROM is loaded, so we have to specify when to restore the global state. Again thanks to BSoD for finding the bug. * configuration_shared: address reviewer concerns except operator overrides Dropping operator override usage in next commit. Co-Authored-By: LC <lioncash@users.noreply.github.com> * settings: Drop operator overrides from Setting template Requires using GetValue and SetValue explicitly. Also reverts a change that broke title ID formatting in the game properties dialog. * complete rebase * configuration_shared: translate "Use global configuration" Uses ConfigurePerGame to do so, since its usage, at least as of now, corresponds with ConfigurationShared. * configure_per_game: address reviewer concern As far as I understand, it prevents the program from unnecessarily copying strings. Co-Authored-By: LC <lioncash@users.noreply.github.com> Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com> Co-authored-by: VolcaEM <volcaem@users.noreply.github.com> Co-authored-by: LC <lioncash@users.noreply.github.com>
* General: Recover Prometheus project from harddrive failure Fernando Sahmkow2020-06-271-2/+3
| | | | | | | This commit: Implements CPU Interrupts, Replaces Cycle Timing for Host Timing, Reworks the Kernel's Scheduler, Introduce Idle State and Suspended State, Recreates the bootmanager, Initializes Multicore system.
* Update src/video_core/gpu.cppbunnei2020-05-051-1/+1
| | | Co-authored-by: David <25727384+ogniK5377@users.noreply.github.com>
* Update src/video_core/gpu.cppbunnei2020-05-051-1/+1
| | | Co-authored-by: David <25727384+ogniK5377@users.noreply.github.com>
* Clang Format and Documentation.Fernando Sahmkow2020-04-281-2/+4
|
* VideoCore/GPU: Delegate subchannel engines to the dma pusher.Fernando Sahmkow2020-04-281-1/+21
|
* VideoCore/Engines: Refactor Engines CallMethod.Fernando Sahmkow2020-04-281-5/+5
|
* Clang Format.Fernando Sahmkow2020-04-231-5/+7
|
* GPU: Add Fast GPU Time Option.Fernando Sahmkow2020-04-231-1/+5
|
* DMAPusher: Propagate multimethod writes into the engines.Fernando Sahmkow2020-04-231-4/+43
|
* Address Feedback.Fernando Sahmkow2020-04-221-2/+2
|
* GPU: Implement Flush Requests for Async mode.Fernando Sahmkow2020-04-221-0/+22
|
* ThreadManager: Sync async reads on accurate gpu.Fernando Sahmkow2020-04-221-1/+1
|
* OpenGL: Implement Fencing backend.Fernando Sahmkow2020-04-221-1/+1
|
* GPU: Delay Fences.Fernando Sahmkow2020-04-221-0/+4
|
* GPU: Refactor synchronization on Async GPUFernando Sahmkow2020-04-221-0/+3
|
* dma_pusher: Remove reliance on the global system instanceLioncash2020-04-191-1/+1
| | | | | With this, the video core is now has no calls to the global system instance at all.
* Frontend/GPU: Refactor context managementJames Rowe2020-03-251-4/+6
| | | | | | | | | | | | | | | | | | | | Changes the GraphicsContext to be managed by the GPU core. This eliminates the need for the frontends to fool around with tricky MakeCurrent/DoneCurrent calls that are dependent on the settings (such as async gpu option). This also refactors out the need to use QWidget::fromWindowContainer as that caused issues with focus and input handling. Now we use a regular QWidget and just access the native windowHandle() directly. Another change is removing the debug tool setting in FrameMailbox. Instead of trying to block the frontend until a new frame is ready, the core will now take over presentation and draw directly to the window if the renderer detects that its hooked by NSight or RenderDoc Lastly, since it was in the way, I removed ScopeAcquireWindowContext and replaced it with a simple subclass in GraphicsContext that achieves the same result
* video_core/gpu: Remove unused functionsReinUsesLisp2020-02-251-65/+0
|
* Revert "video_core: memory_manager: Use GPU interface for cache functions."bunnei2020-02-151-1/+1
|
* GPU: Address Feedback.Fernando Sahmkow2020-02-131-6/+8
|
* GPU: Implement GPU Clock correctly.Fernando Sahmkow2020-02-101-1/+13
|
* video_core: memory_manager: Use GPU interface for cache functions.bunnei2020-02-081-1/+1
|
* video_core: Block in WaitFence.Markus Wick2019-12-301-3/+4
| | | | | | | This function is called rarely and blocks quite often for a long time. So don't waste power and let the CPU sleep. This might also increase the performance as the other cores might be allowed to clock higher.
* Merge pull request #2912 from FernandoS27/async-fixesbunnei2019-10-161-0/+13
|\ | | | | General fixes to Async GPU
| * AsyncGpu: Address FeedbackFernando Sahmkow2019-10-111-1/+1
| |
| * GPU_Async: Correct fences, display events and more.Fernando Sahmkow2019-10-051-0/+13
| | | | | | | | | | | | | | This commit uses guest fences on vSync event instead of an articial fake fence we had. It also corrects to keep signaling display events while loading the game as the OS is suppose to send buffers to vSync during that time.
* | video_core/gpu: Remove use of the global system accessorLioncash2019-10-151-1/+1
|/ | | | | We can just make use of the reference member variable instead of accessing the global system instance.
* video_core: Implement RGBX16F PixelFormatFearlessTobi2019-09-221-0/+1
|
* Merge pull request #2793 from ReinUsesLisp/bgr565bunnei2019-09-041-12/+0
|\ | | | | renderer_opengl: Implement RGB565 framebuffer format
| * renderer_opengl: Use VideoCore pixel formatReinUsesLisp2019-08-211-12/+0
| |
* | video_core: Silent miscellaneous warnings (#2820)Rodrigo Locatti2019-08-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * texture_cache/surface_params: Remove unused local variable * rasterizer_interface: Add missing documentation commentary * maxwell_dma: Remove unused rasterizer reference * video_core/gpu: Sort member declaration order to silent -Wreorder warning * fermi_2d: Remove unused MemoryManager reference * video_core: Silent unused variable warnings * buffer_cache: Silent -Wreorder warnings * kepler_memory: Remove unused MemoryManager reference * gl_texture_cache: Add missing override * buffer_cache: Add missing include * shader/decode: Remove unused variables
* | GPU: Flush commands on every dma pusher step.Fernando Sahmkow2019-07-261-0/+4
|/ | | | | | This commit ensures that the host gpu is constantly fed with commands to work with, while the guest gpu keeps producing the rest of the commands. This reduces syncing time between host and guest gpu.
* Merge pull request #2592 from FernandoS27/sync1bunnei2019-07-261-1/+47
|\ | | | | Implement GPU Synchronization Mechanisms & Correct NVFlinger
| * NVServices: Styling, define constructors as explicit and correctionsFernando Sahmkow2019-07-051-11/+14
| |
| * NVFlinger: Correct GCC compile errorFernando Sahmkow2019-07-051-4/+2
| |
| * NVServices: Make NVEvents Automatic according to documentation.Fernando Sahmkow2019-07-051-2/+5
| |
| * GPU: Correct Interrupts to interrupt on syncpt/value instead of event, mirroring hardwareFernando Sahmkow2019-07-051-15/+15
| |
| * nv_host_ctrl: Make Sync GPU variant always return synced result.Fernando Sahmkow2019-07-051-2/+2
| |
| * Gpu: use an std mutex instead of a spin_lock to guard syncpointsFernando Sahmkow2019-07-051-2/+2
| |
| * Gpu: Mark areas as protected.Fernando Sahmkow2019-07-051-0/+2
| |
| * nv_services: Stub CtrlEventSignalFernando Sahmkow2019-07-051-0/+11
| |
| * Gpu: Implement Hardware Interrupt Manager and manage GPU interruptsFernando Sahmkow2019-07-051-1/+6
| |
| * video_core: Implement GPU side SyncpointsFernando Sahmkow2019-07-051-0/+24
| |
* | Merge pull request #2743 from FernandoS27/surpress-assertbunnei2019-07-251-13/+7
|\ \ | | | | | | Downgrade and suppress a series of GPU asserts and debug messages.
| * | GPU: Add missing puller methods.Fernando Sahmkow2019-07-181-13/+7
| | | | | | | | | | | | | | | This adds some missing puller methods. We don't assert them as these are nop operations for us.
* | | gl_rasterizer: Implement compute shadersReinUsesLisp2019-07-151-0/+8
|/ /
* / prefer system reference over global accessorMichael Scire2019-07-091-1/+1
|/
* Introduce skeleton of the GPU Compute Engine.Fernando Sahmkow2019-04-231-1/+1
|
* Revamp Kepler Memory to use a subegine to manage uploadsFernando Sahmkow2019-04-231-1/+1
|
* memory_manager: Improved implementation of read/write/copy block.bunnei2019-04-061-1/+1
| | | | | - Fixes graphical issues with Chocobo's Mystery Dungeon EVERY BUDDY! - Fixes a crash with Mario Tennis Aces
* video_core/gpu: Amend typo in GPU member variable nameLioncash2019-03-271-4/+5
| | | | smaphore -> semaphore
* gpu: Rewrite virtual memory manager using PageTable.bunnei2019-03-211-3/+4
|
* video_core: Refactor to use MemoryManager interface for all memory access.bunnei2019-03-161-9/+4
| | | | | | | | | | | # Conflicts: # src/video_core/engines/kepler_memory.cpp # src/video_core/engines/maxwell_3d.cpp # src/video_core/morton.cpp # src/video_core/morton.h # src/video_core/renderer_opengl/gl_global_cache.cpp # src/video_core/renderer_opengl/gl_global_cache.h # src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
* gpu: Refactor a/synchronous implementations into their own classes.bunnei2019-03-071-48/+0
|
* gpu: Move command processing to another thread.bunnei2019-03-071-3/+41
|
* gpu: Refactor command and swap buffers interface for asynch.bunnei2019-03-071-0/+10
|
* gpu: Refactor to take RendererBase instead of RasterizerInterface.bunnei2019-03-071-2/+3
|
* video_core: Remove usages of System::GetInstance() within the enginesLioncash2019-02-161-4/+4
| | | | | Avoids the use of the global accessor in favor of explicitly making the system a dependency within the interface.
* core_timing: Convert core timing into a classLioncash2019-02-161-1/+2
| | | | | | | | | | | Gets rid of the largest set of mutable global state within the core. This also paves a way for eliminating usages of GetInstance() on the System class as a follow-up. Note that no behavioral changes have been made, and this simply extracts the functionality into a class. This also has the benefit of making dependencies on the core timing functionality explicit within the relevant interfaces.
* Merge pull request #2099 from greggameplayer/BGRA8-Framebuffer-Realbunnei2019-02-131-0/+1
|\ | | | | Implement BGRA8 framebuffer format
| * Implement BGRA8 framebuffer formatgreggameplayer2019-02-091-0/+1
| |
* | Merge pull request #2110 from lioncash/namespacebunnei2019-02-131-1/+1
|\ \ | | | | | | core_timing: Rename CoreTiming namespace to Core::Timing
| * | core_timing: Rename CoreTiming namespace to Core::TimingLioncash2019-02-121-1/+1
| |/ | | | | | | | | | | Places all of the timing-related functionality under the existing Core namespace to keep things consistent, rather than having the timing utilities sitting in its own completely separate namespace.
* / kepler_compute: Fixup assert and rename enginesReinUsesLisp2019-02-101-4/+4
|/ | | | | | | | | | When I originally added the compute assert I used the wrong documentation. This addresses that. The dispatch register was tested with homebrew against hardware and is triggered by some games (e.g. Super Mario Odyssey). What exactly is missing to get a valid program bound by this engine requires more investigation.
* video_core/GPU Implemented the GPU PFIFO puller semaphore operations. (#1908)Kevin2019-01-301-12/+171
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Implemented the puller semaphore operations. * Nit: Fix 2 style issues * Nit: Add Break to default case. * Fix style. * Update for comments. Added ReferenceCount method * Forgot to remove GpuSmaphoreAddress union. * Fix the clang-format issues. * More clang formatting. * two more white spaces for the Clang formatting. * Move puller members into the regs union * Updated to use Memory::WriteBlock instead of Memory::Write* * Fix clang style issues * White space clang error * Removing unused funcitons and other pr comment * Removing unused funcitons and other pr comment * More union magic for setting regs value. * union magic refcnt as well * Remove local var * Set up the regs and regs_assert_positions up properly * Fix clang error
* Fixed uninitialized memory due to missing returns in canaryDavid Marcec2018-12-191-0/+2
| | | | Functions which are suppose to crash on non canary builds usually don't return anything which lead to uninitialized memory being used.
* GPU: Don't try to route PFIFO methods (0-0x40) to the other engines.Subv2018-12-041-0/+6
|
* Fix debug buildLioncash2018-12-011-4/+2
| | | | | A non-existent parameter was left in some formatting calls (the logging macro for which only does anything meaningful on debug builds)
* gpu: Move command list profiling to DmaPusher::DispatchCalls.bunnei2018-11-281-5/+0
|
* gpu: Rewrite GPU command list processing with DmaPusher class.bunnei2018-11-271-0/+58
| | | | - More accurate impl., fixes Undertale (among other games).
* Use default values for unknown framebuffer pixel formatFernandoS272018-11-211-0/+2
|
* GPU: Improved implementation of maxwell DMA (Subv).bunnei2018-10-191-1/+1
|
* GPU: Invalidate destination address of kepler_memory writes.bunnei2018-10-191-1/+1
|
* fermi_2d: Implement simple copies with AccelerateSurfaceCopy.bunnei2018-10-061-1/+1
|
* GPU: Basic implementation of the Kepler Inline Memory engine (p2mf).Subv2018-09-121-0/+2
| | | | This engine writes data from a FIFO register into the configured address.
* gl_rasterizer_cache: Implement RenderTargetFormat::BGRA8_SRGB.bunnei2018-09-101-0/+1
| | | | - Used by Octopath Traveler (with multiple render targets).
* gpu: Make memory_manager privateLioncash2018-08-281-3/+11
| | | | | | | | | | Makes the class interface consistent and provides accessors for obtaining a reference to the memory manager instance. Given we also return references, this makes our more flimsy uses of const apparent, given const doesn't propagate through pointers in the way one would typically expect. This makes our mutable state more apparent in some places.
* Implemented RGBA8_UINTDavid Marcec2018-08-201-0/+1
| | | | Needed by kirby
* renderer_opengl: Implement RenderTargetFormat::RGBA16_UNORM.bunnei2018-08-141-0/+1
| | | | - Used by Breath of the Wild.
* Implement RG32UI and R32UIDavid Marcec2018-08-131-0/+2
| | | | Needed for xenoblade
* renderer_opengl: Implement RenderTargetFormat::RGBA16_UINT.bunnei2018-08-131-0/+1
| | | | - Used by Breath of the Wild.
* renderer_opengl: Implement RenderTargetFormat::RG8_UNORM.bunnei2018-08-131-0/+1
| | | | - Used by Breath of the Wild.
* Implement R8_UINT RenderTargetFormat & PixelFormat (#1014)greggameplayer2018-08-121-0/+1
| | | | - Used by Go Vacation
* gl_rasterizer: Implement render target format RG8_SNORM.bunnei2018-08-121-0/+1
| | | | - Used by Super Mario Odyssey.
* gl_rasterizer: Implement render target format RGBA8_SNORM.bunnei2018-08-121-0/+1
| | | | - Used by Super Mario Odyssey.
* Merge pull request #1016 from lioncash/videobunnei2018-08-111-0/+10
|\ | | | | video_core: Get rid of global variable g_toggle_framelimit_enabled
| * video_core; Get rid of global g_toggle_framelimit_enabled variableLioncash2018-08-111-0/+10
| | | | | | | | | | | | | | | | | | Instead, we make a struct for renderer settings and allow the renderer to update all of these settings, getting rid of the need for global-scoped variables. This also uncovered a few indirect inclusions for certain headers, which this commit also fixes.
* | Implement R16S & R16UI & R16I RenderTargetFormats & PixelFormats and more (R16_UNORM needed by Fate Extella) (#848)greggameplayer2018-08-111-0/+32
|/ | | | | | | | | | | | | | | * Implement R16S & R16UI & R16I RenderTargetFormats & PixelFormats Do a separate function in order to get Bytes Per Pixel of DepthFormat Apply the new function in gpu.h delete unneeded white space * correct merging error
* gpu: Add R11G11B10_FLOAT to RenderTargetBytesPerPixel.bunnei2018-08-081-0/+1
| | | | - Used by Super Mario Odyssey.
* video_core: Eliminate the g_renderer global variableLioncash2018-08-041-2/+3
| | | | | | | | | | | | | | We move the initialization of the renderer to the core class, while keeping the creation of it and any other specifics in video_core. This way we can ensure that the renderer is initialized and doesn't give unfettered access to the renderer. This also makes dependencies on types more explicit. For example, the GPU class doesn't need to depend on the existence of a renderer, it only needs to care about whether or not it has a rasterizer, but since it was accessing the global variable, it was also making the renderer a part of its dependency chain. By adjusting the interface, we can get rid of this dependency.
* Implement R32_FLOAT RenderTargetFormatUnknown2018-08-011-0/+1
|
* gl_rasterizer_cache: Implement RenderTargetFormat RG32_FLOAT.bunnei2018-07-241-0/+1
|
* gl_rasterizer_cache: Implement RenderTargetFormat BGRA8_UNORM.bunnei2018-07-241-0/+1
|
* gpu: Rename Get3DEngine() to Maxwell3D()Lioncash2018-07-211-1/+5
| | | | This makes it match its const qualified equivalent.
* GPU: Partially implemented the Maxwell DMA engine.Subv2018-06-121-0/+2
| | | | Only tiled->linear and linear->tiled copies that aren't offsetted are supported for now. Queries are not supported. Swizzled copies are not supported.
* GPU: Allow the usage of RGBA16_FLOAT in the texture copy engine.Subv2018-06-061-0/+2
|
* GPU: Allow the usage of RGBA32_FLOAT in the texture copy engine.Subv2018-06-061-0/+2
|
* general: Convert assertion macros over to be fmt-compatibleLioncash2018-04-271-1/+1
|
* GPU: Added a function to retrieve the bytes per pixel of the render target formats.Subv2018-04-251-0/+12
|
* GPU: Added boilerplate code for the Fermi2D engineSubv2018-04-251-1/+1
|
* Frontend: Ported the GPU breakpoints and surface viewer widgets from citra.Subv2018-03-241-0/+4
|
* GPU: Move the GPU's class constructor and destructors to a cpp file.Subv2018-03-181-0/+21
This should reduce recompile times when editing the Maxwell3D register structure.