mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-21 11:26:56 +02:00
videoout: add RGB10A2 PQ buffer support
Co-authored-by: Mac <me@itsmemac.com>
This commit is contained in:
@@ -329,7 +329,9 @@ struct VideoOutFormatPolicy {
|
|||||||
VideoOutPixelFormatInfo info;
|
VideoOutPixelFormatInfo info;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline constexpr std::array<VideoOutFormatPolicy, 6> VIDEO_OUT_FORMAT_POLICIES {{
|
inline constexpr uint64_t VIDEO_OUT_PIXEL_FORMAT_R10_G10_B10_A2_BT2100_PQ = 0x8100070422000000ull;
|
||||||
|
|
||||||
|
inline constexpr std::array<VideoOutFormatPolicy, 7> VIDEO_OUT_FORMAT_POLICIES {{
|
||||||
{0x8000000022000000ull,
|
{0x8000000022000000ull,
|
||||||
{vk::Format::eR8G8B8A8Srgb, Prospero::BufferFormat::k8_8_8_8Srgb, 4, false}},
|
{vk::Format::eR8G8B8A8Srgb, Prospero::BufferFormat::k8_8_8_8Srgb, 4, false}},
|
||||||
{0x8000000000000000ull,
|
{0x8000000000000000ull,
|
||||||
@@ -338,6 +340,8 @@ inline constexpr std::array<VideoOutFormatPolicy, 6> VIDEO_OUT_FORMAT_POLICIES {
|
|||||||
{vk::Format::eA2B10G10R10UnormPack32, Prospero::BufferFormat::k10_10_10_2UNorm, 4, false}},
|
{vk::Format::eA2B10G10R10UnormPack32, Prospero::BufferFormat::k10_10_10_2UNorm, 4, false}},
|
||||||
{0x8100000000000000ull,
|
{0x8100000000000000ull,
|
||||||
{vk::Format::eA2R10G10B10UnormPack32, Prospero::BufferFormat::k10_10_10_2UNorm, 4, false}},
|
{vk::Format::eA2R10G10B10UnormPack32, Prospero::BufferFormat::k10_10_10_2UNorm, 4, false}},
|
||||||
|
{VIDEO_OUT_PIXEL_FORMAT_R10_G10_B10_A2_BT2100_PQ,
|
||||||
|
{vk::Format::eA2B10G10R10UnormPack32, Prospero::BufferFormat::k10_10_10_2UNorm, 4, false}},
|
||||||
{0xc001000622000000ull,
|
{0xc001000622000000ull,
|
||||||
{vk::Format::eR16G16B16A16Sfloat, Prospero::BufferFormat::k16_16_16_16Float, 8, false}},
|
{vk::Format::eR16G16B16A16Sfloat, Prospero::BufferFormat::k16_16_16_16Float, 8, false}},
|
||||||
{0xc001000600000000ull,
|
{0xc001000600000000ull,
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <array>
|
#include <array>
|
||||||
|
#include <atomic>
|
||||||
|
#include <fmt/format.h>
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@@ -541,6 +543,14 @@ Graphics::ImageInfo BufferAttributeGroup::ImageInfo(const VideoOutBuffer& buffer
|
|||||||
if (!Graphics::DecodeVideoOutPixelFormat(attribute.pixel_format, pixel_format)) {
|
if (!Graphics::DecodeVideoOutPixelFormat(attribute.pixel_format, pixel_format)) {
|
||||||
EXIT("unsupported video-out pixel format: 0x%016" PRIx64 "\n", attribute.pixel_format);
|
EXIT("unsupported video-out pixel format: 0x%016" PRIx64 "\n", attribute.pixel_format);
|
||||||
}
|
}
|
||||||
|
if (attribute.pixel_format == Graphics::VIDEO_OUT_PIXEL_FORMAT_R10_G10_B10_A2_BT2100_PQ) {
|
||||||
|
static std::atomic_flag warned = ATOMIC_FLAG_INIT;
|
||||||
|
if (!warned.test_and_set(std::memory_order_relaxed)) {
|
||||||
|
Log::WriteToConsoleAndLog(fmt::format(
|
||||||
|
"Warning: HDR-to-SDR conversion is not implemented; displaying PQ video-out "
|
||||||
|
"pixels unchanged (format=0x{:016x}).\n", attribute.pixel_format));
|
||||||
|
}
|
||||||
|
}
|
||||||
const auto tile_mode = Graphics::Prospero::TileMode::kRenderTarget;
|
const auto tile_mode = Graphics::Prospero::TileMode::kRenderTarget;
|
||||||
const auto pitch =
|
const auto pitch =
|
||||||
Graphics::TileGetTexturePitch(pixel_format.guest_format, attribute.width, tile_mode);
|
Graphics::TileGetTexturePitch(pixel_format.guest_format, attribute.width, tile_mode);
|
||||||
|
|||||||
Reference in New Issue
Block a user