Fix dynarmic submodule (#446)

* Remove dynarmic submodule

* Add dynarmic mirror

* Update oaknut

* Update shader JIT to work with latest oaknut

* Maybe fix oaknut finally

* hlep

* More arm64 shader derps

* Fixing more shader JIT brokenness

* aaaaaaaaaaaa

* Update shader_rec_emitter_arm64.hpp

* Update shader_rec_emitter_arm64.cpp
This commit is contained in:
wheremyfoodat 2024-03-07 17:47:21 +00:00 committed by GitHub
parent 24705fe67e
commit 25d8e5807f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 17 additions and 12 deletions

View file

@ -39,7 +39,7 @@ void ShaderEmitter::compile(const PICAShader& shaderUnit) {
align(16);
l(prologueLabel);
prologueCb = prologueLabel.ptr<PrologueCallback>();
prologueCb = getLabelPointer<PrologueCallback>(prologueLabel);
// Set state pointer to the proper pointer
// state pointer is volatile, no need to preserve it
@ -407,8 +407,9 @@ void ShaderEmitter::storeRegister(QReg source, const PICAShader& shader, u32 des
if (writeMask == 0xf) { // No lanes are masked, just use STR
STR(source, statePointer, offset);
} else {
LDR(scratch1, statePointer, offset); // Load current value
LDR(scratch2, blendMasks.ptr<u8*>() + writeMask * 16); // Load write mask for blending
u8* blendMaskPointer = getLabelPointer<u8*>(blendMasks);
LDR(scratch1, statePointer, offset); // Load current value
LDR(scratch2, blendMaskPointer + writeMask * 16); // Load write mask for blending
BSL(scratch2.B16(), source.B16(), scratch1.B16()); // Scratch2 = (Source & mask) | (original & ~mask)
STR(scratch2, statePointer, offset); // Write it back