summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/ShaderCache.cpp
AgeCommit message (Collapse)Author
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
2019-04-16ShaderCache: Utilize pipeline cache data where possibleStenzek
2019-04-16AbstractPipeline: Support returning "cache data"Stenzek
"Cache data" can be used to assist a driver with creating pipelines by using previously-compiled shader ISA.
2019-03-28ShaderCache: Don't create invalid logic op pipelinesStenzek
uint_output will never be set unless logic ops are enabled. Also clears the bits so we're not compiling unused pixel shaders on the other backends.
2019-03-28ShaderCache: Set correct primitive in dummy ubershader pipelinesStenzek
2019-02-19Move most backend functionality to VideoCommonStenzek
2019-01-25ShaderCache: Use imgui for shader compilation dialogStenzek
2018-10-14ShaderCache: Don't create or load shader cache with Null backendStenzek
2018-07-19FramebufferManager: Dynamic selection of EFB depth formatStenzek
2018-05-26ShaderCache: Remove unused UID bits before inserting into shader mapStenzek
2018-04-12Reformat all the things!spycrab
2018-04-02ShaderCache: Write currently-known UIDs to cache when re-creating fileStenzek
This way, if we load a UID cache where the data was incomplete (e.g. Dolphin crashed), we don't lose the existing UIDs which were previously at the beginning.
2018-04-02ShaderCache: Fix issue where shader cache wasn't recreated when invalidStenzek
2018-03-17ShaderCache: Implement compile priorityStenzek
Currently, when immediately compile shaders is not enabled, the ubershaders will be placed before any specialized shaders in the compile queue in hybrid ubershaders mode. This means that Dolphin could potentially use the ubershaders for a longer time than it would have if we blocked startup until all shaders were compiled, leading to a drop in performance.
2018-03-15ShaderCache: Fix several issues in background shader compilingStenzek
- In D3D, shaders could be compiled on the main thread, blocking startup. - Reduced the latency between a pipeline being requested and used in all backends in hybrid ubershader mode, when no shader stages were present. - Fixed a case where async compilation could cause the same UID to be appended multiple times to the UID cache. - Fix incorrect number of threads being used when immediately compile shaders was enabled.