Feng Chen
1e2a89d306
Add input/output location
4 years ago
Feng Chen
73b11f390e
Add colorfront and txtcoord support
4 years ago
Valeri
beb7305b73
SPIR-V: Merge two ifs in EmitGetAttribute
4 years ago
ReinUsesLisp
8c9febe8f7
shader: Fold UnpackFloat2x16 and PackFloat2x16
Simplifies the code a bit when possible. These instructions should be
no-ops codegen wise.
4 years ago
ReinUsesLisp
1bb46b7d64
shader: Mark ConvertF16F32 and ConvertF32F16 as fp16 instructions
Fixes instances where fp16 types are not declared on SPIR-V but they are
used. This shouldn't happen on master, as it's been uncovered by an
additional optimization pass.
4 years ago
Lioncash
c27ddb44de
exception: Make constructors explicit
Ensures that exception construction is always explicit.
4 years ago
Lioncash
e490ddf327
exception: Make what() member function nodiscard
4 years ago
Lioncash
90f3678ada
exception: Narrow down specific header
We can use the <exception> header instead of pulling in all of the
exception-style classes.
4 years ago
Lioncash
3e7813e49d
emit_glasm: Fix LINESS_ADJACENCY typo in InputPrimitive()
This should be LINES_ADJACENCY
4 years ago
Lioncash
c2915d9f2f
emit_spirv_instructions: Add missing header guard
4 years ago
Lioncash
06ca911621
shader_recompiler: Remove unnecessary [[nodiscard]] instances
[[nodiscard]] doesn't do anything on functions with a void return type
and causes superfluous warnings.
4 years ago
Lioncash
0b67df1f7c
control_flow: Fix duplicate switch case in OpcodeToken
This previously duplicated the case of the PBK case above it.
4 years ago
Lioncash
89ad9df0e9
object_pool: Add missing return in Chunk move assignment operator
Prevents undefined behavior from occurring.
4 years ago
ReinUsesLisp
66a0cedba3
shader: Fold integer FMA from Nvidia's pattern
Fold shaders doing "a * b + c" on integers from the pattern generated by
Nvidia's GL compiler.
On a somewhat complex compute shader it reduces the code size by 16
instructions from 2 matches on Turing GPUs.
On Intel as extracted from KHR_pipeline_executable_properties:
Before the optimization:
```
Instruction Count: 2057
Basic Block Count: 45
Scratch Memory Size: 14752
Spill Count: 232
Fill Count: 261
SEND Count: 610
Cycle Count: 11325
```
After the optimization:
```
Instruction Count: 2046
Basic Block Count: 44
Scratch Memory Size: 13728
Spill Count: 219
Fill Count: 268
SEND Count: 604
Cycle Count: 11367
```
4 years ago
ReinUsesLisp
09fb41dc63
shader: Use TryInstRecursive on XMAD multiply folding
Simplify a bit the logic.
4 years ago
ReinUsesLisp
f6f0383b49
shader: Add TryInstRecursive utility to values
4 years ago
ReinUsesLisp
7f13104c17
shader: Support out of bound local memory reads and immediate writes
Support ignoring immediate out of bound writes. Writing dynamically out
of bounds is not yet supported (e.g. R0+0x4).
Reading out of bounds yields zero. This is supported checking for the
size from the IR; if the input is immediate, the optimization passes
will drop it.
5 years ago
ameerj
56478bc9ac
shader: Fix disabled attribute default values
5 years ago
ameerj
56c30dd9e0
glsl: Simplify FCMP emission
5 years ago
ameerj
79d2684261
glsl: Update TessellationControl gl_in
Adheres to GL_ARB_separate_shader_objects requirements
5 years ago
ameerj
fc7bed21b5
shader: Implement ISETP.X
5 years ago
ReinUsesLisp
bf2956d77a
shader: Avoid usage of C++20 ranges to build in clang
5 years ago
ameerj
94af0a00f6
glsl: Clamp shared mem size to GL_MAX_COMPUTE_SHARED_MEMORY_SIZE
5 years ago
lat9nq
49946cf780
shader_recompiler, video_core: Resolve clang errors
Silences the following warnings-turned-errors:
-Wsign-conversion
-Wunused-private-field
-Wbraced-scalar-init
-Wunused-variable
And some other errors
5 years ago
ReinUsesLisp
2235a51b5d
shader: Manually convert from array<u32> to bitset instead of using bit_cast
5 years ago
ameerj
41c6cb70f9
glsl: Fix tracking of info.uses_shadow_lod
5 years ago
ameerj
11f04f1022
shader: Ignore global memory ops on devices lacking int64 support
5 years ago
ameerj
57f222c56e
dual_vertex_pass: Clang format
5 years ago
ReinUsesLisp
8722668b3c
emit_spirv: Workaround VK_KHR_shader_float_controls on fp16 Nvidia
Fix regression on Fire Emblem: Three Houses when using native fp16.
5 years ago
lat9nq
2e5af95541
shader: GCC fmt 8.0.0 fixes
5 years ago
ameerj
b9069c7891
shader: Account for 33-bit IADD3 scenario
5 years ago
ReinUsesLisp
b21bf79bd2
shader: Only apply shift on register mode for IADD3
5 years ago
ReinUsesLisp
5643a909bc
shader: Fix disabled and unwritten attributes and varyings
5 years ago
ameerj
65daec8b75
glsl: Fix shared and local memory declarations
account for the fact that program.*memory_size is in units of bytes.
5 years ago
ameerj
8289eb108f
opengl: Implement LOP.CC
Used by MH:Rise
5 years ago
ReinUsesLisp
5b2b0634a1
spirv: Fix code emission when descriptor aliasing is unsupported
Fixes OpenGL.
5 years ago
ameerj
00fa09dc45
glsl: Declare local memory in main
5 years ago
ameerj
f7352411f0
glsl: Add passthrough geometry shader support
5 years ago
ReinUsesLisp
8612b5fec5
shader: Use std::bit_cast instead of Common::BitCast for passthrough
5 years ago
ReinUsesLisp
8a3427a4c8
glasm: Add passthrough geometry shader support
5 years ago
ReinUsesLisp
7dafa96ab5
shader: Rework varyings and implement passthrough geometry shaders
Put all varyings into a single std::bitset with helpers to access it.
Implement passthrough geometry shaders using host's.
5 years ago
ReinUsesLisp
ecd6b4356b
shader: Only verify shader when graphics debugging is enabled
5 years ago
ReinUsesLisp
395bed3a0a
shader: Unify shader stage types
5 years ago
lat9nq
257d2aab74
lower_int64_to_int32: Add missing include
5 years ago
ReinUsesLisp
fb166b5ff4
shader: Emulate 64-bit integers when not supported
Useful for mobile and Intel Xe devices.
5 years ago
ReinUsesLisp
d8d5501459
shader: Add int64 to int32 lowering pass
5 years ago
ReinUsesLisp
04ef2160f9
shader: Teach global memory base tracker to follow vectors
5 years ago
ReinUsesLisp
97e80dda55
shader: Add constant propagation to integer vectors
5 years ago
ameerj
27ca8a0e13
glsl: Better IAdd Overflow CC fix
This ensures the original operand values are not overwritten when being used in the overflow detection.
5 years ago
ReinUsesLisp
4397053d5c
shader: Remove IAbs64
5 years ago