Explorar el Código

Merge pull request #2857 from ReinUsesLisp/surface-srgb

video_core/surface: Add function to detect sRGB surfaces
Fernando Sahmkow hace 6 años
padre
commit
daae327e86
Se han modificado 2 ficheros con 22 adiciones y 0 borrados
  1. 20 0
      src/video_core/surface.cpp
  2. 2 0
      src/video_core/surface.h

+ 20 - 0
src/video_core/surface.cpp

@@ -513,6 +513,26 @@ bool IsPixelFormatASTC(PixelFormat format) {
     }
     }
 }
 }
 
 
+bool IsPixelFormatSRGB(PixelFormat format) {
+    switch (format) {
+    case PixelFormat::RGBA8_SRGB:
+    case PixelFormat::BGRA8_SRGB:
+    case PixelFormat::DXT1_SRGB:
+    case PixelFormat::DXT23_SRGB:
+    case PixelFormat::DXT45_SRGB:
+    case PixelFormat::BC7U_SRGB:
+    case PixelFormat::ASTC_2D_4X4_SRGB:
+    case PixelFormat::ASTC_2D_8X8_SRGB:
+    case PixelFormat::ASTC_2D_8X5_SRGB:
+    case PixelFormat::ASTC_2D_5X4_SRGB:
+    case PixelFormat::ASTC_2D_5X5_SRGB:
+    case PixelFormat::ASTC_2D_10X8_SRGB:
+        return true;
+    default:
+        return false;
+    }
+}
+
 std::pair<u32, u32> GetASTCBlockSize(PixelFormat format) {
 std::pair<u32, u32> GetASTCBlockSize(PixelFormat format) {
     return {GetDefaultBlockWidth(format), GetDefaultBlockHeight(format)};
     return {GetDefaultBlockWidth(format), GetDefaultBlockHeight(format)};
 }
 }

+ 2 - 0
src/video_core/surface.h

@@ -547,6 +547,8 @@ SurfaceType GetFormatType(PixelFormat pixel_format);
 
 
 bool IsPixelFormatASTC(PixelFormat format);
 bool IsPixelFormatASTC(PixelFormat format);
 
 
+bool IsPixelFormatSRGB(PixelFormat format);
+
 std::pair<u32, u32> GetASTCBlockSize(PixelFormat format);
 std::pair<u32, u32> GetASTCBlockSize(PixelFormat format);
 
 
 /// Returns true if the specified PixelFormat is a BCn format, e.g. DXT or DXN
 /// Returns true if the specified PixelFormat is a BCn format, e.g. DXT or DXN