diff options
| -rw-r--r-- | src/common/logging/backend.cpp | 5 | ||||
| -rw-r--r-- | src/core/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp | 34 | ||||
| -rw-r--r-- | src/core/hle/service/nvdrv/devices/nvhost_nvjpg.h | 36 | ||||
| -rw-r--r-- | src/core/hle/service/nvdrv/devices/nvhost_vic.cpp | 34 | ||||
| -rw-r--r-- | src/core/hle/service/nvdrv/devices/nvhost_vic.h | 36 | ||||
| -rw-r--r-- | src/core/hle/service/nvdrv/nvdrv.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/gpu.cpp | 1 | ||||
| -rw-r--r-- | src/video_core/gpu.h | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | 5 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer_cache.h | 80 |
11 files changed, 200 insertions, 40 deletions
diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp index e80784c3c..1323f8d0f 100644 --- a/src/common/logging/backend.cpp +++ b/src/common/logging/backend.cpp | |||
| @@ -302,13 +302,14 @@ Backend* GetBackend(std::string_view backend_name) { | |||
| 302 | void FmtLogMessageImpl(Class log_class, Level log_level, const char* filename, | 302 | void FmtLogMessageImpl(Class log_class, Level log_level, const char* filename, |
| 303 | unsigned int line_num, const char* function, const char* format, | 303 | unsigned int line_num, const char* function, const char* format, |
| 304 | const fmt::format_args& args) { | 304 | const fmt::format_args& args) { |
| 305 | auto filter = Impl::Instance().GetGlobalFilter(); | 305 | auto& instance = Impl::Instance(); |
| 306 | const auto& filter = instance.GetGlobalFilter(); | ||
| 306 | if (!filter.CheckMessage(log_class, log_level)) | 307 | if (!filter.CheckMessage(log_class, log_level)) |
| 307 | return; | 308 | return; |
| 308 | 309 | ||
| 309 | Entry entry = | 310 | Entry entry = |
| 310 | CreateEntry(log_class, log_level, filename, line_num, function, fmt::vformat(format, args)); | 311 | CreateEntry(log_class, log_level, filename, line_num, function, fmt::vformat(format, args)); |
| 311 | 312 | ||
| 312 | Impl::Instance().PushEntry(std::move(entry)); | 313 | instance.PushEntry(std::move(entry)); |
| 313 | } | 314 | } |
| 314 | } // namespace Log | 315 | } // namespace Log |
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index cceb1564b..0b0ae5ccc 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt | |||
| @@ -249,6 +249,10 @@ add_library(core STATIC | |||
| 249 | hle/service/nvdrv/devices/nvhost_gpu.h | 249 | hle/service/nvdrv/devices/nvhost_gpu.h |
| 250 | hle/service/nvdrv/devices/nvhost_nvdec.cpp | 250 | hle/service/nvdrv/devices/nvhost_nvdec.cpp |
| 251 | hle/service/nvdrv/devices/nvhost_nvdec.h | 251 | hle/service/nvdrv/devices/nvhost_nvdec.h |
| 252 | hle/service/nvdrv/devices/nvhost_nvjpg.cpp | ||
| 253 | hle/service/nvdrv/devices/nvhost_nvjpg.h | ||
| 254 | hle/service/nvdrv/devices/nvhost_vic.cpp | ||
| 255 | hle/service/nvdrv/devices/nvhost_vic.h | ||
| 252 | hle/service/nvdrv/devices/nvmap.cpp | 256 | hle/service/nvdrv/devices/nvmap.cpp |
| 253 | hle/service/nvdrv/devices/nvmap.h | 257 | hle/service/nvdrv/devices/nvmap.h |
| 254 | hle/service/nvdrv/interface.cpp | 258 | hle/service/nvdrv/interface.cpp |
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp b/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp new file mode 100644 index 000000000..51f01077b --- /dev/null +++ b/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp | |||
| @@ -0,0 +1,34 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include <cstring> | ||
| 6 | |||
| 7 | #include "common/assert.h" | ||
| 8 | #include "common/logging/log.h" | ||
| 9 | #include "core/hle/service/nvdrv/devices/nvhost_nvjpg.h" | ||
| 10 | |||
| 11 | namespace Service::Nvidia::Devices { | ||
| 12 | |||
| 13 | u32 nvhost_nvjpg::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) { | ||
| 14 | LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}", | ||
| 15 | command.raw, input.size(), output.size()); | ||
| 16 | |||
| 17 | switch (static_cast<IoctlCommand>(command.raw)) { | ||
| 18 | case IoctlCommand::IocSetNVMAPfdCommand: | ||
| 19 | return SetNVMAPfd(input, output); | ||
| 20 | } | ||
| 21 | |||
| 22 | UNIMPLEMENTED_MSG("Unimplemented ioctl"); | ||
| 23 | return 0; | ||
| 24 | } | ||
| 25 | |||
| 26 | u32 nvhost_nvjpg::SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& output) { | ||
| 27 | IoctlSetNvmapFD params{}; | ||
| 28 | std::memcpy(¶ms, input.data(), input.size()); | ||
| 29 | LOG_DEBUG(Service_NVDRV, "called, fd={}", params.nvmap_fd); | ||
| 30 | nvmap_fd = params.nvmap_fd; | ||
| 31 | return 0; | ||
| 32 | } | ||
| 33 | |||
| 34 | } // namespace Service::Nvidia::Devices | ||
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.h b/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.h new file mode 100644 index 000000000..2b0eb43ee --- /dev/null +++ b/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.h | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include <vector> | ||
| 8 | #include "common/common_types.h" | ||
| 9 | #include "common/swap.h" | ||
| 10 | #include "core/hle/service/nvdrv/devices/nvdevice.h" | ||
| 11 | |||
| 12 | namespace Service::Nvidia::Devices { | ||
| 13 | |||
| 14 | class nvhost_nvjpg final : public nvdevice { | ||
| 15 | public: | ||
| 16 | nvhost_nvjpg() = default; | ||
| 17 | ~nvhost_nvjpg() override = default; | ||
| 18 | |||
| 19 | u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override; | ||
| 20 | |||
| 21 | private: | ||
| 22 | enum class IoctlCommand : u32_le { | ||
| 23 | IocSetNVMAPfdCommand = 0x40044801, | ||
| 24 | }; | ||
| 25 | |||
| 26 | struct IoctlSetNvmapFD { | ||
| 27 | u32_le nvmap_fd; | ||
| 28 | }; | ||
| 29 | static_assert(sizeof(IoctlSetNvmapFD) == 4, "IoctlSetNvmapFD is incorrect size"); | ||
| 30 | |||
| 31 | u32_le nvmap_fd{}; | ||
| 32 | |||
| 33 | u32 SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& output); | ||
| 34 | }; | ||
| 35 | |||
| 36 | } // namespace Service::Nvidia::Devices | ||
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp b/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp new file mode 100644 index 000000000..fcb488d50 --- /dev/null +++ b/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp | |||
| @@ -0,0 +1,34 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include <cstring> | ||
| 6 | |||
| 7 | #include "common/assert.h" | ||
| 8 | #include "common/logging/log.h" | ||
| 9 | #include "core/hle/service/nvdrv/devices/nvhost_vic.h" | ||
| 10 | |||
| 11 | namespace Service::Nvidia::Devices { | ||
| 12 | |||
| 13 | u32 nvhost_vic::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) { | ||
| 14 | LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}", | ||
| 15 | command.raw, input.size(), output.size()); | ||
| 16 | |||
| 17 | switch (static_cast<IoctlCommand>(command.raw)) { | ||
| 18 | case IoctlCommand::IocSetNVMAPfdCommand: | ||
| 19 | return SetNVMAPfd(input, output); | ||
| 20 | } | ||
| 21 | |||
| 22 | UNIMPLEMENTED_MSG("Unimplemented ioctl"); | ||
| 23 | return 0; | ||
| 24 | } | ||
| 25 | |||
| 26 | u32 nvhost_vic::SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& output) { | ||
| 27 | IoctlSetNvmapFD params{}; | ||
| 28 | std::memcpy(¶ms, input.data(), input.size()); | ||
| 29 | LOG_DEBUG(Service_NVDRV, "called, fd={}", params.nvmap_fd); | ||
| 30 | nvmap_fd = params.nvmap_fd; | ||
| 31 | return 0; | ||
| 32 | } | ||
| 33 | |||
| 34 | } // namespace Service::Nvidia::Devices | ||
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_vic.h b/src/core/hle/service/nvdrv/devices/nvhost_vic.h new file mode 100644 index 000000000..c7d681e52 --- /dev/null +++ b/src/core/hle/service/nvdrv/devices/nvhost_vic.h | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include <vector> | ||
| 8 | #include "common/common_types.h" | ||
| 9 | #include "common/swap.h" | ||
| 10 | #include "core/hle/service/nvdrv/devices/nvdevice.h" | ||
| 11 | |||
| 12 | namespace Service::Nvidia::Devices { | ||
| 13 | |||
| 14 | class nvhost_vic final : public nvdevice { | ||
| 15 | public: | ||
| 16 | nvhost_vic() = default; | ||
| 17 | ~nvhost_vic() override = default; | ||
| 18 | |||
| 19 | u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override; | ||
| 20 | |||
| 21 | private: | ||
| 22 | enum class IoctlCommand : u32_le { | ||
| 23 | IocSetNVMAPfdCommand = 0x40044801, | ||
| 24 | }; | ||
| 25 | |||
| 26 | struct IoctlSetNvmapFD { | ||
| 27 | u32_le nvmap_fd; | ||
| 28 | }; | ||
| 29 | static_assert(sizeof(IoctlSetNvmapFD) == 4, "IoctlSetNvmapFD is incorrect size"); | ||
| 30 | |||
| 31 | u32_le nvmap_fd{}; | ||
| 32 | |||
| 33 | u32 SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& output); | ||
| 34 | }; | ||
| 35 | |||
| 36 | } // namespace Service::Nvidia::Devices | ||
diff --git a/src/core/hle/service/nvdrv/nvdrv.cpp b/src/core/hle/service/nvdrv/nvdrv.cpp index 427f4b574..2de39822f 100644 --- a/src/core/hle/service/nvdrv/nvdrv.cpp +++ b/src/core/hle/service/nvdrv/nvdrv.cpp | |||
| @@ -12,6 +12,8 @@ | |||
| 12 | #include "core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.h" | 12 | #include "core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.h" |
| 13 | #include "core/hle/service/nvdrv/devices/nvhost_gpu.h" | 13 | #include "core/hle/service/nvdrv/devices/nvhost_gpu.h" |
| 14 | #include "core/hle/service/nvdrv/devices/nvhost_nvdec.h" | 14 | #include "core/hle/service/nvdrv/devices/nvhost_nvdec.h" |
| 15 | #include "core/hle/service/nvdrv/devices/nvhost_nvjpg.h" | ||
| 16 | #include "core/hle/service/nvdrv/devices/nvhost_vic.h" | ||
| 15 | #include "core/hle/service/nvdrv/devices/nvmap.h" | 17 | #include "core/hle/service/nvdrv/devices/nvmap.h" |
| 16 | #include "core/hle/service/nvdrv/interface.h" | 18 | #include "core/hle/service/nvdrv/interface.h" |
| 17 | #include "core/hle/service/nvdrv/nvdrv.h" | 19 | #include "core/hle/service/nvdrv/nvdrv.h" |
| @@ -39,6 +41,8 @@ Module::Module() { | |||
| 39 | devices["/dev/nvdisp_disp0"] = std::make_shared<Devices::nvdisp_disp0>(nvmap_dev); | 41 | devices["/dev/nvdisp_disp0"] = std::make_shared<Devices::nvdisp_disp0>(nvmap_dev); |
| 40 | devices["/dev/nvhost-ctrl"] = std::make_shared<Devices::nvhost_ctrl>(); | 42 | devices["/dev/nvhost-ctrl"] = std::make_shared<Devices::nvhost_ctrl>(); |
| 41 | devices["/dev/nvhost-nvdec"] = std::make_shared<Devices::nvhost_nvdec>(); | 43 | devices["/dev/nvhost-nvdec"] = std::make_shared<Devices::nvhost_nvdec>(); |
| 44 | devices["/dev/nvhost-nvjpg"] = std::make_shared<Devices::nvhost_nvjpg>(); | ||
| 45 | devices["/dev/nvhost-vic"] = std::make_shared<Devices::nvhost_vic>(); | ||
| 42 | } | 46 | } |
| 43 | 47 | ||
| 44 | u32 Module::Open(const std::string& device_name) { | 48 | u32 Module::Open(const std::string& device_name) { |
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp index c9f6b82b7..5a593c1f7 100644 --- a/src/video_core/gpu.cpp +++ b/src/video_core/gpu.cpp | |||
| @@ -47,6 +47,7 @@ u32 RenderTargetBytesPerPixel(RenderTargetFormat format) { | |||
| 47 | case RenderTargetFormat::RGBA32_UINT: | 47 | case RenderTargetFormat::RGBA32_UINT: |
| 48 | return 16; | 48 | return 16; |
| 49 | case RenderTargetFormat::RGBA16_UINT: | 49 | case RenderTargetFormat::RGBA16_UINT: |
| 50 | case RenderTargetFormat::RGBA16_UNORM: | ||
| 50 | case RenderTargetFormat::RGBA16_FLOAT: | 51 | case RenderTargetFormat::RGBA16_FLOAT: |
| 51 | case RenderTargetFormat::RG32_FLOAT: | 52 | case RenderTargetFormat::RG32_FLOAT: |
| 52 | case RenderTargetFormat::RG32_UINT: | 53 | case RenderTargetFormat::RG32_UINT: |
diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h index 8a90a3a66..97dcccb92 100644 --- a/src/video_core/gpu.h +++ b/src/video_core/gpu.h | |||
| @@ -20,6 +20,7 @@ enum class RenderTargetFormat : u32 { | |||
| 20 | NONE = 0x0, | 20 | NONE = 0x0, |
| 21 | RGBA32_FLOAT = 0xC0, | 21 | RGBA32_FLOAT = 0xC0, |
| 22 | RGBA32_UINT = 0xC2, | 22 | RGBA32_UINT = 0xC2, |
| 23 | RGBA16_UNORM = 0xC6, | ||
| 23 | RGBA16_UINT = 0xC9, | 24 | RGBA16_UINT = 0xC9, |
| 24 | RGBA16_FLOAT = 0xCA, | 25 | RGBA16_FLOAT = 0xCA, |
| 25 | RG32_FLOAT = 0xCB, | 26 | RG32_FLOAT = 0xCB, |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp index 4b48ab8e2..5d58ebd4f 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | |||
| @@ -101,6 +101,7 @@ static constexpr std::array<FormatTuple, SurfaceParams::MaxPixelFormat> tex_form | |||
| 101 | {GL_R8, GL_RED, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // R8 | 101 | {GL_R8, GL_RED, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // R8 |
| 102 | {GL_R8UI, GL_RED_INTEGER, GL_UNSIGNED_BYTE, ComponentType::UInt, false}, // R8UI | 102 | {GL_R8UI, GL_RED_INTEGER, GL_UNSIGNED_BYTE, ComponentType::UInt, false}, // R8UI |
| 103 | {GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT, ComponentType::Float, false}, // RGBA16F | 103 | {GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT, ComponentType::Float, false}, // RGBA16F |
| 104 | {GL_RGBA16, GL_RGBA, GL_UNSIGNED_SHORT, ComponentType::UNorm, false}, // RGBA16U | ||
| 104 | {GL_RGBA16UI, GL_RGBA, GL_UNSIGNED_SHORT, ComponentType::UInt, false}, // RGBA16UI | 105 | {GL_RGBA16UI, GL_RGBA, GL_UNSIGNED_SHORT, ComponentType::UInt, false}, // RGBA16UI |
| 105 | {GL_R11F_G11F_B10F, GL_RGB, GL_UNSIGNED_INT_10F_11F_11F_REV, ComponentType::Float, | 106 | {GL_R11F_G11F_B10F, GL_RGB, GL_UNSIGNED_INT_10F_11F_11F_REV, ComponentType::Float, |
| 106 | false}, // R11FG11FB10F | 107 | false}, // R11FG11FB10F |
| @@ -115,7 +116,7 @@ static constexpr std::array<FormatTuple, SurfaceParams::MaxPixelFormat> tex_form | |||
| 115 | {GL_COMPRESSED_RG_RGTC2, GL_RG, GL_UNSIGNED_INT_8_8_8_8, ComponentType::UNorm, | 116 | {GL_COMPRESSED_RG_RGTC2, GL_RG, GL_UNSIGNED_INT_8_8_8_8, ComponentType::UNorm, |
| 116 | true}, // DXN2UNORM | 117 | true}, // DXN2UNORM |
| 117 | {GL_COMPRESSED_SIGNED_RG_RGTC2, GL_RG, GL_INT, ComponentType::SNorm, true}, // DXN2SNORM | 118 | {GL_COMPRESSED_SIGNED_RG_RGTC2, GL_RG, GL_INT, ComponentType::SNorm, true}, // DXN2SNORM |
| 118 | {GL_COMPRESSED_RGBA_BPTC_UNORM_ARB, GL_RGB, GL_UNSIGNED_INT_8_8_8_8, ComponentType::UNorm, | 119 | {GL_COMPRESSED_RGBA_BPTC_UNORM_ARB, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, ComponentType::UNorm, |
| 119 | true}, // BC7U | 120 | true}, // BC7U |
| 120 | {GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_4X4 | 121 | {GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_4X4 |
| 121 | {GL_RG8, GL_RG, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // G8R8 | 122 | {GL_RG8, GL_RG, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // G8R8 |
| @@ -247,6 +248,7 @@ static constexpr std::array<void (*)(u32, u32, u32, std::vector<u8>&, Tegra::GPU | |||
| 247 | MortonCopy<true, PixelFormat::R8>, | 248 | MortonCopy<true, PixelFormat::R8>, |
| 248 | MortonCopy<true, PixelFormat::R8UI>, | 249 | MortonCopy<true, PixelFormat::R8UI>, |
| 249 | MortonCopy<true, PixelFormat::RGBA16F>, | 250 | MortonCopy<true, PixelFormat::RGBA16F>, |
| 251 | MortonCopy<true, PixelFormat::RGBA16U>, | ||
| 250 | MortonCopy<true, PixelFormat::RGBA16UI>, | 252 | MortonCopy<true, PixelFormat::RGBA16UI>, |
| 251 | MortonCopy<true, PixelFormat::R11FG11FB10F>, | 253 | MortonCopy<true, PixelFormat::R11FG11FB10F>, |
| 252 | MortonCopy<true, PixelFormat::RGBA32UI>, | 254 | MortonCopy<true, PixelFormat::RGBA32UI>, |
| @@ -299,6 +301,7 @@ static constexpr std::array<void (*)(u32, u32, u32, std::vector<u8>&, Tegra::GPU | |||
| 299 | MortonCopy<false, PixelFormat::R8>, | 301 | MortonCopy<false, PixelFormat::R8>, |
| 300 | MortonCopy<false, PixelFormat::R8UI>, | 302 | MortonCopy<false, PixelFormat::R8UI>, |
| 301 | MortonCopy<false, PixelFormat::RGBA16F>, | 303 | MortonCopy<false, PixelFormat::RGBA16F>, |
| 304 | MortonCopy<false, PixelFormat::RGBA16U>, | ||
| 302 | MortonCopy<false, PixelFormat::RGBA16UI>, | 305 | MortonCopy<false, PixelFormat::RGBA16UI>, |
| 303 | MortonCopy<false, PixelFormat::R11FG11FB10F>, | 306 | MortonCopy<false, PixelFormat::R11FG11FB10F>, |
| 304 | MortonCopy<false, PixelFormat::RGBA32UI>, | 307 | MortonCopy<false, PixelFormat::RGBA32UI>, |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.h b/src/video_core/renderer_opengl/gl_rasterizer_cache.h index 630b40e77..36a41522b 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.h +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.h | |||
| @@ -31,47 +31,48 @@ struct SurfaceParams { | |||
| 31 | R8 = 5, | 31 | R8 = 5, |
| 32 | R8UI = 6, | 32 | R8UI = 6, |
| 33 | RGBA16F = 7, | 33 | RGBA16F = 7, |
| 34 | RGBA16UI = 8, | 34 | RGBA16U = 8, |
| 35 | R11FG11FB10F = 9, | 35 | RGBA16UI = 9, |
| 36 | RGBA32UI = 10, | 36 | R11FG11FB10F = 10, |
| 37 | DXT1 = 11, | 37 | RGBA32UI = 11, |
| 38 | DXT23 = 12, | 38 | DXT1 = 12, |
| 39 | DXT45 = 13, | 39 | DXT23 = 13, |
| 40 | DXN1 = 14, // This is also known as BC4 | 40 | DXT45 = 14, |
| 41 | DXN2UNORM = 15, | 41 | DXN1 = 15, // This is also known as BC4 |
| 42 | DXN2SNORM = 16, | 42 | DXN2UNORM = 16, |
| 43 | BC7U = 17, | 43 | DXN2SNORM = 17, |
| 44 | ASTC_2D_4X4 = 18, | 44 | BC7U = 18, |
| 45 | G8R8 = 19, | 45 | ASTC_2D_4X4 = 19, |
| 46 | BGRA8 = 20, | 46 | G8R8 = 20, |
| 47 | RGBA32F = 21, | 47 | BGRA8 = 21, |
| 48 | RG32F = 22, | 48 | RGBA32F = 22, |
| 49 | R32F = 23, | 49 | RG32F = 23, |
| 50 | R16F = 24, | 50 | R32F = 24, |
| 51 | R16UNORM = 25, | 51 | R16F = 25, |
| 52 | R16S = 26, | 52 | R16UNORM = 26, |
| 53 | R16UI = 27, | 53 | R16S = 27, |
| 54 | R16I = 28, | 54 | R16UI = 28, |
| 55 | RG16 = 29, | 55 | R16I = 29, |
| 56 | RG16F = 30, | 56 | RG16 = 30, |
| 57 | RG16UI = 31, | 57 | RG16F = 31, |
| 58 | RG16I = 32, | 58 | RG16UI = 32, |
| 59 | RG16S = 33, | 59 | RG16I = 33, |
| 60 | RGB32F = 34, | 60 | RG16S = 34, |
| 61 | SRGBA8 = 35, | 61 | RGB32F = 35, |
| 62 | RG8U = 36, | 62 | SRGBA8 = 36, |
| 63 | RG8S = 37, | 63 | RG8U = 37, |
| 64 | RG32UI = 38, | 64 | RG8S = 38, |
| 65 | R32UI = 39, | 65 | RG32UI = 39, |
| 66 | R32UI = 40, | ||
| 66 | 67 | ||
| 67 | MaxColorFormat, | 68 | MaxColorFormat, |
| 68 | 69 | ||
| 69 | // DepthStencil formats | 70 | // DepthStencil formats |
| 70 | Z24S8 = 40, | 71 | Z24S8 = 41, |
| 71 | S8Z24 = 41, | 72 | S8Z24 = 42, |
| 72 | Z32F = 42, | 73 | Z32F = 43, |
| 73 | Z16 = 43, | 74 | Z16 = 44, |
| 74 | Z32FS8 = 44, | 75 | Z32FS8 = 45, |
| 75 | 76 | ||
| 76 | MaxDepthStencilFormat, | 77 | MaxDepthStencilFormat, |
| 77 | 78 | ||
| @@ -117,6 +118,7 @@ struct SurfaceParams { | |||
| 117 | 1, // R8 | 118 | 1, // R8 |
| 118 | 1, // R8UI | 119 | 1, // R8UI |
| 119 | 1, // RGBA16F | 120 | 1, // RGBA16F |
| 121 | 1, // RGBA16U | ||
| 120 | 1, // RGBA16UI | 122 | 1, // RGBA16UI |
| 121 | 1, // R11FG11FB10F | 123 | 1, // R11FG11FB10F |
| 122 | 1, // RGBA32UI | 124 | 1, // RGBA32UI |
| @@ -173,6 +175,7 @@ struct SurfaceParams { | |||
| 173 | 8, // R8 | 175 | 8, // R8 |
| 174 | 8, // R8UI | 176 | 8, // R8UI |
| 175 | 64, // RGBA16F | 177 | 64, // RGBA16F |
| 178 | 64, // RGBA16U | ||
| 176 | 64, // RGBA16UI | 179 | 64, // RGBA16UI |
| 177 | 32, // R11FG11FB10F | 180 | 32, // R11FG11FB10F |
| 178 | 128, // RGBA32UI | 181 | 128, // RGBA32UI |
| @@ -253,6 +256,8 @@ struct SurfaceParams { | |||
| 253 | return PixelFormat::A2B10G10R10; | 256 | return PixelFormat::A2B10G10R10; |
| 254 | case Tegra::RenderTargetFormat::RGBA16_FLOAT: | 257 | case Tegra::RenderTargetFormat::RGBA16_FLOAT: |
| 255 | return PixelFormat::RGBA16F; | 258 | return PixelFormat::RGBA16F; |
| 259 | case Tegra::RenderTargetFormat::RGBA16_UNORM: | ||
| 260 | return PixelFormat::RGBA16U; | ||
| 256 | case Tegra::RenderTargetFormat::RGBA16_UINT: | 261 | case Tegra::RenderTargetFormat::RGBA16_UINT: |
| 257 | return PixelFormat::RGBA16UI; | 262 | return PixelFormat::RGBA16UI; |
| 258 | case Tegra::RenderTargetFormat::RGBA32_FLOAT: | 263 | case Tegra::RenderTargetFormat::RGBA32_FLOAT: |
| @@ -469,6 +474,7 @@ struct SurfaceParams { | |||
| 469 | case Tegra::RenderTargetFormat::R16_UNORM: | 474 | case Tegra::RenderTargetFormat::R16_UNORM: |
| 470 | case Tegra::RenderTargetFormat::B5G6R5_UNORM: | 475 | case Tegra::RenderTargetFormat::B5G6R5_UNORM: |
| 471 | case Tegra::RenderTargetFormat::RG8_UNORM: | 476 | case Tegra::RenderTargetFormat::RG8_UNORM: |
| 477 | case Tegra::RenderTargetFormat::RGBA16_UNORM: | ||
| 472 | return ComponentType::UNorm; | 478 | return ComponentType::UNorm; |
| 473 | case Tegra::RenderTargetFormat::RGBA8_SNORM: | 479 | case Tegra::RenderTargetFormat::RGBA8_SNORM: |
| 474 | case Tegra::RenderTargetFormat::RG16_SNORM: | 480 | case Tegra::RenderTargetFormat::RG16_SNORM: |