ameerj
64337f004d
glsl: Fix "reg" allocing
...
based on glasm with some tweaks
2021-07-22 21:51:35 -04:00
ameerj
eaff1030de
glsl: Initial backend
2021-07-22 21:51:35 -04:00
ReinUsesLisp
3d822faea1
spirv: Reduce log severity of mismatching denorm rules
2021-07-22 21:51:35 -04:00
ReinUsesLisp
7ac55c2a75
shader: Fix loop safety to SSA pass
2021-07-22 21:51:35 -04:00
ReinUsesLisp
61cd7dd301
shader: Add logging
2021-07-22 21:51:35 -04:00
lat9nq
373f75d944
shader: Add shader loop safety check settings
...
Also add a setting for enable Nsight Aftermath.
2021-07-22 21:51:35 -04:00
ReinUsesLisp
487057b8d2
shader: Comment why the array component is not read in TMML
2021-07-22 21:51:35 -04:00
ameerj
3c125d4134
tmml: Remove index component from coords vec
...
The lod query functions exposed by the rendering API's do not make use of the texturearray layer indexing.
2021-07-22 21:51:35 -04:00
ameerj
d52bacf6f0
spirv/convert: Catch more signed operations oversights
...
The sign bit on integers of size < 32 was not properly preserved in casts
2021-07-22 21:51:35 -04:00
ReinUsesLisp
8554a644df
spirv/convert: Catch more broken signed operations on Nvidia OpenGL
...
BitCast U32 to S32 before converting to float on drivers with broken
signed operations.
2021-07-22 21:51:35 -04:00
ameerj
15bdd27cac
shader_environment: Add shader_local_memory_crs_size to local memory size
...
Fixes DOOM 2016 missing local memory
2021-07-22 21:51:35 -04:00
FernandoS27
562af30181
shader: Fix VertexA Shaders.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
ec9a78885e
shader: Add 2D and 3D variants to SUATOM and SURED
...
Used by Claybook.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
4f8b68fb04
shader: Avoid CPU side undefined behavior on I2F
2021-07-22 21:51:34 -04:00
ReinUsesLisp
79f2fe1a39
glasm: Use ARB_derivative_control conditionally
2021-07-22 21:51:34 -04:00
ReinUsesLisp
4a2361a1e2
buffer_cache: Reduce uniform buffer size from shader usage
...
Increases performance significantly on certain titles.
2021-07-22 21:51:34 -04:00
lat9nq
22f0c4f002
emit_glasm_context_get_set: Remove unused variable
2021-07-22 21:51:34 -04:00
ReinUsesLisp
5539b13c5a
shader,glasm: Implement legacy texcoord loads
2021-07-22 21:51:34 -04:00
ReinUsesLisp
cf9f88e5a7
glasm: Implement legacy varyings
2021-07-22 21:51:34 -04:00
ReinUsesLisp
ac0f5d2ab6
shader: Track legacy varyings
2021-07-22 21:51:34 -04:00
ReinUsesLisp
05d41fa9b7
shader: Add support for "negative" and unaligned offsets
...
"Negative" offsets don't exist. They are shown as such due to a bug in
nvdisasm.
Unaligned offsets have been proved to read the aligned offset. For
example, when reading an U32, if the offset is 6, the offset read will
be 4.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
5d170de0b5
shader: Implement ISCADD32I
2021-07-22 21:51:34 -04:00
ReinUsesLisp
adc43297c5
spirv: Fix output generics with components
2021-07-22 21:51:34 -04:00
ReinUsesLisp
916ca74324
opengl: Declare fragment outputs even if they are not used
...
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.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
329dea217d
shader: Always initialize up reference in structure control flow
...
Fixes ubsan issue.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
d093522fac
shader: Fix ImageWrite indexing
2021-07-22 21:51:34 -04:00
ReinUsesLisp
d738ad4d0b
spirv: Fix image and image buffer descriptor index usage
2021-07-22 21:51:34 -04:00
ReinUsesLisp
eb8464cb3d
glasm: Fix immediate texture coordinate
2021-07-22 21:51:34 -04:00
ReinUsesLisp
457dda69cc
shader: Clang-format secondary textures
2021-07-22 21:51:34 -04:00
ReinUsesLisp
627161c38e
shader: Fix secondary textures
2021-07-22 21:51:34 -04:00
ReinUsesLisp
b659212dbd
shader: Fix TMML queries
2021-07-22 21:51:34 -04:00
ReinUsesLisp
fbf5cdcba0
shader: Fix FSwizzleAdd folding when going through phi nodes
2021-07-22 21:51:34 -04:00
ReinUsesLisp
871c9f1ced
shader/exception: Fix compilation errors on gcc
2021-07-22 21:51:34 -04:00
ReinUsesLisp
b6c087496b
glasm: Reduce reg allocation leaks from an exception to a log
2021-07-22 21:51:34 -04:00
ReinUsesLisp
b7764c3a79
shader: Handle host exceptions
2021-07-22 21:51:34 -04:00
ReinUsesLisp
83db7abae6
glasm: Use integer lod for TXQ
2021-07-22 21:51:33 -04:00
ReinUsesLisp
e240a62017
glasm: Fix global memory fallbacks
2021-07-22 21:51:33 -04:00
ReinUsesLisp
8f3043c3cf
Revert "glasm: Skip phi moves on undefined instructions"
...
Causes regressions on Bowser's Fury.
2021-07-22 21:51:33 -04:00
ReinUsesLisp
2aa30353b7
glasm: Remove unintentional '\n' on Undef32
2021-07-22 21:51:33 -04:00
ReinUsesLisp
adb591a757
glasm: Use storage buffers instead of global memory when possible
2021-07-22 21:51:33 -04:00
ReinUsesLisp
f58f79c85d
glasm: Implement Y direction
2021-07-22 21:51:33 -04:00
ReinUsesLisp
586c785366
glasm: Skip phi moves on undefined instructions
2021-07-22 21:51:33 -04:00
ReinUsesLisp
b9c8814ea9
glasm: Implement undef instructions
2021-07-22 21:51:33 -04:00
ReinUsesLisp
8763cc1ff7
glasm: Fix global memory callbacks
2021-07-22 21:51:33 -04:00
ReinUsesLisp
a49532c8eb
video_core,shader: Clang-format fixes
2021-07-22 21:51:33 -04:00
ReinUsesLisp
48aafe0961
glasm: Release phi node registers after they are no longer needed
2021-07-22 21:51:33 -04:00
ReinUsesLisp
77ee733c3a
glasm: Remove unintentionally committed fmt::prints
2021-07-22 21:51:33 -04:00
ReinUsesLisp
70c9281fbf
glasm: Fix INeg32 on negative immediates
2021-07-22 21:51:33 -04:00
ReinUsesLisp
75fd0079db
glasm: Remove unnecessary value types
2021-07-22 21:51:33 -04:00
ReinUsesLisp
379b305b4b
glasm: Throw when there are register leaks
2021-07-22 21:51:33 -04:00
ReinUsesLisp
ca05a13c62
glasm: Catch more register leaks
...
Add support for null registers. These are used when an instruction has
no usages.
This comes handy when an instruction is only used for its CC value, with
the caveat of having to invalidate all pseudo-instructions before
defining the instruction itself in the register allocator. This commits
changes this.
Workaround a bug on Nvidia's condition codes conditional execution using
branches.
2021-07-22 21:51:33 -04:00
ReinUsesLisp
9fbfe7d676
glasm: Fix usage counting on phi nodes
2021-07-22 21:51:33 -04:00
ReinUsesLisp
c721767bcc
glasm: Implement global memory fallbacks
2021-07-22 21:51:33 -04:00
ReinUsesLisp
0794273870
glasm: Implement int64 add and subtract
2021-07-22 21:51:33 -04:00
lat9nq
7fdf0d7d33
emit_glasm_context_get_set: Remove unused variable
2021-07-22 21:51:33 -04:00
ReinUsesLisp
e30d4fa976
glasm: Implement indirect attribute loads
2021-07-22 21:51:33 -04:00
ReinUsesLisp
c8414e686f
glasm: Implement image atomics
2021-07-22 21:51:33 -04:00
ReinUsesLisp
3a7ca6a7db
glasm: Reorder unreachable image atomic insts
...
Reorder them to the bottom of the file for readability.
2021-07-22 21:51:33 -04:00
ReinUsesLisp
e565eb361a
glasm: Implement gl_Layer stores
2021-07-22 21:51:33 -04:00
ReinUsesLisp
89e341d56a
glasm: Implement SampleId
2021-07-22 21:51:33 -04:00
ReinUsesLisp
77d8c44b68
glasm: Implement IsHelperInvocation
2021-07-22 21:51:33 -04:00
ReinUsesLisp
ddf601919f
glasm: Fix EmitVertex's optimization
2021-07-22 21:51:33 -04:00
ReinUsesLisp
c31521512f
gl_shader_cache,glasm: Conditionally use typeless image reads extension
2021-07-22 21:51:33 -04:00
ReinUsesLisp
84feabac88
glasm: Implement forced early Z
2021-07-22 21:51:33 -04:00
ReinUsesLisp
7dadb2bef3
glasm: Simplify patch reads
2021-07-22 21:51:33 -04:00
ReinUsesLisp
b382f57b28
glasm: Fix output patch reads
...
With this, Luigi's Mansion's sand renders properly.
2021-07-22 21:51:33 -04:00
ReinUsesLisp
9e7b6622c2
shader: Split profile and runtime information in separate structs
2021-07-22 21:51:33 -04:00
ameerj
eb15667905
emit_glasm_context_get_and_set.cpp: Add missing semicolons
2021-07-22 21:51:33 -04:00
ReinUsesLisp
781a87175c
glasm: Fix patch attribute declarations
2021-07-22 21:51:33 -04:00
ameerj
36d040da70
glasm: Implement FSWZADD
2021-07-22 21:51:33 -04:00
ReinUsesLisp
3da7b98d37
glasm: Implement PrimitiveId attribute read
2021-07-22 21:51:33 -04:00
ReinUsesLisp
394b96a2fe
glasm: Implement clip distance stores
2021-07-22 21:51:32 -04:00
ReinUsesLisp
a5d978e91e
glasm: Fix tessellation input attributes
2021-07-22 21:51:32 -04:00
ReinUsesLisp
0d7d85c81e
glasm: Add missing semicolon on tesscoord reading
2021-07-22 21:51:32 -04:00
ReinUsesLisp
48d4e26326
glasm: Fix tessellation headers
2021-07-22 21:51:32 -04:00
ReinUsesLisp
9ec2303ad6
glasm: Add tessellation shader declarations
2021-07-22 21:51:32 -04:00
ReinUsesLisp
2913ca811e
glasm: Implement TessellationEvaluationPoint
2021-07-22 21:51:32 -04:00
ReinUsesLisp
a569ac418e
glasm: Implement patch memory
2021-07-22 21:51:32 -04:00
ReinUsesLisp
164b8c1ec5
glasm: Fix InvocationId declaration
2021-07-22 21:51:32 -04:00
ReinUsesLisp
d5db96386d
glasm: Implement InvocationId
2021-07-22 21:51:32 -04:00
ReinUsesLisp
679e7146a7
glasm: Optimize EmitVertex into EMIT
2021-07-22 21:51:32 -04:00
ReinUsesLisp
79929be833
glasm: Implement geometry shader attribute reads
2021-07-22 21:51:32 -04:00
ReinUsesLisp
83cef0426b
glasm: Properly declare attributes on geometry programs
2021-07-22 21:51:32 -04:00
ReinUsesLisp
fad139a3e6
glasm: Declare geometry program headers
2021-07-22 21:51:32 -04:00
ReinUsesLisp
0a54291c9c
glasm: Fix potential aliasing bug on cube array samples
2021-07-22 21:51:32 -04:00
ReinUsesLisp
8fdb00a2b5
glasm: Implement ImageWrite
2021-07-22 21:51:32 -04:00
ReinUsesLisp
dadd192b30
glasm: Implement ImageRead
2021-07-22 21:51:32 -04:00
ReinUsesLisp
3d0ffc6ad0
glasm: Implement EmitVertex and EndPrimitive
2021-07-22 21:51:32 -04:00
ReinUsesLisp
f79cbbf814
glasm: Implement ImageGradient
2021-07-22 21:51:32 -04:00
ReinUsesLisp
291f220be3
glasm: Implement 64-bit shifts
2021-07-22 21:51:32 -04:00
ReinUsesLisp
d957b3a8fe
glasm: Implement barriers
2021-07-22 21:51:32 -04:00
ReinUsesLisp
b60b3fa113
glasm: Fix compute stage name
2021-07-22 21:51:32 -04:00
ReinUsesLisp
96962c1d3c
glasm: Fix phi instruction types
2021-07-22 21:51:32 -04:00
ReinUsesLisp
91a3c2c1c0
glasm: Implement PREC on relevant instructions
2021-07-22 21:51:32 -04:00
ReinUsesLisp
accad56ee7
glasm: Implement stores to gl_ViewportIndex
2021-07-22 21:51:32 -04:00
ReinUsesLisp
2494dbe183
glasm: Implement gl_PointSize stores
2021-07-22 21:51:32 -04:00
ReinUsesLisp
9415c435fc
glasm: Implement gl_PointCoord
2021-07-22 21:51:32 -04:00
ReinUsesLisp
12dcb9fcc2
glasm: Implement ImageQueryLod
2021-07-22 21:51:32 -04:00
ReinUsesLisp
4a22942f45
glasm: Implement ImageFetch
2021-07-22 21:51:32 -04:00
ameerj
3777592ada
glasm: Implement IADD.CC
2021-07-22 21:51:32 -04:00