Explorar o código

Implement R32_FLOAT RenderTargetFormat

Unknown %!s(int64=8) %!d(string=hai) anos
pai
achega
0d8fcab136

+ 1 - 0
src/video_core/gpu.cpp

@@ -40,6 +40,7 @@ u32 RenderTargetBytesPerPixel(RenderTargetFormat format) {
     case RenderTargetFormat::RGBA8_UNORM:
     case RenderTargetFormat::RGB10_A2_UNORM:
     case RenderTargetFormat::BGRA8_UNORM:
+    case RenderTargetFormat::R32_FLOAT:
         return 4;
     default:
         UNIMPLEMENTED_MSG("Unimplemented render target format {}", static_cast<u32>(format));

+ 1 - 0
src/video_core/gpu.h

@@ -29,6 +29,7 @@ enum class RenderTargetFormat : u32 {
     RG16_UINT = 0xDD,
     RG16_FLOAT = 0xDE,
     R11G11B10_FLOAT = 0xE0,
+    R32_FLOAT = 0xE5,
     R16_FLOAT = 0xF2,
     R8_UNORM = 0xF3,
 };

+ 3 - 0
src/video_core/renderer_opengl/gl_rasterizer_cache.h

@@ -232,6 +232,8 @@ struct SurfaceParams {
             return PixelFormat::RG16S;
         case Tegra::RenderTargetFormat::R16_FLOAT:
             return PixelFormat::R16F;
+        case Tegra::RenderTargetFormat::R32_FLOAT:
+            return PixelFormat::R32F;
         default:
             LOG_CRITICAL(HW_GPU, "Unimplemented format={}", static_cast<u32>(format));
             UNREACHABLE();
@@ -439,6 +441,7 @@ struct SurfaceParams {
         case Tegra::RenderTargetFormat::RG32_FLOAT:
         case Tegra::RenderTargetFormat::RG16_FLOAT:
         case Tegra::RenderTargetFormat::R16_FLOAT:
+        case Tegra::RenderTargetFormat::R32_FLOAT:
             return ComponentType::Float;
         case Tegra::RenderTargetFormat::RGBA32_UINT:
         case Tegra::RenderTargetFormat::RG16_UINT: