Browse Source

revert old mocking for bindless textures (#3331)

this revert is intended to bring back the original behavior (throw exception) for untracked bindless textures.
reason: this was a mock intended to extend ender magnolia's mean time to crash.
by reverting it we will be able to identify more games which rely on bindless textures, and avoid to obfuscate visual issues investigation on them.

this is super safe to merge. if any game that was benefitting of it gets visual regression, we will know immediately via the throw message in logs.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3331
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: Maufeat <sahyno1996@gmail.com>
Co-authored-by: xbzk <xbzk@eden-emu.dev>
Co-committed-by: xbzk <xbzk@eden-emu.dev>
pull/3335/head
xbzk 3 weeks ago
committed by crueter
parent
commit
4ea8311113
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 17
      src/shader_recompiler/ir_opt/texture_pass.cpp

17
src/shader_recompiler/ir_opt/texture_pass.cpp

@ -330,30 +330,15 @@ std::optional<ConstBufferAddr> TryGetConstBuffer(const IR::Inst* inst, Environme
}; };
} }
// TODO:xbzk: shall be dropped when Track method cover all bindless stuff
static ConstBufferAddr last_valid_addr = ConstBufferAddr{
.index = 0,
.offset = 0,
.shift_left = 0,
.secondary_index = 0,
.secondary_offset = 0,
.secondary_shift_left = 0,
.dynamic_offset = {},
.count = 1,
.has_secondary = false,
};
TextureInst MakeInst(Environment& env, IR::Block* block, IR::Inst& inst) { TextureInst MakeInst(Environment& env, IR::Block* block, IR::Inst& inst) {
ConstBufferAddr addr; ConstBufferAddr addr;
if (IsBindless(inst)) { if (IsBindless(inst)) {
const std::optional<ConstBufferAddr> track_addr{Track(inst.Arg(0), env)}; const std::optional<ConstBufferAddr> track_addr{Track(inst.Arg(0), env)};
if (!track_addr) { if (!track_addr) {
//throw NotImplementedException("Failed to track bindless texture constant buffer");
addr = last_valid_addr; // TODO:xbzk: shall be dropped when Track method cover all bindless stuff
throw NotImplementedException("Failed to track bindless texture constant buffer");
} else { } else {
addr = *track_addr; addr = *track_addr;
last_valid_addr = addr; // TODO:xbzk: shall be dropped when Track method cover all bindless stuff
} }
} else { } else {
addr = ConstBufferAddr{ addr = ConstBufferAddr{

Loading…
Cancel
Save