summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_base.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* chore: make yuzu REUSE compliantAndrea Pappacoda2022-07-271-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [REUSE] is a specification that aims at making file copyright information consistent, so that it can be both human and machine readable. It basically requires that all files have a header containing copyright and licensing information. When this isn't possible, like when dealing with binary assets, generated files or embedded third-party dependencies, it is permitted to insert copyright information in the `.reuse/dep5` file. Oh, and it also requires that all the licenses used in the project are present in the `LICENSES` folder, that's why the diff is so huge. This can be done automatically with `reuse download --all`. The `reuse` tool also contains a handy subcommand that analyzes the project and tells whether or not the project is (still) compliant, `reuse lint`. Following REUSE has a few advantages over the current approach: - Copyright information is easy to access for users / downstream - Files like `dist/license.md` do not need to exist anymore, as `.reuse/dep5` is used instead - `reuse lint` makes it easy to ensure that copyright information of files like binary assets / images is always accurate and up to date To add copyright information of files that didn't have it I looked up who committed what and when, for each file. As yuzu contributors do not have to sign a CLA or similar I couldn't assume that copyright ownership was of the "yuzu Emulator Project", so I used the name and/or email of the commit author instead. [REUSE]: https://reuse.software Follow-up to 01cf05bc75b1e47beb08937439f3ed9339e7b254
* bootmanager: Don't create another screenshot request if previous one is not done yetgerman772022-04-181-0/+3
|
* general: Replace NonCopyable struct with equivalentsLioncash2022-02-021-2/+6
|
* renderers: Add explicit invert_y bool to screenshot callbackameerj2021-07-291-2/+2
| | | | OpenGL and Vulkan images render in different coordinate systems. This allows us to specify the coordinate system of the screenshot within each renderer
* renderer_base: Removed redundant settingsameerj2021-07-241-3/+0
| | | | | use_framelimiter was not being used internally by the renderers. set_background_color was always set to true as there is no toggle for the renderer background color, instead users directly choose the color of their choice.
* video_core: Add GPU vendor name to window title barameerj2021-06-211-0/+2
|
* gpu: Report renderer errors with exceptionsReinUsesLisp2021-02-131-15/+2
| | | | | | 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.
* render_base: Make use of [[nodiscard]] where applicableLioncash2020-11-171-11/+11
|
* renderer_opengl: Remove emulated mailbox presentationReinUsesLisp2020-09-201-5/+0
| | | | | Emulated mailbox presentation was causing performance issues on Nvidia's OpenGL driver. Remove it.
* video_core: Initialize renderer with a GPUReinUsesLisp2020-08-221-3/+14
| | | | | Add an extra step in GPU initialization to be able to initialize render backends with a valid GPU instance.
* Frontend/GPU: Refactor context managementJames Rowe2020-03-251-1/+2
| | | | | | | | | | | | | | | | | | | | 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
* renderer_opengl: Add texture mailbox support for presenter thread.bunnei2020-02-261-3/+7
|
* gpu: Change optional<reference_wrapper<T>> to T* for FramebufferConfigReinUsesLisp2019-08-211-2/+1
|
* yuzu, video_core: Screenshot functionalityzhupengfei2018-12-181-0/+27
| | | | Allows capturing screenshot at the current internal resolution (native for software renderer), but a setting is available to capture it in other resolutions. The screenshot is saved to a single PNG in the current layout.
* global: Use std::optional instead of boost::optional (#1578)Frederic L2018-10-301-2/+4
| | | | | | | | | | | | | | | | * get rid of boost::optional * Remove optional references * Use std::reference_wrapper for optional references * Fix clang format * Fix clang format part 2 * Adressed feedback * Fix clang format and MacOS build
* Port Citra #4047 & #4052: add change background color supporttech4me2018-09-091-0/+1
|
* renderer_base: Make creation of the rasterizer, the responsibility of the renderers themselvesLioncash2018-08-211-3/+0
| | | | | | | | | | | | | | | | | | | Given we use a base-class type within the renderer for the rasterizer (RasterizerInterface), we want to allow renderers to perform more complex initialization if they need to do such a thing. This makes it important to reserve type information. Given the OpenGL renderer is quite simple settings-wise, this is just a simple shuffling of the initialization code. For something like Vulkan however this might involve doing something like: // Initialize and call rasterizer-specific function that requires // the full type of the instance created. auto raster = std::make_unique<VulkanRasterizer>(some, params); raster->CallSomeVulkanRasterizerSpecificFunction(); // Assign to base class variable rasterizer = std::move(raster)
* core: Namespace EmuWindowLioncash2018-08-121-2/+4
| | | | Gets the class out of the global namespace.
* video_core; Get rid of global g_toggle_framelimit_enabled variableLioncash2018-08-111-5/+16
| | | | | | | | | 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.
* renderer_base: Remove unused kFramebuffer enumerationLioncash2018-08-111-3/+0
| | | | This is entirely unused and can be removed.
* renderer_base: Make Rasterizer() return the rasterizer by referenceLioncash2018-08-041-2/+6
| | | | | | | All calling code assumes that the rasterizer will be in a valid state, which is a totally fine assumption. The only way the rasterizer wouldn't be is if initialization is done incorrectly or fails, which is checked against in System::Init().
* video_core: Eliminate the g_renderer global variableLioncash2018-08-041-2/+6
| | | | | | | | | | | | | | 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.
* video_core: Make global EmuWindow instance part of the base renderer classLioncash2018-08-021-9/+6
| | | | | | | | | | | Makes the global a member of the RendererBase class. We also change this to be a reference. Passing any form of null pointer to these functions is incorrect entirely, especially given the code itself assumes that the pointer would always be in a valid state. This also makes it easier to follow the lifecycle of instances being used, as we explicitly interact the renderer with the rasterizer, rather than it just operating on a global pointer.
* video_core: Move FramebufferInfo to FramebufferConfig in GPU.bunnei2018-03-231-31/+2
|
* renderer: Create rasterizer and cleanup.bunnei2018-03-231-1/+6
|
* renderer_opengl: Support framebuffer flip vertical.bunnei2018-02-121-0/+1
|
* renderer: Render previous frame when no new one is available.bunnei2018-01-151-1/+2
|
* Remove references to PICA and rasterizers in video_coreJames Rowe2018-01-131-6/+1
|
* renderer_opengl: Support rendering Switch framebuffer.bunnei2018-01-111-2/+5
|
* render_base: Add a struct describing framebuffer metadata.bunnei2018-01-111-0/+26
|
* Remove empty newlines in #include blocks.Emmanuel Gil Peyrot2016-09-211-2/+0
| | | | | | | This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation.
* Manually tweak source formatting and then re-run clang-formatYuri Kunde Schlesner2016-09-191-2/+1
|
* Sources: Run clang-format on everything.Emmanuel Gil Peyrot2016-09-181-8/+3
|
* Merge pull request #1474 from lioncash/rendererbunnei2016-03-091-9/+9
|\ | | | | renderer_base: Minor changes
| * renderer_base: In-class initialize variablesLioncash2016-03-091-5/+2
| |
| * render_base: Clarify/normalize getter functionsLioncash2016-03-091-2/+2
| |
| * renderer_base: Don't directly expose the rasterizer unique_ptrLioncash2016-03-091-2/+5
| | | | | | | | | | There's no reason to allow direct access to the unique_ptr instance. Only its contained pointer.
* | Improve error report from Init() functionsLittleWhite2016-03-081-1/+1
|/ | | | Add error popup when citra initialization failed
* VideoCore: Unify interface to OpenGL and SW rasterizersYuri Kunde Schlesner2015-12-081-2/+6
| | | | | | This removes explicit checks sprinkled all over the codebase to instead just have the SW rasterizer expose an implementation with no-ops for most operations.
* Core: Cleanup hw includes.Emmanuel Gil Peyrot2015-06-281-0/+2
|
* CitraQt: Cleanup includes.Emmanuel Gil Peyrot2015-06-281-0/+2
|
* OpenGL renderertfarley2015-05-231-0/+4
|
* Common: Remove common.hYuri Kunde Schlesner2015-05-071-1/+1
|
* License changepurpasmart962014-12-211-1/+1
|
* Remove trailing spaces in every file but the ones imported from SkyEye, AOSP or generatedEmmanuel Gil Peyrot2014-11-191-1/+1
|
* Remove virtual inheritance from RendererOpenGLYuri Kunde Schlesner2014-10-121-1/+1
| | | | Also make destructor virtual so that instances are properly destructed.
* removed DISALLOW_COPY_AND_ASSIGN in favor of NonCopyable classbunnei2014-04-281-3/+1
|
* fixed project includes to use new directory structurebunnei2014-04-091-2/+1
|
* got rid of 'src' folders in each sub-projectbunnei2014-04-091-0/+58