summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/ShaderCache.cpp
AgeCommit message (Collapse)Author
2024-08-15Use 'contains' methodmitaclaw
2024-01-31VideoCommon/Statistics: Remove global system accessor from s_after_frame_eventLioncash
Instead, we make the event take a reference to the system and then pass it in when the event is triggered. This does introduce two other accessors, but these are much easier to refactor out over time, and without modification to the existing event interface.
2023-08-20VideoCommon: uber pixel shader gen changes needed to support custom pixel ↵iwubcode
shaders in graphics mods
2023-08-20VideoCommon: pixel shader gen changes needed to support custom pixel shaders ↵iwubcode
in graphics mods
2023-04-19Common/LinearDiskCache: Move interface into Common namespaceLioncash
Gets the interface out of the global namespace.
2023-04-12Resolve [-Wclass-memaccess]Minty-Meeo
2023-02-09Suppress memcpy writing to an object with no trivial copy-assignment warningsPokechu22
We need to copy padding in most of these cases, and the objects are trivially copyable; however, BitField prevents trivial copy-assignment.
2023-02-09Merge pull request #11522 from phire/KillRendererWithFireScott Mansell
Kill Renderer (with phire)
2023-02-09Lint fixesScott Mansell
2023-01-31Split out everying remaining from SwapScott Mansell
2023-01-31Replace BeginUI/EndUIScott Mansell
2023-01-31Split AbstractGfx out of RendererScott Mansell
Almost all the virtual functions in Renderer are part of dolphin's "graphics api abstraction layer", which has slowly formed over the last decade or two. Most of the work was done previously with the introduction of the various "AbstractX" classes, associated with texture cache cleanups and implementation of newer graphics APIs (Direct3D 12, Vulkan, Metal). We are simply taking the last step and yeeting these functions out of Renderer. This "AbstractGfx" class is now completely agnostic of any details from the flipper/hollywood GPU we are emulating, though somewhat specialized. (Will not build, this commit only contains changes outside VideoBackends)
2023-01-31Move Presenting, Dumping and ImGui out of RendererScott Mansell
2023-01-30VideoCommon: Better logic op invert approximationTellowKrinkle
2022-10-22VideoCommon: Add vertex shader point and line expansionTellowKrinkle
2022-09-19VideoCommon: Add separate pipeline usage for UberShadersTellowKrinkle
2022-09-19VideoCommon: Compile a few extra pipelinesTellowKrinkle
2022-09-19VideoCommon: Add dynamic vertex loader to ubershadersTellowKrinkle
2022-07-15VideoCommon: Always use fbfetch in ubershaders if availableTellowKrinkle
Reduce the number of different pipelines needed. Also works around drivers that break when you combine fbfetch with dual source blending
2022-07-13VideoCommon: Better driver bug handlingTellowKrinkle
Adds a pass to process driver deficiencies between UID caching and use, allowing a full view of the whole pipeline, since some bugs/workarounds involve interactions between blend modes and the pixel shader
2022-07-09ShaderCache: Fix inverted usage of palette_format.Admiral H. Curtiss
2022-07-02Merge pull request #8467 from CookiePLMonster/interruptable-shader-precompileAdmiral H. Curtiss
Make shader precompilation interruptable
2022-06-17VideoCommon:ShaderCache: Add const to some local variablesTellowKrinkle
2022-06-16VideoCommon: Name ubershadersTellowKrinkle
2022-06-16VideoCommon: Reduce duplicates of non-palette-requiring texture decode shadersTellowKrinkle
2022-06-10Clear the UI after async shader compilationSilent
2022-06-10Allow to interrupt shader precompilation by stopping emulationSilent
2022-01-29IOFile: Make origin parameter to Seek() an enum class.Admiral H. Curtiss
2022-01-01VideoCommon: Add names for textures and shadersPokechu22
2021-12-22Merge pull request #10215 from OatmealDome/shader-logic-opsJMC47
VideoCommon: Support shader logic ops on Metal (Apple GPUs) and OpenGL ES
2021-12-18Eliminate VarType for ComponentFormatPokechu22
2021-12-06ShaderCache: Don't turn on logic ops approximation if framebuffer fetch is ↵OatmealDome
supported
2021-10-26Externals: Update imgui to 1.85Pokechu22
2021-07-28Convert ShaderHostConfig to BitFieldPokechu22
2021-07-05treewide: convert GPLv2+ license info to SPDX tagsPierre Bourdon
SPDX standardizes how source code conveys its copyright and licensing information. See https://spdx.github.io/spdx-spec/1-rationale/ . SPDX tags are adopted in many large projects, including things like the Linux kernel.
2021-03-06Convert BPMemory to BitField and enum classPokechu22
Additional changes: - For TevStageCombiner's ColorCombiner and AlphaCombiner, op/comparison and scale/compare_mode have been split as there are different meanings and enums if bias is set to compare. (Shift has also been renamed to scale) - In TexMode0, min_filter has been split into min_mip and min_filter. - In TexImage1, image_type is now cache_manually_managed. - The unused bit in GenMode is now exposed. - LPSize's lineaspect is now named adjust_for_aspect_ratio.
2020-12-16Fix -Wclass-memaccess warningsLéo Lam
We want to clear/memset the padding bytes, not just each member, so using assignment or {} initialization is not an option. To silence the warnings, cast the object pointer to u8* (which is not undefined behavior) to make it explicit to the compiler that we want to fill the object representation.
2020-11-17VideoCommon: Migrate over to fmtLioncash
Migrates off the printf-based formatting where applicable.
2020-05-25VideoCommon/ShaderGenCommon: Make template functions regular functionsLioncash
These are only ever used with ShaderCode instances and nothing else. Given that, we can convert these helper functions to expect that type of object as an argument and remove the need for templates, improving compiler throughput a marginal amount, as the template instantiation process doesn't need to be performed. We can also move the definitions of these functions into the cpp file, which allows us to remove a few inclusions from the ShaderGenCommon header. This uncovered a few instances of indirect inclusions being relied upon in other source files. One other benefit is this allows changes to be made to the definitions of the functions without needing to recompile all translation units that make use of these functions, making change testing a little quicker. Moving the definitions into the cpp file also allows us to completely hide DefineOutputMember() from external view, given it's only ever used inside of GenerateVSOutputMembers().
2020-01-23VideoCommon/TextureConversionShader: Convert over to using ShaderCodeLioncash
Migrates the shader generator off the use of a global array, eliminating the use of some global state. This also allows us to move the shader generation over to using fmt in a subsequent change.
2019-10-01ShaderCache: EFB2RAM pipelines should not use a geometry shaderStenzek
Only the left eye is used when creating the RAM copy.
2019-10-01ShaderCache: Recompile shared pipelines on shader cache reloadStenzek
Fixes broken stereoscopy when switching on/off at runtime.
2019-08-04RenderState: Approximate logic op with blending if unsupportedStenzek
This is a giant hack which was previously removed because it causes broken rendering. However, it seems that some devices still do not support logical operations (looking at you, Adreno/Mali). Therefore, for a handful of cases where the hack actually makes things slightly better, we can use it. ... but not without spamming the log with warnings. With my warning message PR, we can inform the users before emulation starts anyway.
2019-07-14TextureCache: Support reinterpreting formats for VRAM texturesStenzek
2019-07-10VideoCommon/Statistics: Rename stats global to g_statsLioncash
Makes the global variable follow our convention of prefixing g_ on global variables to make it obvious in surrounding code that it's not a local variable.
2019-07-10VideoCommon/Statistics: Normalize statistic variable namesLioncash
Normalizes all variables related to statistics so that they follow our coding style. These are relatively low traffic areas, so this modification isn't too noisy.
2019-06-19Common/MsgHandler: Namespace code within the Common namespaceLioncash
Closes another gap in the Common library where code isn't being namespaced under it.
2019-05-30VideoCommon/RenderBase: Use a std::string_view with CreateShaderFromSource()Lioncash
Greatly simplifies the overall interface when it comes to compiling shaders. Also allows getting rid of a std::string overload of the same name. Now std::string and const char* both go through the same function.
2019-04-21ShaderCache: Fix crash at shutdown on shared shader compilation failStenzek
2019-04-20ShaderCache: Fix crash if pipeline from uid cache fails creationStenzek