mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-05-02 10:39:01 +02:00
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2867 Co-authored-by: MaranBr <maranbr@outlook.com> Co-committed-by: MaranBr <maranbr@outlook.com>
This commit is contained in:
parent
6b01c13975
commit
ecf7af0cde
2 changed files with 17 additions and 19 deletions
|
|
@ -12,23 +12,21 @@
|
||||||
namespace Shader::Maxwell {
|
namespace Shader::Maxwell {
|
||||||
namespace {
|
namespace {
|
||||||
enum class Type : u64 {
|
enum class Type : u64 {
|
||||||
_1D = 0,
|
_1D,
|
||||||
_1D_BUFFER = 1,
|
BUFFER_1D,
|
||||||
_1D_ARRAY = 2,
|
ARRAY_1D,
|
||||||
_2D = 3,
|
_2D,
|
||||||
_2D_ARRAY = 4,
|
ARRAY_2D,
|
||||||
_3D = 5,
|
_3D,
|
||||||
_UNK6 = 6,
|
|
||||||
_UNK7 = 7,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class Size : u64 {
|
enum class Size : u64 {
|
||||||
U32,
|
U32,
|
||||||
S32,
|
S32,
|
||||||
U64,
|
U64,
|
||||||
|
S64,
|
||||||
F32FTZRN,
|
F32FTZRN,
|
||||||
F16x2FTZRN,
|
F16x2FTZRN,
|
||||||
S64,
|
|
||||||
SD32,
|
SD32,
|
||||||
SD64,
|
SD64,
|
||||||
};
|
};
|
||||||
|
|
@ -55,19 +53,18 @@ TextureType GetType(Type type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case Type::_1D:
|
case Type::_1D:
|
||||||
return TextureType::Color1D;
|
return TextureType::Color1D;
|
||||||
case Type::_1D_BUFFER:
|
case Type::BUFFER_1D:
|
||||||
return TextureType::Buffer;
|
return TextureType::Buffer;
|
||||||
case Type::_1D_ARRAY:
|
case Type::ARRAY_1D:
|
||||||
return TextureType::ColorArray1D;
|
return TextureType::ColorArray1D;
|
||||||
case Type::_2D:
|
case Type::_2D:
|
||||||
return TextureType::Color2D;
|
return TextureType::Color2D;
|
||||||
case Type::_2D_ARRAY:
|
case Type::ARRAY_2D:
|
||||||
return TextureType::ColorArray2D;
|
return TextureType::ColorArray2D;
|
||||||
case Type::_3D:
|
case Type::_3D:
|
||||||
return TextureType::Color3D;
|
return TextureType::Color3D;
|
||||||
default:
|
|
||||||
throw NotImplementedException("Invalid type {}", type);
|
|
||||||
}
|
}
|
||||||
|
throw NotImplementedException("Invalid type {}", type);
|
||||||
}
|
}
|
||||||
|
|
||||||
IR::Value MakeCoords(TranslatorVisitor& v, IR::Reg reg, Type type) {
|
IR::Value MakeCoords(TranslatorVisitor& v, IR::Reg reg, Type type) {
|
||||||
|
|
@ -76,19 +73,20 @@ IR::Value MakeCoords(TranslatorVisitor& v, IR::Reg reg, Type type) {
|
||||||
}};
|
}};
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case Type::_1D:
|
case Type::_1D:
|
||||||
case Type::_1D_BUFFER:
|
case Type::BUFFER_1D:
|
||||||
return v.X(reg);
|
return v.X(reg);
|
||||||
case Type::_1D_ARRAY:
|
case Type::ARRAY_1D:
|
||||||
return v.ir.CompositeConstruct(v.X(reg), array(1));
|
return v.ir.CompositeConstruct(v.X(reg), array(1));
|
||||||
case Type::_2D:
|
case Type::_2D:
|
||||||
return v.ir.CompositeConstruct(v.X(reg), v.X(reg + 1));
|
return v.ir.CompositeConstruct(v.X(reg), v.X(reg + 1));
|
||||||
case Type::_2D_ARRAY:
|
case Type::ARRAY_2D:
|
||||||
return v.ir.CompositeConstruct(v.X(reg), v.X(reg + 1), array(2));
|
return v.ir.CompositeConstruct(v.X(reg), v.X(reg + 1), array(2));
|
||||||
case Type::_3D:
|
case Type::_3D:
|
||||||
return v.ir.CompositeConstruct(v.X(reg), v.X(reg + 1), v.X(reg + 2));
|
return v.ir.CompositeConstruct(v.X(reg), v.X(reg + 1), v.X(reg + 2));
|
||||||
default:
|
default:
|
||||||
throw NotImplementedException("Invalid type {}", type);
|
break;
|
||||||
}
|
}
|
||||||
|
throw NotImplementedException("Invalid type {}", type);
|
||||||
}
|
}
|
||||||
|
|
||||||
IR::Value ApplyAtomicOp(IR::IREmitter& ir, const IR::U32& handle, const IR::Value& coords,
|
IR::Value ApplyAtomicOp(IR::IREmitter& ir, const IR::U32& handle, const IR::Value& coords,
|
||||||
|
|
|
||||||
|
|
@ -243,7 +243,7 @@ Device::Device(Core::Frontend::EmuWindow& emu_window) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shader_backend == Settings::ShaderBackend::Glsl && is_nvidia) {
|
if (shader_backend == Settings::ShaderBackend::Glsl && is_nvidia) {
|
||||||
const std::string driver_version = version.substr(13);
|
const std::string_view driver_version = version.substr(13);
|
||||||
const int version_major =
|
const int version_major =
|
||||||
std::atoi(driver_version.substr(0, driver_version.find(".")).data());
|
std::atoi(driver_version.substr(0, driver_version.find(".")).data());
|
||||||
if (version_major >= 495) {
|
if (version_major >= 495) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue