From e862a33dac839a92b9e6d2a77d0d1929de5b39a7 Mon Sep 17 00:00:00 2001 From: Corentin Wallez Date: Thu, 21 Sep 2017 13:12:49 -0400 Subject: [PATCH] Add TextureFormat::B8G8R8A8Unorm --- next.json | 3 ++- src/backend/Texture.cpp | 4 ++++ src/backend/d3d12/TextureD3D12.cpp | 2 ++ src/backend/metal/TextureMTL.mm | 2 ++ src/backend/opengl/TextureGL.cpp | 5 ++++- 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/next.json b/next.json index 905cbdf7bf..ecde13c698 100644 --- a/next.json +++ b/next.json @@ -1190,7 +1190,8 @@ "values": [ {"value": 0, "name": "r8 g8 b8 a8 unorm"}, {"value": 1, "name": "r8 g8 b8 a8 uint"}, - {"value": 2, "name": "d32 float s8 uint"} + {"value": 2, "name": "b8 g8 r8 a8 unorm"}, + {"value": 3, "name": "d32 float s8 uint"} ] }, "vertex format": { diff --git a/src/backend/Texture.cpp b/src/backend/Texture.cpp index f2ea177dba..0690eb7200 100644 --- a/src/backend/Texture.cpp +++ b/src/backend/Texture.cpp @@ -23,6 +23,7 @@ namespace backend { switch (format) { case nxt::TextureFormat::R8G8B8A8Unorm: case nxt::TextureFormat::R8G8B8A8Uint: + case nxt::TextureFormat::B8G8R8A8Unorm: return 4; case nxt::TextureFormat::D32FloatS8Uint: return 8; @@ -35,6 +36,7 @@ namespace backend { switch (format) { case nxt::TextureFormat::R8G8B8A8Unorm: case nxt::TextureFormat::R8G8B8A8Uint: + case nxt::TextureFormat::B8G8R8A8Unorm: return false; case nxt::TextureFormat::D32FloatS8Uint: return true; @@ -47,6 +49,7 @@ namespace backend { switch (format) { case nxt::TextureFormat::R8G8B8A8Unorm: case nxt::TextureFormat::R8G8B8A8Uint: + case nxt::TextureFormat::B8G8R8A8Unorm: return false; case nxt::TextureFormat::D32FloatS8Uint: return true; @@ -59,6 +62,7 @@ namespace backend { switch (format) { case nxt::TextureFormat::R8G8B8A8Unorm: case nxt::TextureFormat::R8G8B8A8Uint: + case nxt::TextureFormat::B8G8R8A8Unorm: return false; case nxt::TextureFormat::D32FloatS8Uint: return true; diff --git a/src/backend/d3d12/TextureD3D12.cpp b/src/backend/d3d12/TextureD3D12.cpp index 817cec9e02..5c7fb78a40 100644 --- a/src/backend/d3d12/TextureD3D12.cpp +++ b/src/backend/d3d12/TextureD3D12.cpp @@ -83,6 +83,8 @@ namespace d3d12 { return DXGI_FORMAT_R8G8B8A8_UNORM; case nxt::TextureFormat::R8G8B8A8Uint: return DXGI_FORMAT_R8G8B8A8_UINT; + case nxt::TextureFormat::B8G8R8A8Unorm: + return DXGI_FORMAT_B8G8R8A8_UNORM; case nxt::TextureFormat::D32FloatS8Uint: return DXGI_FORMAT_D32_FLOAT_S8X24_UINT; default: diff --git a/src/backend/metal/TextureMTL.mm b/src/backend/metal/TextureMTL.mm index e47db05de0..f71cc5cf1b 100644 --- a/src/backend/metal/TextureMTL.mm +++ b/src/backend/metal/TextureMTL.mm @@ -25,6 +25,8 @@ namespace metal { return MTLPixelFormatRGBA8Unorm; case nxt::TextureFormat::R8G8B8A8Uint: return MTLPixelFormatRGBA8Uint; + case nxt::TextureFormat::B8G8R8A8Unorm: + return MTLPixelFormatBGRA8Unorm; case nxt::TextureFormat::D32FloatS8Uint: return MTLPixelFormatDepth32Float_Stencil8; } diff --git a/src/backend/opengl/TextureGL.cpp b/src/backend/opengl/TextureGL.cpp index fe8326ac64..74addc4b00 100644 --- a/src/backend/opengl/TextureGL.cpp +++ b/src/backend/opengl/TextureGL.cpp @@ -38,7 +38,10 @@ namespace opengl { case nxt::TextureFormat::R8G8B8A8Unorm: return {GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE}; case nxt::TextureFormat::R8G8B8A8Uint: - return { GL_RGBA8UI, GL_RGBA, GL_UNSIGNED_INT }; + return {GL_RGBA8UI, GL_RGBA, GL_UNSIGNED_INT}; + case nxt::TextureFormat::B8G8R8A8Unorm: + // This doesn't have an enum for the internal format in OpenGL. + return {GL_NONE, GL_BGRA, GL_UNSIGNED_BYTE}; case nxt::TextureFormat::D32FloatS8Uint: return {GL_DEPTH32F_STENCIL8, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV}; default: