Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2019-06-07 | shader: Split SSY and PBK stack | ReinUsesLisp | 1 | -4/+27 | |
Hardware testing revealed that SSY and PBK push to a different stack, allowing code like this: SSY label1; PBK label2; SYNC; label1: PBK; label2: EXIT; | |||||
2019-06-06 | shader: Use shared_ptr to store nodes and move initialization to file | ReinUsesLisp | 1 | -31/+31 | |
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. | |||||
2019-06-03 | gl_shader_decompiler: Remove guest "position" varying | ReinUsesLisp | 1 | -19/+19 | |
"position" was being written but not read anywhere besides geometry shaders, where it had the same value as gl_Position. This commit replaces "position" with gl_Position, reducing the complexity of our code and the emitted GLSL code. | |||||
2019-05-30 | gl_rasterizer: Move alpha testing to the OpenGL pipeline | ReinUsesLisp | 1 | -19/+1 | |
Removes the alpha testing code from each fragment shader invocation. | |||||
2019-05-24 | gl_shader_decompiler: Use an if based cbuf indexing for broken drivers | ReinUsesLisp | 1 | -3/+20 | |
The following code is broken on AMD's proprietary GLSL compiler: ```glsl uint idx = ...; vec4 values = ...; float some_value = values[idx & 3]; ``` It index the wrong components, to fix this the following pessimized code is emitted when that bug is present: ```glsl uint idx = ...; vec4 values = ...; float some_value; if ((idx & 3) == 0) some_value = values.x; if ((idx & 3) == 1) some_value = values.y; if ((idx & 3) == 2) some_value = values.z; if ((idx & 3) == 3) some_value = values.w; ``` | |||||
2019-05-21 | renderer_opengl/gl_shader_decompiler: Remove redundant name specification in format string | Lioncash | 1 | -1/+1 | |
This accidentally slipped through a rebase. | |||||
2019-05-20 | shader: Implement S2R Tid{XYZ} and CtaId{XYZ} | ReinUsesLisp | 1 | -0/+16 | |
2019-05-20 | gl_shader_decompiler: Make GetSwizzle constexpr | ReinUsesLisp | 1 | -7/+7 | |
2019-05-20 | gl_shader_decompiler: Tidy up minor remaining cases of unnecessary std::string concatenation | Lioncash | 1 | -21/+20 | |
2019-05-20 | gl_shader_decompiler: Replace individual overloads with the fmt-based one | Lioncash | 1 | -28/+16 | |
Gets rid of the need to special-case brace handling depending on the overload used, and makes it consistent across the board with how fmt handles them. Strings with compile-time deducible strings are directly forwarded to std::string's constructor, so we don't need to worry about the performance difference here, as it'll be identical. | |||||
2019-05-20 | gl_shader_decompiler: Utilize fmt overload of AddLine() where applicable | Lioncash | 1 | -136/+152 | |
2019-05-19 | gl_shader_decompiler: Add AddLine() overload that forwards to fmt | Lioncash | 1 | -0/+11 | |
In a lot of places throughout the decompiler, string concatenation via operator+ is used quite heavily. This is usually fine, when not heavily used, but when used extensively, can be a problem. operator+ creates an entirely new heap allocated temporary string and given we perform expressions like: std::string thing = a + b + c + d; this ends up with a lot of unnecessary temporary strings being created and discarded, which kind of thrashes the heap more than we need to. Given we utilize fmt in some AddLine calls, we can make this a part of the ShaderWriter's API. We can make an overload that simply acts as a passthrough to fmt. This way, whenever things need to be appended to a string, the operation can be done via a single string formatting operation instead of discarding numerous temporary strings. This also has the benefit of making the strings themselves look nicer and makes it easier to spot errors in them. | |||||
2019-05-10 | video_core/renderer_opengl/gl_shader_decompiler: Remove unused Composite() function | Lioncash | 1 | -11/+0 | |
This isn't used at all, so it can be removed. | |||||
2019-05-03 | gl_shader_decompiler: Skip physical unused attributes | ReinUsesLisp | 1 | -18/+27 | |
2019-05-03 | shader: Add physical attributes commentaries | ReinUsesLisp | 1 | -0/+2 | |
2019-05-03 | gl_shader_decompiler: Implement GLSL physical attributes | ReinUsesLisp | 1 | -65/+100 | |
2019-05-03 | gl_shader_decompiler: Abstract generic attribute operations | ReinUsesLisp | 1 | -29/+26 | |
2019-05-03 | gl_shader_decompiler: Declare all possible varyings on physical attribute usage | ReinUsesLisp | 1 | -26/+65 | |
2019-05-03 | shader: Remove unused AbufNode Ipa mode | ReinUsesLisp | 1 | -2/+1 | |
2019-04-16 | shader_ir/decode: Fix half float pre-operations and remove MetaHalfArithmetic | ReinUsesLisp | 1 | -28/+23 | |
Operations done before the main half float operation (like HAdd) were managing a packed value instead of the unpacked one. Adding an unpacked operation allows us to drop the per-operand MetaHalfArithmetic entry, simplifying the code overall. | |||||
2019-04-16 | gl_shader_decompiler: Fix MrgH0 decompilation | ReinUsesLisp | 1 | -2/+2 | |
GLSL decompilation for HMergeH0 was wrong. This addresses that issue. | |||||
2019-04-16 | shader_ir/decode: Implement half float saturation | ReinUsesLisp | 1 | -4/+11 | |
2019-04-16 | renderer_opengl: Implement half float NaN comparisons | ReinUsesLisp | 1 | -18/+42 | |
2019-04-14 | gl_shader_decompiler: Use variable AOFFI on supported hardware | ReinUsesLisp | 1 | -5/+13 | |
2019-04-14 | shader_ir: Implement STG, keep track of global memory usage and flush | ReinUsesLisp | 1 | -11/+25 | |
2019-04-10 | Remove bounding in LD_C | Fernando Sahmkow | 1 | -2/+1 | |
2019-04-05 | gl_shader_decompiler: Rename GenerateTemporal() to GenerateTemporary() | Lioncash | 1 | -12/+12 | |
Temporal generally indicates a relation to time, but this is just creating a temporary, so this isn't really an accurate name for what the function is actually doing. | |||||
2019-04-05 | gl_shader_decompiler: Fix TXQ types | ReinUsesLisp | 1 | -2/+3 | |
TXQ returns integer types. Shaders usually do: R0 = TXQ(); // => int R0 = static_cast<float>(R0); If we don't treat it as an integer, it will cast a binary float value as float - resulting in a corrupted number. | |||||
2019-04-03 | gl_shader_decompiler: Return early when an operation is invalid | ReinUsesLisp | 1 | -1/+6 | |
2019-03-31 | gl_shader_decompiler: Hide local definitions inside an anonymous namespace | ReinUsesLisp | 1 | -6/+8 | |
2019-03-30 | gl_shader_decompiler: Add AOFFI backing implementation | ReinUsesLisp | 1 | -38/+85 | |
2019-02-26 | shader/decode: Remove extras from MetaTexture | ReinUsesLisp | 1 | -21/+35 | |
2019-02-14 | shader_decompiler: Improve Accuracy of Attribute Interpolation. | Fernando Sahmkow | 1 | -27/+17 | |
2019-02-12 | gl_shader_decompiler: Re-implement TLDS lod | ReinUsesLisp | 1 | -21/+34 | |
2019-02-07 | shader_ir: Remove F4 prefix to texture operations | ReinUsesLisp | 1 | -12/+12 | |
This was originally included because texture operations returned a vec4. These operations now return a single float and the F4 prefix doesn't mean anything. | |||||
2019-02-07 | shader_ir: Clean texture management code | ReinUsesLisp | 1 | -32/+41 | |
Previous code relied on GLSL parameter order (something that's always ill-formed on an IR design). This approach passes spatial coordiantes through operation nodes and array and depth compare values in the the texture metadata. It still contains an "extra" vector containing generic nodes for bias and component index (for example) which is still a bit ill-formed but it should be better than the previous approach. | |||||
2019-02-07 | gl_shader_disk_cache: Save GLSL and entries into the precompiled file | ReinUsesLisp | 1 | -3/+4 | |
2019-02-07 | gl_shader_decompiler: Remove name entries | ReinUsesLisp | 1 | -5/+3 | |
2019-02-03 | shader_ir: Rename BasicBlock to NodeBlock | ReinUsesLisp | 1 | -3/+3 | |
It's not always used as a basic block. Rename it for consistency. | |||||
2019-01-30 | shader_ir: Unify constant buffer offset values | ReinUsesLisp | 1 | -2/+3 | |
Constant buffer values on the shader IR were using different offsets if the access direct or indirect. cbuf34 has a non-multiplied offset while cbuf36 does. On shader decoding this commit multiplies it by four on cbuf34 queries. | |||||
2019-01-30 | gl_shader_cache: Use explicit bindings | ReinUsesLisp | 1 | -3/+8 | |
2019-01-30 | shader_decode: Implement LDG and basic cbuf tracking | ReinUsesLisp | 1 | -6/+38 | |
2019-01-15 | gl_shader_decompiler: replace std::get<> with std::get_if<> for macOS compatibility | ReinUsesLisp | 1 | -44/+58 | |
2019-01-15 | gl_shader_decompiler: Inline textureGather component | ReinUsesLisp | 1 | -15/+16 | |
2019-01-15 | shader_ir: Remove composite primitives and use temporals instead | ReinUsesLisp | 1 | -66/+37 | |
2019-01-15 | gl_shader_decompiler: Fixup AssignCompositeHalf | ReinUsesLisp | 1 | -1/+1 | |
2019-01-15 | shader_decode: Use proper primitive names | ReinUsesLisp | 1 | -10/+8 | |
2019-01-15 | shader_decode: Use BitfieldExtract instead of shift + and | ReinUsesLisp | 1 | -0/+7 | |
2019-01-15 | shader_ir: Remove Ipa primitive | ReinUsesLisp | 1 | -8/+0 | |
2019-01-15 | gl_shader_decompiler: Use rasterizer's UBO size limit | ReinUsesLisp | 1 | -1/+3 | |
2019-01-15 | gl_shader_gen: Fixup code formatting | ReinUsesLisp | 1 | -1/+1 | |
2019-01-15 | video_core: Rename glsl_decompiler to gl_shader_decompiler | ReinUsesLisp | 1 | -1/+1 | |
2019-01-15 | shader_ir: Remove RZ and use Register::ZeroIndex instead | ReinUsesLisp | 1 | -4/+5 | |
2019-01-15 | shader_decode: Implement TEXS.F16 | ReinUsesLisp | 1 | -0/+26 | |
2019-01-15 | glsl_decompiler: Fixup TLDS | ReinUsesLisp | 1 | -1/+0 | |
2019-01-15 | glsl_decompiler: Fixup geometry shaders | ReinUsesLisp | 1 | -10/+16 | |
2019-01-15 | glsl_decompiler: Fixup permissive member function declarations | ReinUsesLisp | 1 | -133/+133 | |
2019-01-15 | video_core: Implement IR based geometry shaders | ReinUsesLisp | 1 | -2/+68 | |
2019-01-15 | shader_decode: Implement HSET2 | ReinUsesLisp | 1 | -0/+6 | |
2019-01-15 | shader_decode: Rework HSETP2 | ReinUsesLisp | 1 | -26/+33 | |
2019-01-15 | shader_decode: Implement HFMA2 | ReinUsesLisp | 1 | -4/+5 | |
2019-01-15 | glsl_decompiler: Remove HNegate inlining | ReinUsesLisp | 1 | -10/+0 | |
2019-01-15 | shader_decode: Implement POPC | ReinUsesLisp | 1 | -0/+7 | |
2019-01-15 | shader_decode: Implement TLDS (untested) | ReinUsesLisp | 1 | -2/+27 | |
2019-01-15 | shader_ir: Fixup TEX and TEXS and partially fix TLD4 decompiling | ReinUsesLisp | 1 | -9/+20 | |
2019-01-15 | video_core: Return safe values after an assert hits | ReinUsesLisp | 1 | -0/+5 | |
2019-01-15 | video_core: Address feedback | ReinUsesLisp | 1 | -1/+1 | |
2019-01-15 | glsl_decompiler: Implementation | ReinUsesLisp | 1 | -0/+1393 | |