summaryrefslogtreecommitdiff
path: root/src/video_core/shader/decode.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* shader: Remove old shader managementGravatar ReinUsesLisp2021-07-221-368/+0
|
* video_core: Rewrite the texture cacheGravatar ReinUsesLisp2020-12-301-3/+3
| | | | | | | | | | | | | | 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 applicableGravatar Lioncash2020-12-071-2/+2
| | | | | | 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.3Gravatar Lioncash2020-12-051-1/+1
| | | | | Cleans out the rest of the occurrences of variable shadowing and makes any further occurrences of shadowing compiler errors.
* shader_ir: Separate float-point comparisons in ordered and unorderedGravatar ReinUsesLisp2020-05-091-1/+1
| | | | | This allows us to use native SPIR-V instructions without having to manually check for NAN.
* Merge pull request #3693 from ReinUsesLisp/clean-samplersGravatar bunnei2020-05-021-9/+9
|\ | | | | shader/texture: Support multiple unknown sampler properties
| * shader_ir: Turn classes into data structuresGravatar ReinUsesLisp2020-04-231-9/+9
| |
* | shader/memory_util: Deduplicate codeGravatar ReinUsesLisp2020-04-261-11/+1
|/ | | | | | | | 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.
* video_core: Rename "const buffer locker" to "registry"Gravatar ReinUsesLisp2020-03-091-2/+2
|
* gl_shader_cache: Rework shader cache and remove post-specializationsGravatar ReinUsesLisp2020-03-091-13/+5
| | | | | Instead of pre-specializing shaders and then post-specializing them, drop the later and only "specialize" the shader while decoding it.
* Shader_IR: Address feedback.Gravatar Fernando Sahmkow2020-01-251-15/+16
|
* Shader_IR: Corrections, styling and extras.Gravatar Fernando Sahmkow2020-01-241-2/+4
|
* Shader_IR: deduce size of indexed samplersGravatar Fernando Sahmkow2020-01-241-0/+36
|
* Shader_IR: Address FeedbackGravatar Fernando Sahmkow2020-01-241-24/+24
|
* Shader_IR: Address FeedbackGravatar Fernando Sahmkow2020-01-241-16/+24
|
* GPU: Implement guest driver profile and deduce texture handler sizes.Gravatar Fernando Sahmkow2020-01-241-0/+21
|
* video_core: Silence implicit conversion warningsGravatar ReinUsesLisp2019-11-081-2/+2
|
* Shader_IR: Address Feedback.Gravatar Fernando Sahmkow2019-10-261-1/+1
|
* gl_shader_decompiler: Move entries to a separate functionGravatar ReinUsesLisp2019-10-251-4/+5
|
* Shader_IR: Implement Fast BRX and allow multi-branches in the CFG.Gravatar Fernando Sahmkow2019-10-251-10/+24
|
* Shader_Cache: setup connection of ConstBufferLockerGravatar Fernando Sahmkow2019-10-251-1/+1
|
* Shader_ir: Address feedbackGravatar Fernando Sahmkow2019-10-041-1/+1
|
* Shader_Ir: Refactor Decompilation process and allow multiple decompilation ↵Gravatar Fernando Sahmkow2019-10-041-25/+61
| | | | modes.
* gl_shader_decompiler: Implement AST decompilingGravatar Fernando Sahmkow2019-10-041-2/+68
|
* shader_ir: Declare Manager and pass it to appropiate programs.Gravatar Fernando Sahmkow2019-10-041-25/+3
|
* shader_ir: Implement VOTEGravatar ReinUsesLisp2019-08-211-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* video_core/shader/decode: Prevent sign-conversion warningsGravatar Lioncash2019-07-181-2/+2
| | | | Makes it explicit that the conversions here are intentional.
* shader_ir: std::move Node instance where applicableGravatar Lioncash2019-07-161-4/+4
| | | | | | | | | These are std::shared_ptr instances underneath the hood, which means copying them isn't as cheap as a regular pointer. Particularly so on weakly-ordered systems. This avoids atomic reference count increments and decrements where they aren't necessary for the core set of operations.
* shader_ir: Add comments on missing instruction.Gravatar Fernando Sahmkow2019-07-091-2/+5
| | | | Also shows Nvidia's address space on comments.
* shader_ir: limit explorastion to best known program size.Gravatar Fernando Sahmkow2019-07-091-1/+1
|
* shader_ir: Correct parsing of scheduling instructions and correct sizingGravatar Fernando Sahmkow2019-07-091-1/+1
|
* shader_ir: Correct max sizingGravatar Fernando Sahmkow2019-07-091-1/+1
|
* shader_ir: Remove unnecessary constructors and use optional for ScanFlow resultGravatar Fernando Sahmkow2019-07-091-5/+5
|
* shader_ir: Corrections, documenting and asserting control_flowGravatar Fernando Sahmkow2019-07-091-5/+5
|
* shader_ir: Unify blocks in decompiled shaders.Gravatar Fernando Sahmkow2019-07-091-8/+27
|
* shader_ir: Decompile Flow StackGravatar Fernando Sahmkow2019-07-091-0/+46
|
* shader_ir: propagate shader size to the IRGravatar Fernando Sahmkow2019-07-091-3/+3
|
* shader_ir: Remove the old scanner.Gravatar Fernando Sahmkow2019-07-091-66/+0
|
* shader_ir: Implement a new shader scannerGravatar Fernando Sahmkow2019-07-091-16/+23
|
* shader: Decode SUST and implement backing image functionalityGravatar ReinUsesLisp2019-06-201-0/+1
|
* shader: Use shared_ptr to store nodes and move initialization to fileGravatar ReinUsesLisp2019-06-051-0/+1
| | | | | | | | | Instead of having a vector of unique_ptr stored in a vector and returning star pointers to this, use shared_ptr. While changing initialization code, move it to a separate file when possible. This is a first step to allow code analysis and node generation beyond the ShaderIR class.
* video_core: Silent -Wswitch warningsGravatar ReinUsesLisp2019-04-181-1/+3
|
* shader/decode: Split memory and texture instructions decodingGravatar ReinUsesLisp2019-02-261-0/+1
|
* shader_ir: Rename BasicBlock to NodeBlockGravatar ReinUsesLisp2019-02-031-30/+29
| | | | It's not always used as a basic block. Rename it for consistency.
* shader_ir: Pass decoded nodes as a whole instead of per basic blocksGravatar ReinUsesLisp2019-02-031-6/+9
| | | | | | | | | Some games call LDG at the top of a basic block, making the tracking heuristic to fail. This commit lets the heuristic the decoded nodes as a whole instead of per basic blocks. This may lead to some false positives but allows it the heuristic to track cases it previously couldn't.
* shader/decode: Avoid a pessimizing std::move within DecodeRange()Gravatar Lioncash2019-01-281-1/+1
| | | | | | std::moveing a local variable in a return statement has the potential to prevent copy elision from occurring, so this can just be converted into a regular return.
* shader_ir: Pass to decoder functions basic block's codeGravatar ReinUsesLisp2019-01-151-32/+33
|
* shader_decode: Implement VMAD and VSETPGravatar ReinUsesLisp2019-01-151-0/+1
|
* video_core: Address feedbackGravatar ReinUsesLisp2019-01-151-0/+4
|
* shader_ir: Fixup file inclusions and clang-formatGravatar ReinUsesLisp2019-01-151-0/+1
|