Commit Graph

18862 Commits

Author SHA1 Message Date
ReinUsesLisp 5c6dc51c69 shader: Read branch conditions from an instruction
Fixes the identity removal pass.
2021-07-22 21:51:32 -04:00
ReinUsesLisp 43bca14217 glasm: Implement InstanceId and VertexId 2021-07-22 21:51:31 -04:00
ReinUsesLisp 7c24546332 glasm: Add missing return value on move assignment 2021-07-22 21:51:31 -04:00
ReinUsesLisp 64039f6f4b glasm: Fix aliased bitcasts ref counting 2021-07-22 21:51:31 -04:00
ReinUsesLisp 03fc0f42c6 glasm: Remove unintentional comma on vector insert 2021-07-22 21:51:31 -04:00
ReinUsesLisp 0b3a3f35e8 glasm: Implement TEX and TEXS instructions
Remove lod clamp from texture instructions with lod, as this is not
needed (nor supported).
2021-07-22 21:51:31 -04:00
ReinUsesLisp 3d82b30141 glasm: Add support for non-2D texture samples 2021-07-22 21:51:31 -04:00
ReinUsesLisp 9ddbdd90e1 glasm: Reorder unreachable image instructions to the bottom 2021-07-22 21:51:31 -04:00
ReinUsesLisp 771490ebac glasm: Add support for texture offsets 2021-07-22 21:51:31 -04:00
ReinUsesLisp 009721f477 glasm: Improve texture sampling instructions 2021-07-22 21:51:31 -04:00
ReinUsesLisp 22fb9cc538 emit_glasm: Enable ARB_draw_buffers when needed 2021-07-22 21:51:31 -04:00
ReinUsesLisp 059e91d5da emit_glasm: Add support for reading position attributes 2021-07-22 21:51:31 -04:00
lat9nq 69210028b4 shader_recompiler: GCC fixes
Fixes members of unnamed union not being accessible, and one function
without a declaration.
2021-07-22 21:51:31 -04:00
ameerj be403ea956 glasm: Implement rest of shared mem 2021-07-22 21:51:31 -04:00
ReinUsesLisp e45e4d02d3 opengl: Initial (broken) support to GLASM shaders 2021-07-22 21:51:31 -04:00
ReinUsesLisp f2ab3993eb shader: Use a non-trivial dummy to construct ASL node union 2021-07-22 21:51:31 -04:00
ReinUsesLisp 6be1db8873 emit_spirv: Jump to loop body with local variable
Silence unused variable warning
2021-07-22 21:51:31 -04:00
ReinUsesLisp 87c847ddc3 glasm: Implement derivative instructions on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp 6a524ebac6 glasm: Initial (broken) implementation of TEX on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp b31edad7a9 glasm: Implement some graphics instructions on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp 58cf7baaea glasm: Add Void type to GLASM values 2021-07-22 21:51:31 -04:00
ReinUsesLisp 6758e3d946 glasm: Add graphics specific shader declarations to GLASM 2021-07-22 21:51:31 -04:00
ameerj d0c4cca02d glasm: Implement local memory for glasm 2021-07-22 21:51:31 -04:00
ReinUsesLisp cb344497a7 emit_spirv: Add missing block in case 2021-07-22 21:51:31 -04:00
ReinUsesLisp f2ae32fa76 glasm: Initial implementation of phi nodes on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp 55a293a9c8 glasm: Write result to scalar on integer comparison instructions 2021-07-22 21:51:31 -04:00
ReinUsesLisp ffdaa42529 glasm: Declare NV_shader_thread_group when needed 2021-07-22 21:51:31 -04:00
ReinUsesLisp f132d214a1 vk_update_descriptor: Properly initialize payload on the update descriptor queue 2021-07-22 21:51:31 -04:00
ReinUsesLisp 03f6d424ce glasm: Rework control flow introducing a syntax list
This commit regresses VertexA shaders, their transformation pass has to
be adapted to the new control flow.
2021-07-22 21:51:31 -04:00
ameerj 8a556b49cf glasm: Implement Storage atomics
StorageAtomicExchangeU64 is failing test seemingly due to failure storing 64-bit
result into the register
2021-07-22 21:51:31 -04:00
ReinUsesLisp 8331e533f4 glasm: Ensure reg alloc order across compilers on GLASM
Use a struct constructor to serialize register allocation arguments to
ensure registers are allocated in the same order regardless of the
compiler used.

The A and B functions can be called in any order when passed as
arguments to "foo":

  foo(A(), B())

But the order is guaranteed for curly-braced constructor calls in
classes:

  Foo{A(), B()}

Use this to get consistent behavior.
2021-07-22 21:51:31 -04:00
ReinUsesLisp d9a11b2388 glasm: Enable unintentionally disabled register aliasing on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp 3e7dbc81f5 glasm: Review all GLASM insts to be aware of register aliasing 2021-07-22 21:51:31 -04:00
ReinUsesLisp 7273fcab95 glasm: Implement shuffle and vote instructions on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp 3e0e8c952d glasm: Add MUFU instructions to GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp 8a77a1426b glasm: Implement IAbs64 and INeg64 on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp cef625a9b2 shader: Add floating-point rounding to I2F 2021-07-22 21:51:31 -04:00
ReinUsesLisp 00a7d4add9 glasm: Properly clamp Fp64 on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp cfff5bad59 glasm: Fix register allocation when moving immediate on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp c5055cade9 glasm: Implement SelectU64 on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp 56b7f92b56 glasm: Fix clamps so the min value has priority on NAN on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp b5b5006016 glasm: Fix moving U64 immediates to registers in GLASM 2021-07-22 21:51:31 -04:00
ameerj 55801889e1 glasm: Implement storage atomic ops 2021-07-22 21:51:31 -04:00
ReinUsesLisp cbac486530 glasm: Add conversion instructions to GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp db3a10b384 glasm: Add fp min/max insts and fix store for fp64 on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp 763b4a8b16 glasm: Add logical instructions on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp 1f320a9d79 glasm: Remove duplicated Fp64 pack instructions on GLASM 2021-07-22 21:51:30 -04:00
ReinUsesLisp 06bd9acf07 glasm: Remove unnecesary new white space on Clamp GLASM 2021-07-22 21:51:30 -04:00
ReinUsesLisp 45be6d11cc glasm: Add floating-point comparisons on GLASM 2021-07-22 21:51:30 -04:00
ameerj fd6393cb14 emit_glasm: Implement more integer alu ops 2021-07-22 21:51:30 -04:00