Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Merge pull request #9588 from liamwhite/bylaws-reverts | liamwhite | 2023-02-19 | 1 | -1/+0 |
|\ | | | | | Revert "shader_recompiler: Align SSBO offsets to meet host requirements" | ||||
| * | Revert "Vulkan, OpenGL: Hook up storage buffer alignment code" | Liam | 2023-01-07 | 1 | -1/+0 |
| | | | | | | | | This reverts commit 9e2997c4b6456031622602002924617690e32a13. | ||||
* | | gl_compute_pipeline: Force context flush when loading shader cache | ameerj | 2023-01-30 | 1 | -4/+4 |
| | | |||||
* | | gl_graphics_pipeline: Force context flush when loading shader cache | ameerj | 2023-01-30 | 1 | -4/+5 |
|/ | |||||
* | Vulkan, OpenGL: Hook up geometry shader passthrough emulation | Billy Laws | 2023-01-05 | 1 | -0/+1 |
| | |||||
* | Vulkan, OpenGL: Hook up storage buffer alignment code | Billy Laws | 2023-01-05 | 1 | -0/+1 |
| | |||||
* | ShaderCompiler: Inline driver specific constants. | Fernando Sahmkow | 2023-01-03 | 1 | -1/+1 |
| | |||||
* | MacroHLE: Add OpenGL Support | Fernando Sahmkow | 2023-01-01 | 1 | -1/+2 |
| | |||||
* | Merge pull request #7450 from FernandoS27/ndc-vulkan | liamwhite | 2022-12-17 | 1 | -0/+1 |
|\ | | | | | Vulkan: Add support for VK_EXT_depth_clip_control. | ||||
| * | Vulkan: Add support for VK_EXT_depth_clip_control. | FernandoS27 | 2022-12-14 | 1 | -0/+1 |
| | | |||||
* | | renderer_opengl: refactor context acquire | Liam | 2022-12-13 | 1 | -31/+45 |
|/ | |||||
* | video_core: Implement maxwell3d draw manager and split draw logic | Feng Chen | 2022-12-08 | 1 | -2/+4 |
| | |||||
* | shader_recompiler: add gl_Layer translation GS for older hardware | Liam | 2022-12-01 | 1 | -4/+33 |
| | |||||
* | Merge pull request #9167 from vonchenplus/tess | liamwhite | 2022-11-11 | 1 | -1/+2 |
|\ | | | | | video_core: Fix few issues in Tess stage | ||||
| * | video_core: Fix few issues in Tess stage | FengChen | 2022-11-07 | 1 | -1/+2 |
| | | |||||
* | | ir/texture_pass: Use host_info instead of querying Settings::values (#9176) | Morph | 2022-11-11 | 1 | -0/+1 |
|/ | |||||
* | Merge pull request #8858 from vonchenplus/mipmap | bunnei | 2022-11-04 | 1 | -1/+1 |
|\ | | | | | video_core: Generate mipmap texture by drawing | ||||
| * | video_core: Generate mipmap texture by drawing | FengChen | 2022-09-20 | 1 | -1/+1 |
| | | |||||
* | | Merge pull request #8873 from vonchenplus/fix_legacy_location_error | bunnei | 2022-10-24 | 1 | -0/+1 |
|\ \ | | | | | | | video_core: Fix legacy to generic location unpaired | ||||
| * | | video_core: Fix legacy to generic location unpaired | FengChen | 2022-09-20 | 1 | -0/+1 |
| | | | |||||
* | | | renderer_(opengl/vulkan): Fix tessellation clockwise parameter | Morph | 2022-10-13 | 1 | -2/+2 |
| | | | | | | | | | | | | This should be assigned CW only on Triangles_CW rather than not Triangles_CCW, making CCW the default winding order rather than CW. | ||||
* | | | Update 3D regs | Kelebek1 | 2022-10-07 | 1 | -20/+23 |
| | | | |||||
* | | | VideoCore: Fix channels with disk pipeline/shader cache. | Fernando Sahmkow | 2022-10-06 | 1 | -6/+5 |
| | | | |||||
* | | | VideoCore: implement channels on gpu caches. | Fernando Sahmkow | 2022-10-06 | 1 | -21/+18 |
| | | | |||||
* | | | common: remove "yuzu:" prefix from thread names | Liam | 2022-10-04 | 1 | -1/+1 |
|/ / | |||||
* / | (shader/pipeline)_cache: Raise shader/pipeline cache version | Morph | 2022-08-31 | 1 | -1/+1 |
|/ | | | | Since the following commit: https://github.com/yuzu-emu/yuzu/commit/a83a5d2e4c8932df864dd4cea2b04d87a12c8760 , many games will refuse to boot unless the shader/pipeline cache has been invalidated. | ||||
* | video_core: stop waiting for shader compilation on user cancel | Liam | 2022-07-30 | 1 | -1/+1 |
| | |||||
* | common: Change semantics of UNREACHABLE to unconditionally crash | Liam | 2022-06-14 | 1 | -2/+2 |
| | |||||
* | general: Convert source file copyright comments over to SPDX | Morph | 2022-04-23 | 1 | -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_lock | Merry | 2022-04-07 | 1 | -2/+2 |
| | |||||
* | video_core: Reduce unused includes | ameerj | 2022-03-19 | 1 | -3/+0 |
| | |||||
* | ShaderDecompiler: Add a debug option to dump the game's shaders. | Fernando Sahmkow | 2022-01-04 | 1 | -1/+10 |
| | |||||
* | glsl: Add boolean reference workaround | ameerj | 2021-12-30 | 1 | -0/+1 |
| | |||||
* | glsl_context_get_set: Add alternative cbuf type for broken drivers | ameerj | 2021-12-30 | 1 | -0/+1 |
| | | | | some drivers have a bug bitwise converting floating point cbuf values to uint variables. This adds a workaround for these drivers to make all cbufs uint and convert to floating point as needed. | ||||
* | Address format clang | vonchenplus | 2021-12-18 | 1 | -1/+1 |
| | |||||
* | Implement convert legacy to generic | Feng Chen | 2021-11-19 | 1 | -0/+3 |
| | |||||
* | opengl: Use Shader::NumDescriptors when possible | ReinUsesLisp | 2021-11-16 | 1 | -10/+5 |
| | |||||
* | renderers: Log total pipeline count | Morph | 2021-09-14 | 1 | -0/+2 |
| | |||||
* | structured_control_flow: Conditionally invoke demote reorder pass | ameerj | 2021-08-30 | 1 | -0/+1 |
| | | | | This is only needed on select drivers when a fragment shader discards/demotes. | ||||
* | gl_shader_cache: Remove unused variable | Lioncash | 2021-07-27 | 1 | -1/+0 |
| | |||||
* | shader_environment: Receive cache version from outside | ReinUsesLisp | 2021-07-23 | 1 | -3/+7 |
| | | | | This allows us invalidating OpenGL and Vulkan separately in the future. | ||||
* | glsl: Clamp shared mem size to GL_MAX_COMPUTE_SHARED_MEMORY_SIZE | ameerj | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | gl_shader_cache: Properly implement asynchronous shaders | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | shader: Ignore global memory ops on devices lacking int64 support | ameerj | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | gl_shader_cache: Fixes for async shaders | ameerj | 2021-07-23 | 1 | -2/+23 |
| | |||||
* | emit_spirv: Workaround VK_KHR_shader_float_controls on fp16 Nvidia | ReinUsesLisp | 2021-07-23 | 1 | -0/+1 |
| | | | | Fix regression on Fire Emblem: Three Houses when using native fp16. | ||||
* | video_core: Enable GL SPIR-V shaders | lat9nq | 2021-07-23 | 1 | -9/+31 |
| | |||||
* | glasm: Add passthrough geometry shader support | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | shader: Rework varyings and implement passthrough geometry shaders | ReinUsesLisp | 2021-07-23 | 1 | -3/+4 |
| | | | | | | Put all varyings into a single std::bitset with helpers to access it. Implement passthrough geometry shaders using host's. | ||||
* | shader: Unify shader stage types | ReinUsesLisp | 2021-07-23 | 1 | -1/+0 |
| | |||||
* | shader: Emulate 64-bit integers when not supported | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | | | | Useful for mobile and Intel Xe devices. | ||||
* | gl_shader_cache: Check previous pipeline before checking hash map | ReinUsesLisp | 2021-07-23 | 1 | -6/+14 |
| | | | | Port optimization from Vulkan. | ||||
* | shaders: Allow shader notify when async shaders is disabled | ameerj | 2021-07-23 | 1 | -4/+4 |
| | |||||
* | shader: Properly manage attributes not written from previous stages | ReinUsesLisp | 2021-07-23 | 1 | -1/+10 |
| | |||||
* | shader: Add support for native 16-bit floats | ReinUsesLisp | 2021-07-23 | 1 | -4/+8 |
| | |||||
* | shader: Rename maxwell/program.h to translate_program.h | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | glsl: Address rest of feedback | ameerj | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | glsl: Conditionally use fine/coarse derivatives based on device support | ameerj | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | glsl: Cleanup/Address feedback | ameerj | 2021-07-23 | 1 | -0/+2 |
| | |||||
* | gl_shader_cache: Implement async shaders | ameerj | 2021-07-23 | 1 | -29/+25 |
| | |||||
* | glsl: Add stubs for sparse queries and variable aoffi when not supported | ameerj | 2021-07-23 | 1 | -0/+2 |
| | |||||
* | gl_shader_cache: Move OGL shader compilation to the respective Pipeline constructor | ameerj | 2021-07-23 | 1 | -61/+8 |
| | |||||
* | glsl: Implement fswzadd | ameerj | 2021-07-23 | 1 | -0/+1 |
| | | | | and wip nv thread shuffle impl | ||||
* | glsl: Rebase fixes | ameerj | 2021-07-23 | 1 | -1/+0 |
| | |||||
* | glsl: Use textureGrad fallback when EXT_texture_shadow_lod is unsupported | ameerj | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | glsl: skip gl_ViewportIndex write if device does not support it | ameerj | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | glsl: Implement transform feedback | ameerj | 2021-07-23 | 1 | -5/+13 |
| | |||||
* | glsl: Implement VOTE for subgroup size potentially larger | ameerj | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | glsl: Implement some attribute getters and setters | ameerj | 2021-07-23 | 1 | -1/+0 |
| | |||||
* | glsl: Query GL Device for FP16 extension support | ameerj | 2021-07-23 | 1 | -0/+2 |
| | |||||
* | glsl: Fixup build issues | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | glsl: Initial backend | ameerj | 2021-07-23 | 1 | -2/+5 |
| | |||||
* | shader: Reorder shader cache directories | ReinUsesLisp | 2021-07-23 | 1 | -8/+5 |
| | |||||
* | gl_shader_util: Move shader utility code to a separate file | ReinUsesLisp | 2021-07-23 | 1 | -76/+5 |
| | |||||
* | gl_shader_cache: Store workers in shader cache object | ReinUsesLisp | 2021-07-23 | 1 | -58/+71 |
| | |||||
* | shader: Fix VertexA Shaders. | FernandoS27 | 2021-07-23 | 1 | -5/+21 |
| | |||||
* | glasm: Use ARB_derivative_control conditionally | ReinUsesLisp | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | opengl: Declare fragment outputs even if they are not used | ReinUsesLisp | 2021-07-23 | 1 | -0/+2 |
| | | | | | | Fixes Ori and the Blind Forest's menu on GLASM. For some reason (probably high level optimizations) it is not sanitized on SPIR-V for OpenGL. Vulkan is unaffected by this change. | ||||
* | shader: Handle host exceptions | ReinUsesLisp | 2021-07-23 | 1 | -17/+26 |
| | |||||
* | glasm: Use storage buffers instead of global memory when possible | ReinUsesLisp | 2021-07-23 | 1 | -6/+24 |
| | |||||
* | gl_shader_cache: Add disk shader cache | ReinUsesLisp | 2021-07-23 | 1 | -6/+107 |
| | |||||
* | gl_shader_cache: Rename Program abstractions into Pipeline | ReinUsesLisp | 2021-07-23 | 1 | -21/+21 |
| | |||||
* | gl_shader_cache: Do not flip tessellation on OpenGL | ReinUsesLisp | 2021-07-23 | 1 | -2/+1 |
| | |||||
* | gl_shader_cache: Conditionally use viewport mask | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | gl_shader_cache,glasm: Conditionally use typeless image reads extension | ReinUsesLisp | 2021-07-23 | 1 | -37/+37 |
| | |||||
* | gl_shader_cache: Improve GLASM error print logic | ReinUsesLisp | 2021-07-23 | 1 | -7/+10 |
| | |||||
* | glasm: Implement forced early Z | ReinUsesLisp | 2021-07-23 | 1 | -2/+2 |
| | |||||
* | glasm: Set transform feedback state | ReinUsesLisp | 2021-07-23 | 1 | -2/+17 |
| | |||||
* | gl_shader_cache: Pass shader runtime information | ReinUsesLisp | 2021-07-23 | 1 | -2/+74 |
| | |||||
* | shader: Split profile and runtime information in separate structs | ReinUsesLisp | 2021-07-23 | 1 | -22/+4 |
| | |||||
* | glasm: Support textures used in more than one stage | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | opengl: Initial (broken) support to GLASM shaders | ReinUsesLisp | 2021-07-23 | 1 | -11/+35 |
| | |||||
* | glasm: Initial GLASM compute implementation for testing | ReinUsesLisp | 2021-07-23 | 1 | -6/+31 |
| | |||||
* | gl_shader_cache: Remove code unintentionally committed | ReinUsesLisp | 2021-07-23 | 1 | -3/+0 |
| | |||||
* | Move SPIR-V emission functions to their own header | ReinUsesLisp | 2021-07-23 | 1 | -3/+2 |
| | |||||
* | shader: Initial OpenGL implementation | ReinUsesLisp | 2021-07-23 | 1 | -3/+272 |
| | |||||
* | shader: Move pipeline cache logic to separate files | ReinUsesLisp | 2021-07-23 | 1 | -13/+8 |
| | | | | | | | | | Move code to separate files to be able to reuse it from OpenGL. This greatly simplifies the pipeline cache logic on Vulkan. Transform feedback state is not yet abstracted and it's still intrusively stored inside vk_pipeline_cache. It will be moved when needed on OpenGL. | ||||
* | shader: Remove old shader management | ReinUsesLisp | 2021-07-23 | 1 | -563/+1 |
| | |||||
* | bootmanager: Use std::stop_source for stopping emulation | ReinUsesLisp | 2021-06-22 | 1 | -3/+3 |
| | | | | | | | Use its std::stop_token to abort shader cache loading. Using std::stop_token instead of std::atomic_bool allows the usage of other utilities like std::stop_callback. | ||||
* | gl_disk_shader_cache: Log total shader entries count on game load | Morph | 2021-02-20 | 1 | -0/+4 |
| | |||||
* | renderer_opengl: Avoid precompiled cache and force NV GL cache directory | ReinUsesLisp | 2021-01-21 | 1 | -5/+8 |
| | | | | | | | | | | | | | | Setting __GL_SHADER_DISK_CACHE_PATH we can force the cache directory to be in yuzu's user directory to stop commonly distributed malware from deleting our driver shader cache. And by setting __GL_SHADER_DISK_CACHE_SKIP_CLEANUP we can have an unbounded shader cache size. This has only been implemented on Windows, mostly because previous tests didn't seem to work on Linux. Disable the precompiled cache on Nvidia's driver. There's no need to hide information the driver already has in its own cache. | ||||
* | video_core: Rewrite the texture cache | ReinUsesLisp | 2020-12-30 | 1 | -1/+0 |
| | | | | | | | | | | | | | | The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage.The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage. This commit aims to address those issues. | ||||
* | video_core: Make use of ordered container contains() where applicable | Lioncash | 2020-12-07 | 1 | -1/+1 |
| | | | | | | With C++20, we can use the more concise contains() member function instead of comparing the result of the find() call with the end iterator. | ||||
* | video_core: Resolve more variable shadowing scenarios pt.3 | Lioncash | 2020-12-05 | 1 | -4/+3 |
| | | | | | Cleans out the rest of the occurrences of variable shadowing and makes any further occurrences of shadowing compiler errors. | ||||
* | video_core: Resolve more variable shadowing scenarios | Lioncash | 2020-12-04 | 1 | -3/+3 |
| | | | | | | 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. | ||||
* | video_core: Remove all Core::System references in renderer | ReinUsesLisp | 2020-09-06 | 1 | -32/+31 |
| | | | | | | | | | 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. | ||||
* | gl_shader_util: Use std::string_view instead of star pointer | ReinUsesLisp | 2020-08-24 | 1 | -0/+1 |
| | | | | | This allows us passing any type of string and hinting the length of the string to the OpenGL driver. | ||||
* | gl_shader_cache: Use std::max() for determining num_workers | Morph | 2020-08-12 | 1 | -1/+1 |
| | | | | Does not allocate more threads than available in the host system for boot-time shader compilation and always allocates at least 1 thread if hardware_concurrency() returns 0. | ||||
* | Merge pull request #4391 from lioncash/nrvo | bunnei | 2020-07-24 | 1 | -1/+1 |
|\ | | | | | video_core: Allow copy elision to take place where applicable | ||||
| * | video_core: Allow copy elision to take place where applicable | Lioncash | 2020-07-21 | 1 | -1/+1 |
| | | | | | | | | | | Removes const from some variables that are returned from functions, as this allows the move assignment/constructors to execute for them. | ||||
* | | video_core: Remove unused variables | Lioncash | 2020-07-21 | 1 | -3/+0 |
|/ | | | | Silences several compiler warnings about unused variables. | ||||
* | async shaders | David Marcec | 2020-07-17 | 1 | -49/+132 |
| | |||||
* | gl_shader_cache: Avoid use after move for program size | ReinUsesLisp | 2020-06-24 | 1 | -5/+7 |
| | | | | | | All programs had a size of zero due to this bug, skipping invalidations. While we are at it, remove some unused forward declarations. | ||||
* | Merge pull request #4041 from ReinUsesLisp/arb-decomp | bunnei | 2020-06-16 | 1 | -1/+3 |
|\ | | | | | gl_arb_decompiler: Implement an assembly shader decompiler | ||||
| * | gl_arb_decompiler: Implement an assembly shader decompiler | ReinUsesLisp | 2020-06-12 | 1 | -1/+3 |
| | | | | | | | | | | | | Emit code compatible with NV_gpu_program5. This should emit code compatible with Fermi, but it wasn't tested on that architecture. Pascal has some issues not present on Turing GPUs. | ||||
* | | vk_pipeline_cache: Use generic shader cache | ReinUsesLisp | 2020-06-07 | 1 | -3/+3 |
| | | | | | | | | Trivial port the generic shader cache to Vulkan. | ||||
* | | gl_shader_cache: Use generic shader cache | ReinUsesLisp | 2020-06-07 | 1 | -45/+42 |
|/ | | | | Trivially port the generic shader cache to OpenGL. | ||||
* | glsl: Squash constant buffers into a single SSBO when we hit the limit | ReinUsesLisp | 2020-06-01 | 1 | -5/+7 |
| | | | | | Avoids compilation errors at the cost of shader build times and runtime performance when a game hits the limit of uniform buffers we can use. | ||||
* | renderer_opengl: Add assembly program code paths | ReinUsesLisp | 2020-05-19 | 1 | -21/+80 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add code required to use OpenGL assembly programs based on NV_gpu_program5. Decompilation for ARB programs is intended to be added in a follow up commit. This does **not** include ARB decompilation and it's not in an usable state. The intention behind assembly programs is to reduce shader stutter significantly on drivers supporting NV_gpu_program5 (and other required extensions). Currently only Nvidia's proprietary driver supports these extensions. Add a UI option hidden for now to avoid people enabling this option accidentally. This code path has some limitations that OpenGL compatibility doesn't have: - NV_shader_storage_buffer_object is limited to 16 entries for a single OpenGL context state (I don't know if this is an intended limitation, an specification issue or I am missing something). Currently causes issues on The Legend of Zelda: Link's Awakening. - NV_parameter_buffer_object can't bind buffers using an offset different to zero. The used workaround is to copy to a temporary buffer (this doesn't happen often so it's not an issue). On the other hand, it has the following advantages: - Shaders build a lot faster. - We have control over how floating point rounding is done over individual instructions (SPIR-V on Vulkan can't do this). - Operations on shared memory can be unsigned and signed. - Transform feedbacks are dynamic state (not yet implemented). - Parameter buffers (uniform buffers) are per stage, matching NVN and hardware's behavior. - The API to bind and create assembly programs makes sense, unlike ARB_separate_shader_objects. | ||||
* | shader/memory_util: Deduplicate code | ReinUsesLisp | 2020-04-26 | 1 | -72/+10 |
| | | | | | | | | Deduplicate code shared between vk_pipeline_cache and gl_shader_cache as well as shader decoder code. While we are at it, fix a bug in gl_shader_cache where compute shaders had an start offset of a stage shader. | ||||
* | ShaderCache/PipelineCache: Cache null shaders. | Fernando Sahmkow | 2020-04-22 | 1 | -4/+13 |
| | |||||
* | Revert "gl_shader_cache: Use CompileDepth::FullDecompile on GLSL" | Rodrigo Locatti | 2020-04-17 | 1 | -3/+1 |
| | |||||
* | gl_shader_cache: Use CompileDepth::FullDecompile on GLSL | ReinUsesLisp | 2020-04-14 | 1 | -1/+3 |
| | | | | | | | | From my testing on a Splatoon 2 shader that takes 3800ms on average to compile changing to FullDecompile reduces it to 900ms on average. The shader decoder will automatically fallback to a more naive method if it can't use full decompile. | ||||
* | Shader/Pipeline Cache: Use VAddr instead of physical memory for addressing. | Fernando Sahmkow | 2020-04-06 | 1 | -22/+24 |
| | |||||
* | Address review and fix broken yuzu-tester build | James Rowe | 2020-03-26 | 1 | -1/+1 |
| | |||||
* | Frontend/GPU: Refactor context management | James Rowe | 2020-03-25 | 1 | -3/+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 | ||||
* | gl_shader_decompiler: Add identifier to decompiled code | ReinUsesLisp | 2020-03-09 | 1 | -2/+4 |
| | |||||
* | gl_shader_cache: Reduce registry consistency to debug assert | ReinUsesLisp | 2020-03-09 | 1 | -3/+1 |
| | | | | | Registry consistency is something that practically can't happen and it has a measurable runtime cost. Reduce it to a DEBUG_ASSERT. | ||||
* | shader/registry: Store graphics and compute metadata | ReinUsesLisp | 2020-03-09 | 1 | -12/+16 |
| | | | | | Store information GLSL forces us to provide but it's dynamic state in hardware (workgroup sizes, primitive topology, shared memory size). | ||||
* | video_core: Rename "const buffer locker" to "registry" | ReinUsesLisp | 2020-03-09 | 1 | -32/+33 |
| | |||||
* | gl_shader_cache: Rework shader cache and remove post-specializations | ReinUsesLisp | 2020-03-09 | 1 | -345/+158 |
| | | | | | Instead of pre-specializing shaders and then post-specializing them, drop the later and only "specialize" the shader while decoding it. | ||||
* | gl_state_tracker: Implement dirty flags for clip distances and shaders | ReinUsesLisp | 2020-02-28 | 1 | -0/+5 |
| | |||||
* | gl_rasterizer: Remove dirty flags | ReinUsesLisp | 2020-02-28 | 1 | -4/+0 |
| | |||||
* | Shader_IR: Store Bound buffer on Shader Usage | Fernando Sahmkow | 2020-01-24 | 1 | -1/+3 |
| | |||||
* | gl_shader_cache: Disable fastmath on Nvidia | ReinUsesLisp | 2020-01-21 | 1 | -0/+4 |
| | |||||
* | gl_shader_cache: Remove unused STAGE_RESERVED_UBOS constant | Lioncash | 2020-01-14 | 1 | -3/+0 |
| | | | | Given this isn't used, this can be removed entirely. | ||||
* | gl_shader_cache: std::move entries in CachedShader constructor | Lioncash | 2020-01-14 | 1 | -3/+4 |
| | | | | Avoids several reallocations of std::vector instances where applicable. | ||||
* | gl_shader_cache: Remove unused entries variable in BuildShader() | Lioncash | 2020-01-14 | 1 | -1/+0 |
| | | | | Eliminates a few unnecessary constructions of std::vectors. | ||||
* | gl_shader_cache: Update commentary for shared memory | ReinUsesLisp | 2019-12-21 | 1 | -9/+6 |
| | | | | | | | | Remove false commentary. Not dividing by 4 the size of shared memory is not a hack; it describes the number of integers, not bytes. While we are at it sort the generated code to put preprocessor lines on the top. | ||||
* | gl_shader_cache: Remove unused entry in GetPrimitiveDescription | ReinUsesLisp | 2019-12-21 | 1 | -11/+9 |
| | |||||
* | gl_shader_cache: Add missing new-line on emitted GLSL | ReinUsesLisp | 2019-12-11 | 1 | -2/+2 |
| | | | | | | | | | | | | | Add missing new-line. This caused shaders using local memory and shared memory to inject a preprocessor GLSL line after an expression (resulting in invalid code). It looked like this: shared uint smem[8];#define LOCAL_MEMORY_SIZE 16 It should look like this (addressed by this commit): shared uint smem[8]; \#define LOCAL_MEMORY_SIZE 16 | ||||
* | gl_shader_cache: Hack shared memory size | ReinUsesLisp | 2019-11-23 | 1 | -2/+3 |
| | | | | | | | | The current shared memory size seems to be smaller than what the game actually uses. This makes Nvidia's driver consistently blow up; in the case of FE3H it made it explode on Qt's SwapBuffers while SDL2 worked just fine. For now keep this hack since it's still progress over the previous hardcoded shared memory size. | ||||
* | gl_shader_cache: Remove dynamic BaseBinding specialization | ReinUsesLisp | 2019-11-23 | 1 | -36/+8 |
| | |||||
* | video_core: Unify ProgramType and ShaderStage into ShaderType | ReinUsesLisp | 2019-11-23 | 1 | -127/+100 |
| | |||||
* | gl_rasterizer: Bind graphics images to draw commands | ReinUsesLisp | 2019-11-23 | 1 | -0/+1 |
| | | | | | Images were not being bound to draw invocations because these would require a cache invalidation. | ||||
* | gl_shader_cache: Specialize local memory size for compute shaders | ReinUsesLisp | 2019-11-23 | 1 | -0/+5 |
| | | | | | Local memory size in compute shaders was stubbed with an arbitary size. This commit specializes local memory size from guest GPU parameters. | ||||
* | gl_shader_cache: Specialize shared memory size | ReinUsesLisp | 2019-11-23 | 1 | -0/+7 |
| | | | | | Shared memory was being declared with an undefined size. Specialize from guest GPU parameters the compute shader's shared memory size. | ||||
* | gl_shader_cache: Specialize shader workgroup | ReinUsesLisp | 2019-11-23 | 1 | -35/+28 |
| | | | | | | Drop the usage of ARB_compute_variable_group_size and specialize compute shaders instead. This permits compute to run on AMD and Intel proprietary drivers. | ||||
* | shader/texture: Deduce texture buffers from locker | ReinUsesLisp | 2019-11-23 | 1 | -12/+0 |
| | | | | | Instead of specializing shaders to separate texture buffers from 1D textures, use the locker to deduce them while they are being decoded. | ||||
* | Merge pull request #3081 from ReinUsesLisp/fswzadd-shuffles | Fernando Sahmkow | 2019-11-14 | 1 | -5/+14 |
|\ | | | | | shader: Implement FSWZADD and reimplement SHFL | ||||
| * | gl_shader_cache: Enable extensions only when available | ReinUsesLisp | 2019-11-08 | 1 | -6/+14 |
| | | | | | | | | Silence GLSL compilation warnings. | ||||
| * | gl_shader_decompiler: Reimplement shuffles with platform agnostic intrinsics | ReinUsesLisp | 2019-11-08 | 1 | -0/+1 |
| | | |||||
* | | gl_shader_cache: Fix locker constructors | ReinUsesLisp | 2019-11-08 | 1 | -2/+4 |
|/ | | | | Properly pass engine when a shader is being constructed from memory. | ||||
* | gl_shader_cache: Implement locker variants invalidation | ReinUsesLisp | 2019-10-25 | 1 | -27/+75 |
| | |||||
* | gl_shader_disk_cache: Store and load fast BRX | ReinUsesLisp | 2019-10-25 | 1 | -2/+17 |
| | |||||
* | gl_shader_decompiler: Move entries to a separate function | ReinUsesLisp | 2019-10-25 | 1 | -238/+251 |
| | |||||
* | Shader_Cache: setup connection of ConstBufferLocker | Fernando Sahmkow | 2019-10-25 | 1 | -16/+29 |
| | |||||
* | shader/image: Implement SULD and remove irrelevant code | ReinUsesLisp | 2019-09-21 | 1 | -8/+8 |
| | | | | | * Implement SULD as float. * Remove conditional declaration of GL_ARB_shader_viewport_layer_array. | ||||
* | shader_ir/warp: Implement SHFL | ReinUsesLisp | 2019-09-17 | 1 | -1/+2 |
| | |||||
* | gl_shader_cache: Remove special casing for geometry shaders | ReinUsesLisp | 2019-09-04 | 1 | -59/+9 |
| | | | | | Now that ProgramVariants holds the primitive topology we no longer need to keep track of individual geometry shaders topologies. | ||||
* | video_core: Silent miscellaneous warnings (#2820) | Rodrigo Locatti | 2019-08-30 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | * 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 | ||||
* | Merge pull request #2742 from ReinUsesLisp/fix-texture-buffers | bunnei | 2019-08-29 | 1 | -2/+6 |
|\ | | | | | gl_texture_cache: Miscellaneous texture buffer fixes | ||||
| * | gl_shader_cache: Fix newline on buffer preprocessor definitions | ReinUsesLisp | 2019-07-18 | 1 | -2/+6 |
| | | |||||
* | | shader_ir: Implement VOTE | ReinUsesLisp | 2019-08-21 | 1 | -1/+3 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement VOTE using Nvidia's intrinsics. Documentation about these can be found here https://developer.nvidia.com/reading-between-threads-shader-intrinsics Instead of using portable ARB instructions I opted to use Nvidia intrinsics because these are the closest we have to how Tegra X1 hardware renders. To stub VOTE on non-Nvidia drivers (including nouveau) this commit simulates a GPU with a warp size of one, returning what is meaningful for the instruction being emulated: * anyThreadNV(value) -> value * allThreadsNV(value) -> value * allThreadsEqualNV(value) -> true ballotARB, also known as "uint64_t(activeThreadsNV())", emits VOTE.ANY Rd, PT, PT; on nouveau's compiler. This doesn't match exactly to Nvidia's code VOTE.ALL Rd, PT, PT; Which is emulated with activeThreadsNV() by this commit. In theory this shouldn't really matter since .ANY, .ALL and .EQ affect the predicates (set to PT on those cases) and not the registers. | ||||
* | | Merge pull request #2734 from ReinUsesLisp/compute-shaders | bunnei | 2019-07-22 | 1 | -33/+117 |
|\ \ | | | | | | | gl_rasterizer: Implement compute shaders | ||||
| * | | gl_shader_cache: Fix clang-format issues | ReinUsesLisp | 2019-07-16 | 1 | -2/+1 |
| | | | |||||
| * | | gl_shader_cache: Address review commentaries | ReinUsesLisp | 2019-07-15 | 1 | -7/+4 |
| | | | |||||
| * | | gl_shader_cache: Address CI issues | ReinUsesLisp | 2019-07-15 | 1 | -1/+2 |
| | | | |||||
| * | | gl_rasterizer: Implement compute shaders | ReinUsesLisp | 2019-07-15 | 1 | -35/+122 |
| |/ | |||||
* / | Maxwell3D: Rework the dirty system to be more consistant and scaleable | Fernando Sahmkow | 2019-07-17 | 1 | -1/+1 |
|/ | |||||
* | Merge pull request #2695 from ReinUsesLisp/layer-viewport | Fernando Sahmkow | 2019-07-15 | 1 | -2/+5 |
|\ | | | | | gl_shader_decompiler: Implement gl_ViewportIndex and gl_Layer in vertex shaders | ||||
| * | gl_shader_decompiler: Implement gl_ViewportIndex and gl_Layer in vertex shaders | ReinUsesLisp | 2019-07-08 | 1 | -2/+5 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | This commit implements gl_ViewportIndex and gl_Layer in vertex and geometry shaders. In the case it's used in a vertex shader, it requires ARB_shader_viewport_layer_array. This extension is available on AMD and Nvidia devices (mesa and proprietary drivers), but not available on Intel on any platform. At the moment of writing this description I don't know if this is a hardware limitation or a driver limitation. In the case that ARB_shader_viewport_layer_array is not available, writes to these registers on a vertex shader are ignored, with the appropriate logging. | ||||
* | | shader_ir: propagate shader size to the IR | Fernando Sahmkow | 2019-07-09 | 1 | -7/+15 |
|/ | |||||
* | Merge pull request #2601 from FernandoS27/texture_cache | Zach Hilman | 2019-07-05 | 1 | -35/+56 |
|\ | | | | | Implement a new Texture Cache | ||||
| * | texture_cache: Address Feedback | Fernando Sahmkow | 2019-07-05 | 1 | -2/+4 |
| | | |||||
| * | texture_cache: Style and Corrections | Fernando Sahmkow | 2019-06-21 | 1 | -1/+1 |
| | | |||||
| * | shader_cache: Correct versioning and size calculation. | Fernando Sahmkow | 2019-06-21 | 1 | -1/+6 |
| | | |||||
| * | gl_shader_decompiler: Implement image binding settings | ReinUsesLisp | 2019-06-21 | 1 | -0/+4 |
| | | |||||
| * | gl_rasterizer: Track texture buffer usage | ReinUsesLisp | 2019-06-21 | 1 | -34/+44 |
| | | |||||
* | | gl_shader_cache: Make CachedShader constructor private | Zach Hilman | 2019-07-04 | 1 | -2/+2 |
| | | | | | | | | Fixes missing review comments introduced. | ||||
* | | gl_shader_cache: Use static constructors for CachedShader initialization | ReinUsesLisp | 2019-06-08 | 1 | -42/+34 |
|/ | |||||
* | gl_shader_cache: Store a system class and drop global accessors | ReinUsesLisp | 2019-05-30 | 1 | -7/+8 |
| | |||||
* | gl_shader_cache: Add commentaries explaining the intention in shaders creation | ReinUsesLisp | 2019-05-30 | 1 | -0/+2 |
| | |||||
* | gl_shader_cache: Flip if condition in GetStageProgram to reduce indentation | ReinUsesLisp | 2019-05-30 | 1 | -25/+26 |
| | |||||
* | gl_shader_gen: Always declare extensions after the version declaration | ReinUsesLisp | 2019-05-27 | 1 | -1/+2 |
| | | | | | This addresses a bug on geometry shaders where code was being written before all #extension declarations were done. Ref to #2523 | ||||
* | gl_shader_cache: Fix clang strict standard build issues | ReinUsesLisp | 2019-05-21 | 1 | -3/+4 |
| | |||||
* | gl_shader_cache: Use shared contexts to build shaders in parallel | ReinUsesLisp | 2019-05-21 | 1 | -34/+82 |
| | |||||
* | video_core/renderer_opengl/gl_shader_cache: Correct member initialization order | Lioncash | 2019-05-10 | 1 | -1/+1 |
| | | | | Silences a -Wreorder warning. | ||||
* | Re added new lines at the end of files | FreddyFunk | 2019-04-23 | 1 | -1/+1 |
| | |||||
* | gl_shader_disk_cache: Use VectorVfsFile for the virtual precompiled shader cache file | unknown | 2019-04-23 | 1 | -1/+11 |
| | |||||
* | Merge pull request #2383 from ReinUsesLisp/aoffi-test | bunnei | 2019-04-23 | 1 | -27/+27 |
|\ | | | | | gl_shader_decompiler: Disable variable AOFFI on unsupported devices | ||||
| * | gl_shader_decompiler: Use variable AOFFI on supported hardware | ReinUsesLisp | 2019-04-14 | 1 | -27/+27 |
| | | |||||
* | | Document unsafe versions and add BlockCopyUnsafe | Fernando Sahmkow | 2019-04-16 | 1 | -6/+7 |
| | | |||||
* | | Use ReadBlockUnsafe for Shader Cache | Fernando Sahmkow | 2019-04-16 | 1 | -5/+7 |
|/ | |||||
* | Merge pull request #2354 from lioncash/header | bunnei | 2019-04-10 | 1 | -0/+1 |
|\ | | | | | video_core/texures/texture: Remove unnecessary includes | ||||
| * | video_core/texures/texture: Remove unnecessary includes | Lioncash | 2019-04-06 | 1 | -0/+1 |
| | | | | | | | | | | | | Nothing in this header relies on common_funcs or the memory manager. This gets rid of reliance on indirect inclusions in the OpenGL caches. | ||||
* | | Merge pull request #2300 from FernandoS27/null-shader | bunnei | 2019-04-07 | 1 | -0/+4 |
|\ \ | |/ |/| | shader_cache: Permit a Null Shader in case of a bad host_ptr. | ||||
| * | Permit a Null Shader in case of a bad host_ptr. | Fernando Sahmkow | 2019-04-07 | 1 | -0/+4 |
| | | |||||
* | | Merge pull request #2299 from lioncash/maxwell | bunnei | 2019-04-04 | 1 | -2/+0 |
|\ \ | | | | | | | gl_shader_manager: Remove reliance on a global accessor within MaxwellUniformData::SetFromRegs() | ||||
| * | | gl_shader_manager: Remove unnecessary gl_shader_manager inclusion | Lioncash | 2019-03-28 | 1 | -2/+0 |
| |/ | | | | | | | | | | | | | | | | | This isn't used at all in the OpenGL shader cache, so we can remove it's include here, meaning one less file needs to be recompiled if any changes ever occur within that header. core/memory.h is also not used within this file at all, so we can remove it as well. | ||||
* / | video_core: Amend constructor initializer list order where applicable | Lioncash | 2019-03-27 | 1 | -6/+6 |
|/ | | | | | | | Specifies the members in the same order that initialization would take place in. This also silences -Wreorder warnings. | ||||
* | gpu: Move GPUVAddr definition to common_types. | bunnei | 2019-03-21 | 1 | -2/+2 |
| | |||||
* | video_core: Refactor to use MemoryManager interface for all memory access. | bunnei | 2019-03-16 | 1 | -20/+17 |
| | | | | | | | | | | | # 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: Use host address for caching instead of guest address. | bunnei | 2019-03-15 | 1 | -19/+24 |
| | |||||
* | gl_shader_disk_cache: Use unordered containers | ReinUsesLisp | 2019-02-07 | 1 | -3/+3 |
| | |||||
* | gl_shader_cache: Fixup GLSL unique identifiers | ReinUsesLisp | 2019-02-07 | 1 | -2/+2 |
| | |||||
* | gl_shader_cache: Link loading screen with disk shader cache load | ReinUsesLisp | 2019-02-07 | 1 | -3/+26 |
| | |||||
* | gl_shader_cache: Set GL_PROGRAM_SEPARABLE to dumped shaders | ReinUsesLisp | 2019-02-07 | 1 | -0/+1 |
| | | | | | | i965 (and probably all mesa drivers) require GL_PROGRAM_SEPARABLE when using glProgramBinary. This is probably required by the standard but it's ignored by permisive proprietary drivers. | ||||
* | gl_shader_disk_cache: Pass core system as argument and guard against games without title ids | ReinUsesLisp | 2019-02-07 | 1 | -1/+2 |
| | |||||
* | gl_shader_disk_cache: Address miscellaneous feedback | ReinUsesLisp | 2019-02-07 | 1 | -3/+3 |
| | |||||
* | gl_shader_disk_cache: Pass return values returning instead of by parameters | ReinUsesLisp | 2019-02-07 | 1 | -7/+5 |
| | |||||
* | gl_shader_disk_cache: Save GLSL and entries into the precompiled file | ReinUsesLisp | 2019-02-07 | 1 | -32/+39 |
| | |||||
* | gl_shader_cache: Refactor to support disk shader cache | ReinUsesLisp | 2019-02-07 | 1 | -105/+345 |
| | |||||
* | rasterizer_interface: Add disk cache entry for the rasterizer | ReinUsesLisp | 2019-02-07 | 1 | -0/+2 |
| | |||||
* | video_core: Assert on invalid GPU to CPU address queries | ReinUsesLisp | 2019-02-03 | 1 | -2/+4 |
| | |||||
* | gl_shader_cache: Use explicit bindings | ReinUsesLisp | 2019-01-30 | 1 | -63/+83 |
| | |||||
* | gl_rasterizer: Implement global memory management | ReinUsesLisp | 2019-01-30 | 1 | -3/+15 |
| | |||||
* | video_core: Rename glsl_decompiler to gl_shader_decompiler | ReinUsesLisp | 2019-01-15 | 1 | -1/+1 |
| | |||||
* | video_core: Replace gl_shader_decompiler | ReinUsesLisp | 2019-01-15 | 1 | -2/+6 |
| | |||||
* | gl_shader_cache: Use dirty flags for shaders | ReinUsesLisp | 2019-01-07 | 1 | -1/+5 |
| | |||||
* | gl_shader_cache: Dehardcode constant in CalculateProgramSize() | Lioncash | 2018-12-11 | 1 | -2/+2 |
| | | | | This constant is related to the size of the instruction. | ||||
* | gl_shader_cache: Resolve truncation compiler warning | Lioncash | 2018-12-11 | 1 | -1/+1 |
| | | | | | The previous code would cause a warning, as it was truncating size_t (64-bit) to a u32 (32-bit) implicitly. | ||||
* | Implemented a shader unique identifier. | Fernando Sahmkow | 2018-12-09 | 1 | -0/+45 |
| | |||||
* | shader_cache: Only lock covered instructions. | Markus Wick | 2018-11-20 | 1 | -0/+1 |
| | |||||
* | Merge pull request #1669 from ReinUsesLisp/fixup-gs | bunnei | 2018-11-11 | 1 | -2/+6 |
|\ | | | | | gl_shader_decompiler: Guard out of bound geometry shader input reads | ||||
| * | gl_shader_decompiler: Guard out of bound geometry shader input reads | ReinUsesLisp | 2018-11-10 | 1 | -2/+6 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | Geometry shaders follow a pattern that results in out of bound reads. This pattern is: - VSETP to predicate - Use that predicate to conditionally set a register a big number - Use the register to access geometry shaders At the time of writing this commit I don't know what's the intent of this number. Some drivers argue about these out of bound reads. To avoid this issue, input reads are guarded limiting reads to the highest posible vertex input of the current topology (e.g. points to 1 and triangles to 3). | ||||
* | | rasterizer_cache: Remove reliance on the System singleton | Lioncash | 2018-11-08 | 1 | -1/+3 |
|/ | | | | | | Rather than have a transparent dependency, we can make it explicit in the interface. This also gets rid of the need to put the core include in a header. | ||||
* | video_core: Move OpenGL specific utils to its renderer | ReinUsesLisp | 2018-10-29 | 1 | -2/+3 |
| | |||||
* | gl_shader_decompiler: Implement geometry shaders | ReinUsesLisp | 2018-10-07 | 1 | -5/+29 |
| | |||||
* | Added glObjectLabels for renderdoc for textures and shader programs (#1384) | David | 2018-09-23 | 1 | -0/+2 |
| | | | | | | | | * Added glObjectLabels for renderdoc for textures and shader programs * Changed hardcoded "Texture" name to reflect the texture type instead * Removed string initialize | ||||
* | Port #4182 from Citra: "Prefix all size_t with std::" | fearlessTobi | 2018-09-15 | 1 | -3/+3 |
| | |||||
* | video_core: fixed arithmetic overflow warnings & improved code style | Patrick Elsässer | 2018-09-09 | 1 | -4/+4 |
| | | | | | | | | - Fixed all warnings, for renderer_opengl items, which were indicating a possible incorrect behavior from integral promotion rules and types larger than those in which arithmetic is typically performed. - Added const for variables where possible and meaningful. - Added constexpr where possible. | ||||
* | gl_shader_cache: Use an u32 for the binding point cache. | Markus Wick | 2018-09-04 | 1 | -8/+8 |
| | | | | | | | The std::string generation with its malloc and free requirement was a noticeable overhead. Also switch to an ordered_map to avoid the std::hash call. As those maps usually have a size of two elements, the lookup time shall not matter. | ||||
* | gl_renderer: Cache textures, framebuffers, and shaders based on CPU address. | bunnei | 2018-08-31 | 1 | -11/+7 |
| | |||||
* | gl_shader_cache: Remove unused program_code vector in GetShaderAddress() | Lioncash | 2018-08-28 | 1 | -2/+1 |
| | | | | | | | | Given std::vector is a type with a non-trivial destructor, this variable cannot be optimized away by the compiler, even if unused. Because of that, something that was intended to be fairly lightweight, was actually allocating 32KB and deallocating it at the end of the function. | ||||
* | renderer_opengl: Implement a new shader cache. | bunnei | 2018-08-28 | 1 | -0/+131 |