Untangle internal & implementation format. Textures and renderbuffers were storing both the OpenGL internalformat and the SwiftShader implementation format (i.e. sw::Format). This change removes the implementation format, only keeping it in the Image class. Change-Id: Ie6ac96f6450b9a55ea9b49c6cf4b2c0681e95522 Reviewed-on: https://swiftshader-review.googlesource.com/14528 Tested-by: Nicolas Capens <nicolascapens@google.com> Reviewed-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp index 8dec865..981ffe3 100644 --- a/src/OpenGL/libGLESv2/Context.cpp +++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -4139,10 +4139,10 @@ // well es2::Renderbuffer *readRenderbuffer = readFramebuffer->getReadColorbuffer(); es2::Renderbuffer *drawRenderbuffer = drawFramebuffer->getColorbuffer(0); - sw::Format readFormat = readRenderbuffer->getInternalFormat(); - sw::Format drawFormat = drawRenderbuffer->getInternalFormat(); - GLenum readComponentType = sw2es::GetComponentType(readFormat, GL_COLOR_ATTACHMENT0); - GLenum drawComponentType = sw2es::GetComponentType(drawFormat, GL_COLOR_ATTACHMENT0); + GLint readFormat = readRenderbuffer->getFormat(); + GLint drawFormat = drawRenderbuffer->getFormat(); + GLenum readComponentType = GetComponentType(readFormat, GL_COLOR_ATTACHMENT0); + GLenum drawComponentType = GetComponentType(drawFormat, GL_COLOR_ATTACHMENT0); bool readFixedPoint = ((readComponentType == GL_UNSIGNED_NORMALIZED) || (readComponentType == GL_SIGNED_NORMALIZED)); bool drawFixedPoint = ((drawComponentType == GL_UNSIGNED_NORMALIZED) || @@ -4201,7 +4201,7 @@ readDSBuffer = readFramebuffer->getDepthbuffer(); drawDSBuffer = drawFramebuffer->getDepthbuffer(); - if(readDSBuffer->getInternalFormat() != drawDSBuffer->getInternalFormat()) + if(readDSBuffer->getFormat() != drawDSBuffer->getFormat()) { return error(GL_INVALID_OPERATION); } @@ -4224,7 +4224,7 @@ readDSBuffer = readFramebuffer->getStencilbuffer(); drawDSBuffer = drawFramebuffer->getStencilbuffer(); - if(readDSBuffer->getInternalFormat() != drawDSBuffer->getInternalFormat()) + if(readDSBuffer->getFormat() != drawDSBuffer->getFormat()) { return error(GL_INVALID_OPERATION); }
diff --git a/src/OpenGL/libGLESv2/Framebuffer.cpp b/src/OpenGL/libGLESv2/Framebuffer.cpp index fc0c4a3..810771b 100644 --- a/src/OpenGL/libGLESv2/Framebuffer.cpp +++ b/src/OpenGL/libGLESv2/Framebuffer.cpp
@@ -497,57 +497,54 @@ if(colorbuffer) { - switch(colorbuffer->getInternalFormat()) + switch(colorbuffer->getFormat()) { - case sw::FORMAT_A8B8G8R8I: return GL_RGBA_INTEGER; - case sw::FORMAT_A8B8G8R8UI: return GL_RGBA_INTEGER; - case sw::FORMAT_A16B16G16R16I: return GL_RGBA_INTEGER; - case sw::FORMAT_A16B16G16R16UI: return GL_RGBA_INTEGER; - case sw::FORMAT_A32B32G32R32I: return GL_RGBA_INTEGER; - case sw::FORMAT_A32B32G32R32UI: return GL_RGBA_INTEGER; - case sw::FORMAT_A2B10G10R10: return GL_RGB10_A2; - case sw::FORMAT_A8B8G8R8I_SNORM: return GL_RGBA; - case sw::FORMAT_A8B8G8R8: return GL_RGBA; - case sw::FORMAT_SRGB8_A8: return GL_RGBA; - case sw::FORMAT_A8R8G8B8: return GL_BGRA_EXT; - case sw::FORMAT_A1R5G5B5: return GL_BGRA_EXT; - case sw::FORMAT_X8B8G8R8I: return GL_RGBA_INTEGER; - case sw::FORMAT_X8B8G8R8UI: return GL_RGBA_INTEGER; - case sw::FORMAT_X16B16G16R16I: return GL_RGBA_INTEGER; - case sw::FORMAT_X16B16G16R16UI: return GL_RGBA_INTEGER; - case sw::FORMAT_X32B32G32R32I: return GL_RGBA_INTEGER; - case sw::FORMAT_X32B32G32R32UI: return GL_RGBA_INTEGER; - case sw::FORMAT_X8B8G8R8I_SNORM: return GL_RGBA; - case sw::FORMAT_SRGB8_X8: return GL_RGBA; - case sw::FORMAT_X8B8G8R8: return GL_RGBA; - case sw::FORMAT_X8R8G8B8: return GL_BGRA_EXT; - case sw::FORMAT_R5G6B5: return GL_RGB; - case sw::FORMAT_G8R8I: return GL_RG_INTEGER; - case sw::FORMAT_G8R8UI: return GL_RG_INTEGER; - case sw::FORMAT_G16R16I: return GL_RG_INTEGER; - case sw::FORMAT_G16R16UI: return GL_RG_INTEGER; - case sw::FORMAT_G32R32I: return GL_RG_INTEGER; - case sw::FORMAT_G32R32UI: return GL_RG_INTEGER; - case sw::FORMAT_R8I: return GL_RED_INTEGER; - case sw::FORMAT_R8UI: return GL_RED_INTEGER; - case sw::FORMAT_R16I: return GL_RED_INTEGER; - case sw::FORMAT_R16UI: return GL_RED_INTEGER; - case sw::FORMAT_R32I: return GL_RED_INTEGER; - case sw::FORMAT_R32UI: return GL_RED_INTEGER; - case sw::FORMAT_R8: return GL_RED; - case sw::FORMAT_R8I_SNORM: return GL_RED; - case sw::FORMAT_R16F: return GL_RED; - case sw::FORMAT_R32F: return GL_RED; - case sw::FORMAT_G8R8: return GL_RG; - case sw::FORMAT_G8R8I_SNORM: return GL_RG; - case sw::FORMAT_G16R16F: return GL_RG; - case sw::FORMAT_G32R32F: return GL_RG; - case sw::FORMAT_B16G16R16F: return GL_RGB; - case sw::FORMAT_X32B32G32R32F: return GL_RGBA; - case sw::FORMAT_A16B16G16R16F: return GL_RGBA; - case sw::FORMAT_A32B32G32R32F: return GL_RGBA; + case GL_RGBA4: return GL_RGBA; + case GL_RGB5_A1: return GL_RGBA; + case GL_RGBA8: return GL_RGBA; + case GL_RGB565: return GL_RGBA; + case GL_RGB8: return GL_RGB; + case GL_R8: return GL_RED; + case GL_RG8: return GL_RG; + case GL_R8I: return GL_RED_INTEGER; + case GL_RG8I: return GL_RG_INTEGER; + case GL_RGB8I: return GL_RGB_INTEGER; + case GL_RGBA8I: return GL_RGBA_INTEGER; + case GL_R8UI: return GL_RED_INTEGER; + case GL_RG8UI: return GL_RG_INTEGER; + case GL_RGB8UI: return GL_RGB_INTEGER; + case GL_RGBA8UI: return GL_RGBA_INTEGER; + case GL_R16I: return GL_RED_INTEGER; + case GL_RG16I: return GL_RG_INTEGER; + case GL_RGB16I: return GL_RGB_INTEGER; + case GL_RGBA16I: return GL_RGBA_INTEGER; + case GL_R16UI: return GL_RED_INTEGER; + case GL_RG16UI: return GL_RG_INTEGER; + case GL_RGB16UI: return GL_RGB_INTEGER; + case GL_RGB10_A2UI: return GL_RGBA_INTEGER; + case GL_RGBA16UI: return GL_RGBA_INTEGER; + case GL_R32I: return GL_RED_INTEGER; + case GL_RG32I: return GL_RG_INTEGER; + case GL_RGB32I: return GL_RGB_INTEGER; + case GL_RGBA32I: return GL_RGBA_INTEGER; + case GL_R32UI: return GL_RED_INTEGER; + case GL_RG32UI: return GL_RG_INTEGER; + case GL_RGB32UI: return GL_RGB_INTEGER; + case GL_RGBA32UI: return GL_RGBA_INTEGER; + case GL_R16F: return GL_RED; + case GL_RG16F: return GL_RG; + case GL_R11F_G11F_B10F: return GL_RGB; + case GL_RGB16F: return GL_RGB; + case GL_RGBA16F: return GL_RGBA; + case GL_R32F: return GL_RED; + case GL_RG32F: return GL_RG; + case GL_RGB32F: return GL_RGB; + case GL_RGBA32F: return GL_RGBA; + case GL_RGB10_A2: return GL_RGBA; + case GL_SRGB8: return GL_RGB; + case GL_SRGB8_ALPHA8: return GL_RGBA; default: - UNREACHABLE(colorbuffer->getInternalFormat()); + UNREACHABLE(colorbuffer->getFormat()); } } @@ -560,58 +557,54 @@ if(colorbuffer) { - switch(colorbuffer->getInternalFormat()) + switch(colorbuffer->getFormat()) { - case sw::FORMAT_R16F: return GL_FLOAT; - case sw::FORMAT_G16R16F: return GL_FLOAT; - case sw::FORMAT_B16G16R16F: return GL_FLOAT; - case sw::FORMAT_A16B16G16R16F: return GL_FLOAT; - case sw::FORMAT_R32F: return GL_FLOAT; - case sw::FORMAT_G32R32F: return GL_FLOAT; - case sw::FORMAT_B32G32R32F: return GL_FLOAT; - case sw::FORMAT_X32B32G32R32F: return GL_FLOAT; - case sw::FORMAT_A32B32G32R32F: return GL_FLOAT; - case sw::FORMAT_R8I_SNORM: return GL_BYTE; - case sw::FORMAT_G8R8I_SNORM: return GL_BYTE; - case sw::FORMAT_X8B8G8R8I_SNORM: return GL_BYTE; - case sw::FORMAT_A8B8G8R8I_SNORM: return GL_BYTE; - case sw::FORMAT_R8: return GL_UNSIGNED_BYTE; - case sw::FORMAT_G8R8: return GL_UNSIGNED_BYTE; - case sw::FORMAT_SRGB8_X8: return GL_UNSIGNED_BYTE; - case sw::FORMAT_SRGB8_A8: return GL_UNSIGNED_BYTE; - case sw::FORMAT_A8R8G8B8: return GL_UNSIGNED_BYTE; - case sw::FORMAT_A8B8G8R8: return GL_UNSIGNED_BYTE; - case sw::FORMAT_X8R8G8B8: return GL_UNSIGNED_BYTE; - case sw::FORMAT_X8B8G8R8: return GL_UNSIGNED_BYTE; - case sw::FORMAT_R8I: return GL_INT; - case sw::FORMAT_G8R8I: return GL_INT; - case sw::FORMAT_X8B8G8R8I: return GL_INT; - case sw::FORMAT_A8B8G8R8I: return GL_INT; - case sw::FORMAT_R16I: return GL_INT; - case sw::FORMAT_G16R16I: return GL_INT; - case sw::FORMAT_X16B16G16R16I: return GL_INT; - case sw::FORMAT_A16B16G16R16I: return GL_INT; - case sw::FORMAT_R32I: return GL_INT; - case sw::FORMAT_G32R32I: return GL_INT; - case sw::FORMAT_X32B32G32R32I: return GL_INT; - case sw::FORMAT_A32B32G32R32I: return GL_INT; - case sw::FORMAT_R8UI: return GL_UNSIGNED_INT; - case sw::FORMAT_G8R8UI: return GL_UNSIGNED_INT; - case sw::FORMAT_X8B8G8R8UI: return GL_UNSIGNED_INT; - case sw::FORMAT_A8B8G8R8UI: return GL_UNSIGNED_INT; - case sw::FORMAT_R16UI: return GL_UNSIGNED_INT; - case sw::FORMAT_G16R16UI: return GL_UNSIGNED_INT; - case sw::FORMAT_X16B16G16R16UI: return GL_UNSIGNED_INT; - case sw::FORMAT_A16B16G16R16UI: return GL_UNSIGNED_INT; - case sw::FORMAT_R32UI: return GL_UNSIGNED_INT; - case sw::FORMAT_G32R32UI: return GL_UNSIGNED_INT; - case sw::FORMAT_X32B32G32R32UI: return GL_UNSIGNED_INT; - case sw::FORMAT_A32B32G32R32UI: return GL_UNSIGNED_INT; - case sw::FORMAT_A2B10G10R10: return GL_UNSIGNED_INT_10_10_10_2_OES; - case sw::FORMAT_A1R5G5B5: return GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT; - case sw::FORMAT_R5G6B5: return GL_UNSIGNED_SHORT_5_6_5; + case GL_RGBA4: return GL_UNSIGNED_BYTE; + case GL_RGB5_A1: return GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT; + case GL_RGBA8: return GL_UNSIGNED_BYTE; + case GL_RGB565: return GL_UNSIGNED_SHORT_5_6_5; + case GL_RGB8: return GL_UNSIGNED_BYTE; + case GL_R8: return GL_UNSIGNED_BYTE; + case GL_RG8: return GL_UNSIGNED_BYTE; + case GL_R8I: return GL_INT; + case GL_RG8I: return GL_INT; + case GL_RGB8I: return GL_INT; + case GL_RGBA8I: return GL_INT; + case GL_R8UI: return GL_UNSIGNED_BYTE; + case GL_RG8UI: return GL_UNSIGNED_BYTE; + case GL_RGB8UI: return GL_UNSIGNED_BYTE; + case GL_RGBA8UI: return GL_UNSIGNED_BYTE; + case GL_R16I: return GL_INT; + case GL_RG16I: return GL_INT; + case GL_RGB16I: return GL_INT; + case GL_RGBA16I: return GL_INT; + case GL_R16UI: return GL_UNSIGNED_INT; + case GL_RG16UI: return GL_UNSIGNED_INT; + case GL_RGB16UI: return GL_UNSIGNED_INT; + case GL_RGB10_A2UI: return GL_UNSIGNED_INT_10_10_10_2_OES; + case GL_RGBA16UI: return GL_UNSIGNED_INT; + case GL_R32I: return GL_INT; + case GL_RG32I: return GL_INT; + case GL_RGB32I: return GL_INT; + case GL_RGBA32I: return GL_INT; + case GL_R32UI: return GL_UNSIGNED_INT; + case GL_RG32UI: return GL_UNSIGNED_INT; + case GL_RGB32UI: return GL_UNSIGNED_INT; + case GL_RGBA32UI: return GL_UNSIGNED_INT; + case GL_R16F: return GL_FLOAT; + case GL_RG16F: return GL_FLOAT; + case GL_R11F_G11F_B10F: return GL_FLOAT; + case GL_RGB16F: return GL_FLOAT; + case GL_RGBA16F: return GL_FLOAT; + case GL_R32F: return GL_FLOAT; + case GL_RG32F: return GL_FLOAT; + case GL_RGB32F: return GL_FLOAT; + case GL_RGBA32F: return GL_FLOAT; + case GL_RGB10_A2: return GL_UNSIGNED_INT_10_10_10_2_OES; + case GL_SRGB8: return GL_UNSIGNED_BYTE; + case GL_SRGB8_ALPHA8: return GL_UNSIGNED_BYTE; default: - UNREACHABLE(colorbuffer->getInternalFormat()); + UNREACHABLE(colorbuffer->getFormat()); } } @@ -638,18 +631,16 @@ if(depthbuffer) { - switch(depthbuffer->getInternalFormat()) + switch(depthbuffer->getFormat()) { - case sw::FORMAT_D16: return GL_UNSIGNED_SHORT; - case sw::FORMAT_D24S8: return GL_UNSIGNED_INT_24_8_OES; - case sw::FORMAT_D32: return GL_UNSIGNED_INT; - case sw::FORMAT_D32F: - case sw::FORMAT_D32F_COMPLEMENTARY: - case sw::FORMAT_D32F_LOCKABLE: - case sw::FORMAT_D32FS8_TEXTURE: - case sw::FORMAT_D32FS8_SHADOW: return GL_FLOAT; + case GL_DEPTH_COMPONENT16: return GL_UNSIGNED_SHORT; + case GL_DEPTH_COMPONENT24: return GL_UNSIGNED_INT; + case GL_DEPTH_COMPONENT32_OES: return GL_UNSIGNED_INT; + case GL_DEPTH_COMPONENT32F: return GL_FLOAT; + case GL_DEPTH24_STENCIL8: return GL_UNSIGNED_INT_24_8_OES; + case GL_DEPTH32F_STENCIL8: return GL_FLOAT; default: - UNREACHABLE(depthbuffer->getInternalFormat()); + UNREACHABLE(depthbuffer->getFormat()); } }
diff --git a/src/OpenGL/libGLESv2/Renderbuffer.cpp b/src/OpenGL/libGLESv2/Renderbuffer.cpp index 4c4e448..98a1c05 100644 --- a/src/OpenGL/libGLESv2/Renderbuffer.cpp +++ b/src/OpenGL/libGLESv2/Renderbuffer.cpp
@@ -41,32 +41,32 @@ GLuint RenderbufferInterface::getRedSize() const { - return sw2es::GetRedSize(getInternalFormat()); + return GetRedSize(getFormat()); } GLuint RenderbufferInterface::getGreenSize() const { - return sw2es::GetGreenSize(getInternalFormat()); + return GetGreenSize(getFormat()); } GLuint RenderbufferInterface::getBlueSize() const { - return sw2es::GetBlueSize(getInternalFormat()); + return GetBlueSize(getFormat()); } GLuint RenderbufferInterface::getAlphaSize() const { - return sw2es::GetAlphaSize(getInternalFormat()); + return GetAlphaSize(getFormat()); } GLuint RenderbufferInterface::getDepthSize() const { - return sw2es::GetDepthSize(getInternalFormat()); + return GetDepthSize(getFormat()); } GLuint RenderbufferInterface::getStencilSize() const { - return sw2es::GetStencilSize(getInternalFormat()); + return GetStencilSize(getFormat()); } ///// RenderbufferTexture2D Implementation //////// @@ -122,16 +122,11 @@ return mTexture2D->getHeight(GL_TEXTURE_2D, mLevel); } -GLenum RenderbufferTexture2D::getFormat() const +GLint RenderbufferTexture2D::getFormat() const { return mTexture2D->getFormat(GL_TEXTURE_2D, mLevel); } -sw::Format RenderbufferTexture2D::getInternalFormat() const -{ - return mTexture2D->getInternalFormat(GL_TEXTURE_2D, mLevel); -} - GLsizei RenderbufferTexture2D::getSamples() const { return 0; @@ -199,16 +194,11 @@ return mTexture3D->getDepth(mTexture3D->getTarget(), mLevel); } -GLenum RenderbufferTexture3D::getFormat() const +GLint RenderbufferTexture3D::getFormat() const { return mTexture3D->getFormat(mTexture3D->getTarget(), mLevel); } -sw::Format RenderbufferTexture3D::getInternalFormat() const -{ - return mTexture3D->getInternalFormat(mTexture3D->getTarget(), mLevel); -} - GLsizei RenderbufferTexture3D::getSamples() const { return 0; @@ -267,16 +257,11 @@ return mTextureCubeMap->getHeight(mTarget, mLevel); } -GLenum RenderbufferTextureCubeMap::getFormat() const +GLint RenderbufferTextureCubeMap::getFormat() const { return mTextureCubeMap->getFormat(mTarget, mLevel); } -sw::Format RenderbufferTextureCubeMap::getInternalFormat() const -{ - return mTextureCubeMap->getInternalFormat(mTarget, mLevel); -} - GLsizei RenderbufferTextureCubeMap::getSamples() const { return 0; @@ -355,16 +340,11 @@ return mInstance->getLevel(); } -GLenum Renderbuffer::getFormat() const +GLint Renderbuffer::getFormat() const { return mInstance->getFormat(); } -sw::Format Renderbuffer::getInternalFormat() const -{ - return mInstance->getInternalFormat(); -} - GLuint Renderbuffer::getRedSize() const { return mInstance->getRedSize(); @@ -423,7 +403,6 @@ mWidth = 0; mHeight = 0; format = GL_RGBA4; - internalFormat = sw::FORMAT_NULL; mSamples = 0; } @@ -441,16 +420,11 @@ return mHeight; } -GLenum RenderbufferStorage::getFormat() const +GLint RenderbufferStorage::getFormat() const { return format; } -sw::Format RenderbufferStorage::getInternalFormat() const -{ - return internalFormat; -} - GLsizei RenderbufferStorage::getSamples() const { return mSamples; @@ -462,24 +436,25 @@ { renderTarget->addRef(); + sw::Format implementationFormat = renderTarget->getInternalFormat(); + format = sw2es::ConvertBackBufferFormat(implementationFormat); + mWidth = renderTarget->getWidth(); mHeight = renderTarget->getHeight(); - internalFormat = renderTarget->getInternalFormat(); - format = sw2es::ConvertBackBufferFormat(internalFormat); mSamples = renderTarget->getDepth() & ~1; } } -Colorbuffer::Colorbuffer(int width, int height, GLenum format, GLsizei samples) : mRenderTarget(nullptr) +Colorbuffer::Colorbuffer(int width, int height, GLenum internalformat, GLsizei samples) : mRenderTarget(nullptr) { Device *device = getDevice(); - sw::Format requestedFormat = es2sw::ConvertRenderbufferFormat(format); + sw::Format implementationFormat = es2sw::ConvertRenderbufferFormat(internalformat); int supportedSamples = Context::getSupportedMultisampleCount(samples); if(width > 0 && height > 0) { - mRenderTarget = device->createRenderTarget(width, height, requestedFormat, supportedSamples, false); + mRenderTarget = device->createRenderTarget(width, height, implementationFormat, supportedSamples, false); if(!mRenderTarget) { @@ -490,8 +465,7 @@ mWidth = width; mHeight = height; - this->format = format; - internalFormat = requestedFormat; + format = internalformat; mSamples = supportedSamples; } @@ -539,40 +513,42 @@ { depthStencil->addRef(); + sw::Format implementationFormat = depthStencil->getInternalFormat(); + format = sw2es::ConvertDepthStencilFormat(implementationFormat); + mWidth = depthStencil->getWidth(); mHeight = depthStencil->getHeight(); - internalFormat = depthStencil->getInternalFormat(); - format = sw2es::ConvertDepthStencilFormat(internalFormat); mSamples = depthStencil->getDepth() & ~1; } } -DepthStencilbuffer::DepthStencilbuffer(int width, int height, GLenum requestedFormat, GLsizei samples) : mDepthStencil(nullptr) +DepthStencilbuffer::DepthStencilbuffer(int width, int height, GLenum internalformat, GLsizei samples) : mDepthStencil(nullptr) { - format = requestedFormat; - switch(requestedFormat) + format = internalformat; + sw::Format implementationFormat = sw::FORMAT_D24S8; + switch(internalformat) { case GL_STENCIL_INDEX8: case GL_DEPTH_COMPONENT24: case GL_DEPTH24_STENCIL8_OES: - internalFormat = sw::FORMAT_D24S8; + implementationFormat = sw::FORMAT_D24S8; break; case GL_DEPTH32F_STENCIL8: - internalFormat = sw::FORMAT_D32FS8_TEXTURE; + implementationFormat = sw::FORMAT_D32FS8_TEXTURE; break; case GL_DEPTH_COMPONENT16: - internalFormat = sw::FORMAT_D16; + implementationFormat = sw::FORMAT_D16; break; case GL_DEPTH_COMPONENT32_OES: - internalFormat = sw::FORMAT_D32; + implementationFormat = sw::FORMAT_D32; break; case GL_DEPTH_COMPONENT32F: - internalFormat = sw::FORMAT_D32F; + implementationFormat = sw::FORMAT_D32F; break; default: - UNREACHABLE(requestedFormat); + UNREACHABLE(internalformat); format = GL_DEPTH24_STENCIL8_OES; - internalFormat = sw::FORMAT_D24S8; + implementationFormat = sw::FORMAT_D24S8; } Device *device = getDevice(); @@ -581,7 +557,7 @@ if(width > 0 && height > 0) { - mDepthStencil = device->createDepthStencilSurface(width, height, internalFormat, supportedSamples, false); + mDepthStencil = device->createDepthStencilSurface(width, height, implementationFormat, supportedSamples, false); if(!mDepthStencil) { @@ -637,7 +613,7 @@ { } -Depthbuffer::Depthbuffer(int width, int height, GLenum format, GLsizei samples) : DepthStencilbuffer(width, height, format, samples) +Depthbuffer::Depthbuffer(int width, int height, GLenum internalformat, GLsizei samples) : DepthStencilbuffer(width, height, internalformat, samples) { }
diff --git a/src/OpenGL/libGLESv2/Renderbuffer.h b/src/OpenGL/libGLESv2/Renderbuffer.h index 5e3f124..feb8f9e 100644 --- a/src/OpenGL/libGLESv2/Renderbuffer.h +++ b/src/OpenGL/libGLESv2/Renderbuffer.h
@@ -53,8 +53,7 @@ virtual GLsizei getDepth() const { return 1; } virtual GLint getLayer() const { return 0; } virtual GLint getLevel() const { return 0; } - virtual GLenum getFormat() const = 0; - virtual sw::Format getInternalFormat() const = 0; + virtual GLint getFormat() const = 0; virtual GLsizei getSamples() const = 0; virtual void setLayer(GLint) {} @@ -85,8 +84,7 @@ virtual GLsizei getWidth() const; virtual GLsizei getHeight() const; virtual GLint getLevel() const { return mLevel; } - virtual GLenum getFormat() const; - virtual sw::Format getInternalFormat() const; + virtual GLint getFormat() const; virtual GLsizei getSamples() const; virtual void setLevel(GLint level) { mLevel = level; } @@ -115,8 +113,7 @@ virtual GLsizei getDepth() const; virtual GLint getLayer() const { return mLayer; } virtual GLint getLevel() const { return mLevel; } - virtual GLenum getFormat() const; - virtual sw::Format getInternalFormat() const; + virtual GLint getFormat() const; virtual GLsizei getSamples() const; virtual void setLayer(GLint layer) { mLayer = layer; } @@ -145,8 +142,7 @@ virtual GLsizei getWidth() const; virtual GLsizei getHeight() const; virtual GLint getLevel() const { return mLevel; } - virtual GLenum getFormat() const; - virtual sw::Format getInternalFormat() const; + virtual GLint getFormat() const; virtual GLsizei getSamples() const; virtual void setLevel(GLint level) { mLevel = level; } @@ -173,15 +169,13 @@ virtual GLsizei getWidth() const; virtual GLsizei getHeight() const; - virtual GLenum getFormat() const; - virtual sw::Format getInternalFormat() const; + virtual GLint getFormat() const; virtual GLsizei getSamples() const; protected: GLsizei mWidth; GLsizei mHeight; GLenum format; - sw::Format internalFormat; GLsizei mSamples; }; @@ -211,8 +205,7 @@ GLsizei getDepth() const; GLint getLayer() const; GLint getLevel() const; - GLenum getFormat() const; - sw::Format getInternalFormat() const; + GLint getFormat() const; GLuint getRedSize() const; GLuint getGreenSize() const; GLuint getBlueSize() const; @@ -233,7 +226,7 @@ { public: explicit Colorbuffer(egl::Image *renderTarget); - Colorbuffer(GLsizei width, GLsizei height, GLenum format, GLsizei samples); + Colorbuffer(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples); virtual ~Colorbuffer(); @@ -249,7 +242,7 @@ { public: explicit DepthStencilbuffer(egl::Image *depthStencil); - DepthStencilbuffer(GLsizei width, GLsizei height, GLenum format, GLsizei samples); + DepthStencilbuffer(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples); ~DepthStencilbuffer(); @@ -265,7 +258,7 @@ { public: explicit Depthbuffer(egl::Image *depthStencil); - Depthbuffer(GLsizei width, GLsizei height, GLenum format, GLsizei samples); + Depthbuffer(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples); virtual ~Depthbuffer(); };
diff --git a/src/OpenGL/libGLESv2/Texture.cpp b/src/OpenGL/libGLESv2/Texture.cpp index 77e6d3f..6618859 100644 --- a/src/OpenGL/libGLESv2/Texture.cpp +++ b/src/OpenGL/libGLESv2/Texture.cpp
@@ -450,7 +450,7 @@ } } -bool Texture::copy(egl::Image *source, const sw::SliceRect &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, GLint zoffset, egl::Image *dest) +bool Texture::copy(egl::Image *source, const sw::SliceRect &sourceRect, GLint xoffset, GLint yoffset, GLint zoffset, egl::Image *dest) { Device *device = getDevice(); @@ -589,12 +589,6 @@ return image[level] ? image[level]->getType() : GL_NONE; } -sw::Format Texture2D::getInternalFormat(GLenum target, GLint level) const -{ - ASSERT(target == GL_TEXTURE_2D); - return image[level] ? image[level]->getInternalFormat() : sw::FORMAT_NULL; -} - int Texture2D::getLevelCount() const { ASSERT(isSamplerComplete()); @@ -673,7 +667,7 @@ image[level]->release(); } - GLenum sizedInternalFormat = GetSizedInternalFormat(format, GL_UNSIGNED_BYTE); + GLint sizedInternalFormat = GetSizedInternalFormat(format, GL_UNSIGNED_BYTE); image[level] = egl::Image::create(this, width, height, sizedInternalFormat, GL_UNSIGNED_BYTE); if(!image[level]) @@ -709,7 +703,7 @@ image[level]->release(); } - GLenum sizedInternalFormat = GetSizedInternalFormat(format, GL_UNSIGNED_BYTE); + GLint sizedInternalFormat = GetSizedInternalFormat(format, GL_UNSIGNED_BYTE); image[level] = egl::Image::create(this, width, height, sizedInternalFormat, GL_UNSIGNED_BYTE); if(!image[level]) @@ -730,7 +724,7 @@ sw::SliceRect sourceRect(x, y, x + width, y + height, 0); sourceRect.clip(0, 0, renderbuffer->getWidth(), renderbuffer->getHeight()); - copy(renderTarget, sourceRect, sizedInternalFormat, 0, 0, 0, image[level]); + copy(renderTarget, sourceRect, 0, 0, 0, image[level]); } renderTarget->release(); @@ -769,7 +763,7 @@ sw::SliceRect sourceRect(x, y, x + width, y + height, 0); sourceRect.clip(0, 0, renderbuffer->getWidth(), renderbuffer->getHeight()); - copy(renderTarget, sourceRect, image[level]->getFormat(), xoffset, yoffset, zoffset, image[level]); + copy(renderTarget, sourceRect, xoffset, yoffset, zoffset, image[level]); renderTarget->release(); } @@ -1077,12 +1071,6 @@ return image[face][level] ? image[face][level]->getType() : 0; } -sw::Format TextureCubeMap::getInternalFormat(GLenum target, GLint level) const -{ - int face = CubeFaceIndex(target); - return image[face][level] ? image[face][level]->getInternalFormat() : sw::FORMAT_NULL; -} - int TextureCubeMap::getLevelCount() const { ASSERT(isSamplerComplete()); @@ -1105,7 +1093,7 @@ image[face][level]->release(); } - GLenum sizedInternalFormat = GetSizedInternalFormat(format, GL_UNSIGNED_BYTE); + GLint sizedInternalFormat = GetSizedInternalFormat(format, GL_UNSIGNED_BYTE); int border = (egl::getClientVersion() >= 3) ? 1 : 0; image[face][level] = egl::Image::create(this, width, height, 1, border, sizedInternalFormat, GL_UNSIGNED_BYTE); @@ -1339,7 +1327,7 @@ image[face][level]->release(); } - GLenum sizedInternalFormat = GetSizedInternalFormat(format, GL_UNSIGNED_BYTE); + GLint sizedInternalFormat = GetSizedInternalFormat(format, GL_UNSIGNED_BYTE); int border = (egl::getClientVersion() >= 3) ? 1 : 0; image[face][level] = egl::Image::create(this, width, height, 1, border, sizedInternalFormat, GL_UNSIGNED_BYTE); @@ -1361,7 +1349,7 @@ sw::SliceRect sourceRect(x, y, x + width, y + height, 0); sourceRect.clip(0, 0, renderbuffer->getWidth(), renderbuffer->getHeight()); - copy(renderTarget, sourceRect, sizedInternalFormat, 0, 0, 0, image[face][level]); + copy(renderTarget, sourceRect, 0, 0, 0, image[face][level]); } renderTarget->release(); @@ -1414,7 +1402,7 @@ sw::SliceRect sourceRect(x, y, x + width, y + height, 0); sourceRect.clip(0, 0, renderbuffer->getWidth(), renderbuffer->getHeight()); - copy(renderTarget, sourceRect, image[face][level]->getFormat(), xoffset, yoffset, zoffset, image[face][level]); + copy(renderTarget, sourceRect, xoffset, yoffset, zoffset, image[face][level]); renderTarget->release(); } @@ -1614,12 +1602,6 @@ return image[level] ? image[level]->getType() : GL_NONE; } -sw::Format Texture3D::getInternalFormat(GLenum target, GLint level) const -{ - ASSERT(target == getTarget()); - return image[level] ? image[level]->getInternalFormat() : sw::FORMAT_NULL; -} - int Texture3D::getLevelCount() const { ASSERT(isSamplerComplete()); @@ -1698,7 +1680,7 @@ image[level]->release(); } - GLenum sizedInternalFormat = GetSizedInternalFormat(format, GL_UNSIGNED_BYTE); + GLint sizedInternalFormat = GetSizedInternalFormat(format, GL_UNSIGNED_BYTE); image[level] = egl::Image::create(this, width, height, depth, 0, sizedInternalFormat, GL_UNSIGNED_BYTE); if(!image[level]) @@ -1720,7 +1702,7 @@ sourceRect.clip(0, 0, renderbuffer->getWidth(), renderbuffer->getHeight()); for(GLint sliceZ = 0; sliceZ < depth; ++sliceZ, ++sourceRect.slice) { - copy(renderTarget, sourceRect, sizedInternalFormat, 0, 0, sliceZ, image[level]); + copy(renderTarget, sourceRect, 0, 0, sliceZ, image[level]); } } @@ -1760,7 +1742,7 @@ sw::SliceRect sourceRect = {x, y, x + width, y + height, 0}; sourceRect.clip(0, 0, renderbuffer->getWidth(), renderbuffer->getHeight()); - copy(renderTarget, sourceRect, image[level]->getFormat(), xoffset, yoffset, zoffset, image[level]); + copy(renderTarget, sourceRect, xoffset, yoffset, zoffset, image[level]); renderTarget->release(); }
diff --git a/src/OpenGL/libGLESv2/Texture.h b/src/OpenGL/libGLESv2/Texture.h index d5e0c80..6d04c53 100644 --- a/src/OpenGL/libGLESv2/Texture.h +++ b/src/OpenGL/libGLESv2/Texture.h
@@ -97,7 +97,6 @@ virtual GLsizei getDepth(GLenum target, GLint level) const; virtual GLenum getFormat(GLenum target, GLint level) const = 0; virtual GLenum getType(GLenum target, GLint level) const = 0; - virtual sw::Format getInternalFormat(GLenum target, GLint level) const = 0; virtual int getLevelCount() const = 0; virtual bool isSamplerComplete() const = 0; @@ -120,7 +119,7 @@ void setCompressedImage(GLsizei imageSize, const void *pixels, egl::Image *image); void subImageCompressed(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels, egl::Image *image); - bool copy(egl::Image *source, const sw::SliceRect &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, GLint zoffset, egl::Image *dest); + bool copy(egl::Image *source, const sw::SliceRect &sourceRect, GLint xoffset, GLint yoffset, GLint zoffset, egl::Image *dest); bool isMipmapFiltered() const; @@ -161,7 +160,6 @@ GLsizei getHeight(GLenum target, GLint level) const override; GLenum getFormat(GLenum target, GLint level) const override; GLenum getType(GLenum target, GLint level) const override; - sw::Format getInternalFormat(GLenum target, GLint level) const override; int getLevelCount() const override; void setImage(egl::Context *context, GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels); @@ -220,7 +218,6 @@ GLsizei getHeight(GLenum target, GLint level) const override; GLenum getFormat(GLenum target, GLint level) const override; GLenum getType(GLenum target, GLint level) const override; - sw::Format getInternalFormat(GLenum target, GLint level) const override; int getLevelCount() const override; void setImage(egl::Context *context, GLenum target, GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels); @@ -282,7 +279,6 @@ GLsizei getDepth(GLenum target, GLint level) const override; GLenum getFormat(GLenum target, GLint level) const override; GLenum getType(GLenum target, GLint level) const override; - sw::Format getInternalFormat(GLenum target, GLint level) const override; int getLevelCount() const override; void setImage(egl::Context *context, GLint level, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels);
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp index 08abb33..8f8ccdf 100644 --- a/src/OpenGL/libGLESv2/libGLESv2.cpp +++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -2285,7 +2285,7 @@ return error(GL_INVALID_OPERATION); } - if(!IsMipmappable(texture->getFormat(target, 0), texture->getInternalFormat(target, 0), clientVersion)) + if(!IsMipmappable(texture->getFormat(target, 0), clientVersion)) { return error(GL_INVALID_OPERATION); } @@ -3019,7 +3019,7 @@ return error(GL_INVALID_OPERATION); } - *params = sw2es::GetComponentType(renderbuffer->getInternalFormat(), attachment); + *params = GetComponentType(renderbuffer->getFormat(), attachment); break; case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: if(clientVersion >= 3) @@ -6319,7 +6319,7 @@ return error(GL_INVALID_ENUM); } - if(internalformat != (GLint)format) + if(internalformat != format) { return error(GL_INVALID_OPERATION); }
diff --git a/src/OpenGL/libGLESv2/utilities.cpp b/src/OpenGL/libGLESv2/utilities.cpp index 612926a..2b5d038 100644 --- a/src/OpenGL/libGLESv2/utilities.cpp +++ b/src/OpenGL/libGLESv2/utilities.cpp
@@ -33,19 +33,19 @@ // format and type combinations. typedef std::pair<GLenum, GLenum> FormatTypePair; - typedef std::pair<FormatTypePair, GLenum> FormatPair; + typedef std::pair<FormatTypePair, GLint> FormatPair; typedef std::map<FormatTypePair, GLenum> FormatMap; // A helper function to insert data into the format map with fewer characters. - static inline void InsertFormatMapping(FormatMap *map, GLenum format, GLenum type, GLenum internalFormat) + static inline void InsertFormatMapping(FormatMap *map, GLenum format, GLenum type, GLint internalFormat) { map->insert(FormatPair(FormatTypePair(format, type), internalFormat)); } FormatMap BuildFormatMap() { - static const GLenum GL_BGRA4_ANGLEX = 0x6ABC; - static const GLenum GL_BGR5_A1_ANGLEX = 0x6ABD; + static const GLint GL_BGRA4_ANGLEX = 0x6ABC; + static const GLint GL_BGR5_A1_ANGLEX = 0x6ABD; FormatMap map; @@ -146,9 +146,9 @@ return map; } - GLenum GetSizedInternalFormat(GLenum internalFormat, GLenum type) + GLint GetSizedInternalFormat(GLint internalformat, GLenum type) { - switch(internalFormat) + switch(internalformat) { case GL_ALPHA: case GL_LUMINANCE: @@ -168,11 +168,11 @@ case GL_SRGB_ALPHA_EXT: { static const FormatMap formatMap = BuildFormatMap(); - FormatMap::const_iterator iter = formatMap.find(FormatTypePair(internalFormat, type)); + FormatMap::const_iterator iter = formatMap.find(FormatTypePair(internalformat, type)); return (iter != formatMap.end()) ? iter->second : GL_NONE; } default: - return internalFormat; + return internalformat; } } @@ -648,9 +648,9 @@ return false; } - sw::Format internalformat = colorbuffer->getInternalFormat(); + GLint internalformat = colorbuffer->getFormat(); - if(sw::Surface::isNormalizedInteger(internalformat)) + if(IsNormalizedInteger(internalformat)) { // Combination always supported by normalized fixed-point rendering surfaces. if(format == GL_RGBA && type == GL_UNSIGNED_BYTE) @@ -669,7 +669,7 @@ } } } - else if(sw::Surface::isFloatFormat(internalformat)) + else if(IsFloatFormat(internalformat)) { // Combination always supported by floating-point rendering surfaces. // Supported in OpenGL ES 2.0 due to GL_EXT_color_buffer_half_float. @@ -678,7 +678,7 @@ return true; } } - else if(sw::Surface::isSignedNonNormalizedInteger(internalformat)) + else if(IsSignedNonNormalizedInteger(internalformat)) { ASSERT(clientVersion >= 3); @@ -687,7 +687,7 @@ return true; } } - else if(sw::Surface::isUnsignedNonNormalizedInteger(internalformat)) + else if(IsUnsignedNonNormalizedInteger(internalformat)) { ASSERT(clientVersion >= 3); @@ -897,8 +897,8 @@ case GL_RGBA4: case GL_RGB5_A1: case GL_RGB565: - case GL_RGB8_OES: - case GL_RGBA8_OES: + case GL_RGB8: + case GL_RGBA8: case GL_R16F: case GL_RG16F: case GL_R11F_G11F_B10F: @@ -1238,8 +1238,8 @@ case GL_RGBA4: case GL_RGB5_A1: case GL_RGB565: - case GL_RGB8_OES: - case GL_RGBA8_OES: + case GL_RGB8: + case GL_RGBA8: case GL_RED: case GL_RG: case GL_RGB: @@ -1300,8 +1300,8 @@ case GL_RGBA4: case GL_RGB5_A1: case GL_RGB565: - case GL_RGB8_OES: - case GL_RGBA8_OES: + case GL_RGB8: + case GL_RGBA8: case GL_RED: case GL_RG: case GL_RGB: @@ -1331,9 +1331,9 @@ return false; } - bool IsMipmappable(GLint internalformat, sw::Format format, GLint clientVersion) + bool IsMipmappable(GLint internalformat, GLint clientVersion) { - if(sw::Surface::isNonNormalizedInteger(format)) + if(IsNonNormalizedInteger(internalformat)) { return false; } @@ -1349,6 +1349,376 @@ } } + GLuint GetAlphaSize(GLint internalformat) + { + switch(internalformat) + { + case GL_RGBA4: return 4; + case GL_RGB5_A1: return 1; + case GL_RGB565: return 0; + case GL_R8: return 0; + case GL_RG8: return 0; + case GL_RGB8: return 0; + case GL_RGBA8: return 8; + case GL_R16F: return 0; + case GL_RG16F: return 0; + case GL_RGB16F: return 0; + case GL_RGBA16F: return 16; + case GL_R32F: return 0; + case GL_RG32F: return 0; + case GL_RGB32F: return 0; + case GL_RGBA32F: return 32; + case GL_BGRA8_EXT: return 8; + case GL_R8UI: return 0; + case GL_R8I: return 0; + case GL_R16UI: return 0; + case GL_R16I: return 0; + case GL_R32UI: return 0; + case GL_R32I: return 0; + case GL_RG8UI: return 0; + case GL_RG8I: return 0; + case GL_RG16UI: return 0; + case GL_RG16I: return 0; + case GL_RG32UI: return 0; + case GL_RG32I: return 0; + case GL_SRGB8_ALPHA8: return 8; + case GL_RGB10_A2: return 2; + case GL_RGBA8UI: return 8; + case GL_RGBA8I: return 8; + case GL_RGB10_A2UI: return 2; + case GL_RGBA16UI: return 16; + case GL_RGBA16I: return 16; + case GL_RGBA32I: return 32; + case GL_RGBA32UI: return 32; + case GL_R11F_G11F_B10F: return 0; + default: + UNREACHABLE(internalformat); + return 0; + } + } + + GLuint GetRedSize(GLint internalformat) + { + switch(internalformat) + { + case GL_RGBA4: return 4; + case GL_RGB5_A1: return 5; + case GL_RGB565: return 5; + case GL_R8: return 8; + case GL_RG8: return 8; + case GL_RGB8: return 8; + case GL_RGBA8: return 8; + case GL_R16F: return 16; + case GL_RG16F: return 16; + case GL_RGB16F: return 16; + case GL_RGBA16F: return 16; + case GL_R32F: return 32; + case GL_RG32F: return 32; + case GL_RGB32F: return 32; + case GL_RGBA32F: return 32; + case GL_BGRA8_EXT: return 8; + case GL_R8UI: return 8; + case GL_R8I: return 8; + case GL_R16UI: return 16; + case GL_R16I: return 16; + case GL_R32UI: return 32; + case GL_R32I: return 32; + case GL_RG8UI: return 8; + case GL_RG8I: return 8; + case GL_RG16UI: return 16; + case GL_RG16I: return 16; + case GL_RG32UI: return 32; + case GL_RG32I: return 32; + case GL_SRGB8_ALPHA8: return 8; + case GL_RGB10_A2: return 10; + case GL_RGBA8UI: return 8; + case GL_RGBA8I: return 8; + case GL_RGB10_A2UI: return 10; + case GL_RGBA16UI: return 16; + case GL_RGBA16I: return 16; + case GL_RGBA32I: return 32; + case GL_RGBA32UI: return 32; + case GL_R11F_G11F_B10F: return 11; + default: + UNREACHABLE(internalformat); + return 0; + } + } + + GLuint GetGreenSize(GLint internalformat) + { + switch(internalformat) + { + case GL_RGBA4: return 4; + case GL_RGB5_A1: return 5; + case GL_RGB565: return 6; + case GL_R8: return 0; + case GL_RG8: return 8; + case GL_RGB8: return 8; + case GL_RGBA8: return 8; + case GL_R16F: return 0; + case GL_RG16F: return 16; + case GL_RGB16F: return 16; + case GL_RGBA16F: return 16; + case GL_R32F: return 0; + case GL_RG32F: return 32; + case GL_RGB32F: return 32; + case GL_RGBA32F: return 32; + case GL_BGRA8_EXT: return 8; + case GL_R8UI: return 0; + case GL_R8I: return 0; + case GL_R16UI: return 0; + case GL_R16I: return 0; + case GL_R32UI: return 0; + case GL_R32I: return 0; + case GL_RG8UI: return 8; + case GL_RG8I: return 8; + case GL_RG16UI: return 16; + case GL_RG16I: return 16; + case GL_RG32UI: return 32; + case GL_RG32I: return 32; + case GL_SRGB8_ALPHA8: return 8; + case GL_RGB10_A2: return 10; + case GL_RGBA8UI: return 8; + case GL_RGBA8I: return 8; + case GL_RGB10_A2UI: return 10; + case GL_RGBA16UI: return 16; + case GL_RGBA16I: return 16; + case GL_RGBA32I: return 32; + case GL_RGBA32UI: return 32; + case GL_R11F_G11F_B10F: return 11; + default: + UNREACHABLE(internalformat); + return 0; + } + } + + GLuint GetBlueSize(GLint internalformat) + { + switch(internalformat) + { + case GL_RGBA4: return 4; + case GL_RGB5_A1: return 5; + case GL_RGB565: return 5; + case GL_R8: return 0; + case GL_RG8: return 0; + case GL_RGB8: return 8; + case GL_RGBA8: return 8; + case GL_R16F: return 0; + case GL_RG16F: return 0; + case GL_RGB16F: return 16; + case GL_RGBA16F: return 16; + case GL_R32F: return 0; + case GL_RG32F: return 0; + case GL_RGB32F: return 32; + case GL_RGBA32F: return 32; + case GL_BGRA8_EXT: return 8; + case GL_R8UI: return 0; + case GL_R8I: return 0; + case GL_R16UI: return 0; + case GL_R16I: return 0; + case GL_R32UI: return 0; + case GL_R32I: return 0; + case GL_RG8UI: return 0; + case GL_RG8I: return 0; + case GL_RG16UI: return 0; + case GL_RG16I: return 0; + case GL_RG32UI: return 0; + case GL_RG32I: return 0; + case GL_SRGB8_ALPHA8: return 8; + case GL_RGB10_A2: return 10; + case GL_RGBA8UI: return 8; + case GL_RGBA8I: return 8; + case GL_RGB10_A2UI: return 10; + case GL_RGBA16UI: return 16; + case GL_RGBA16I: return 16; + case GL_RGBA32I: return 32; + case GL_RGBA32UI: return 32; + case GL_R11F_G11F_B10F: return 10; + default: + UNREACHABLE(internalformat); + return 0; + } + } + + GLuint GetDepthSize(GLint internalformat) + { + switch(internalformat) + { + case GL_STENCIL_INDEX8: return 0; + case GL_DEPTH_COMPONENT16: return 16; + case GL_DEPTH_COMPONENT24: return 24; + case GL_DEPTH_COMPONENT32_OES: return 32; + case GL_DEPTH_COMPONENT32F: return 32; + case GL_DEPTH24_STENCIL8: return 24; + case GL_DEPTH32F_STENCIL8: return 32; + default: + UNREACHABLE(internalformat); + return 0; + } + } + + GLuint GetStencilSize(GLint internalformat) + { + switch(internalformat) + { + case GL_STENCIL_INDEX8: return 8; + case GL_DEPTH_COMPONENT16: return 0; + case GL_DEPTH_COMPONENT24: return 0; + case GL_DEPTH_COMPONENT32_OES: return 0; + case GL_DEPTH_COMPONENT32F: return 0; + case GL_DEPTH24_STENCIL8: return 8; + case GL_DEPTH32F_STENCIL8: return 8; + default: + UNREACHABLE(internalformat); + return 0; + } + } + + GLenum GetColorComponentType(GLint internalformat) + { + switch(internalformat) + { + case GL_ALPHA8_EXT: + case GL_LUMINANCE8_ALPHA8_EXT: + case GL_LUMINANCE8_EXT: + case GL_R8: + case GL_RG8: + case GL_SRGB8_ALPHA8: + case GL_RGB10_A2: + case GL_RGBA4: + case GL_RGB5_A1: + case GL_RGB565: + case GL_RGB8: + case GL_RGBA8: + case GL_SRGB8: + return GL_UNSIGNED_NORMALIZED; + case GL_R8_SNORM: + case GL_RG8_SNORM: + case GL_RGB8_SNORM: + case GL_RGBA8_SNORM: + return GL_SIGNED_NORMALIZED; + case GL_R8UI: + case GL_R16UI: + case GL_R32UI: + case GL_RG8UI: + case GL_RG16UI: + case GL_RG32UI: + case GL_RGB8UI: + case GL_RGB16UI: + case GL_RGB32UI: + case GL_RGB10_A2UI: + case GL_RGBA16UI: + case GL_RGBA32UI: + case GL_RGBA8UI: + return GL_UNSIGNED_INT; + case GL_R8I: + case GL_R16I: + case GL_R32I: + case GL_RG8I: + case GL_RG16I: + case GL_RG32I: + case GL_RGB8I: + case GL_RGB16I: + case GL_RGB32I: + case GL_RGBA8I: + case GL_RGBA16I: + case GL_RGBA32I: + return GL_INT; + case GL_R16F: + case GL_RG16F: + case GL_R11F_G11F_B10F: + case GL_RGB16F: + case GL_RGBA16F: + case GL_R32F: + case GL_RG32F: + case GL_RGB32F: + case GL_RGBA32F: + case GL_RGB9_E5: + return GL_FLOAT; + default: + UNREACHABLE(internalformat); + return GL_NONE; + } + } + + GLenum GetComponentType(GLint internalformat, GLenum attachment) + { + // Can be one of GL_FLOAT, GL_INT, GL_UNSIGNED_INT, GL_SIGNED_NORMALIZED, or GL_UNSIGNED_NORMALIZED + switch(attachment) + { + case GL_COLOR_ATTACHMENT0: + case GL_COLOR_ATTACHMENT1: + case GL_COLOR_ATTACHMENT2: + case GL_COLOR_ATTACHMENT3: + case GL_COLOR_ATTACHMENT4: + case GL_COLOR_ATTACHMENT5: + case GL_COLOR_ATTACHMENT6: + case GL_COLOR_ATTACHMENT7: + case GL_COLOR_ATTACHMENT8: + case GL_COLOR_ATTACHMENT9: + case GL_COLOR_ATTACHMENT10: + case GL_COLOR_ATTACHMENT11: + case GL_COLOR_ATTACHMENT12: + case GL_COLOR_ATTACHMENT13: + case GL_COLOR_ATTACHMENT14: + case GL_COLOR_ATTACHMENT15: + case GL_COLOR_ATTACHMENT16: + case GL_COLOR_ATTACHMENT17: + case GL_COLOR_ATTACHMENT18: + case GL_COLOR_ATTACHMENT19: + case GL_COLOR_ATTACHMENT20: + case GL_COLOR_ATTACHMENT21: + case GL_COLOR_ATTACHMENT22: + case GL_COLOR_ATTACHMENT23: + case GL_COLOR_ATTACHMENT24: + case GL_COLOR_ATTACHMENT25: + case GL_COLOR_ATTACHMENT26: + case GL_COLOR_ATTACHMENT27: + case GL_COLOR_ATTACHMENT28: + case GL_COLOR_ATTACHMENT29: + case GL_COLOR_ATTACHMENT30: + case GL_COLOR_ATTACHMENT31: + return GetColorComponentType(internalformat); + case GL_DEPTH_ATTACHMENT: + case GL_STENCIL_ATTACHMENT: + // Only color buffers may have integer components. + return GL_FLOAT; + default: + UNREACHABLE(attachment); + return GL_NONE; + } + } + + bool IsNormalizedInteger(GLint internalformat) + { + GLenum type = GetColorComponentType(internalformat); + + return type == GL_UNSIGNED_NORMALIZED || type == GL_SIGNED_NORMALIZED; + } + + bool IsNonNormalizedInteger(GLint internalformat) + { + GLenum type = GetColorComponentType(internalformat); + + return type == GL_UNSIGNED_INT || type == GL_INT; + } + + bool IsFloatFormat(GLint internalformat) + { + return GetColorComponentType(internalformat) == GL_FLOAT; + } + + bool IsSignedNonNormalizedInteger(GLint internalformat) + { + return GetColorComponentType(internalformat) == GL_INT; + } + + bool IsUnsignedNonNormalizedInteger(GLint internalformat) + { + return GetColorComponentType(internalformat) == GL_UNSIGNED_INT; + } + std::string ParseUniformName(const std::string &name, unsigned int *outSubscript) { // Strip any trailing array operator and retrieve the subscript @@ -1678,9 +2048,9 @@ { case GL_RGBA4: case GL_RGB5_A1: - case GL_RGBA8_OES: return sw::FORMAT_A8B8G8R8; + case GL_RGBA8: return sw::FORMAT_A8B8G8R8; case GL_RGB565: return sw::FORMAT_R5G6B5; - case GL_RGB8_OES: return sw::FORMAT_X8B8G8R8; + case GL_RGB8: return sw::FORMAT_X8B8G8R8; case GL_DEPTH_COMPONENT16: case GL_DEPTH_COMPONENT24: case GL_STENCIL_INDEX8: @@ -1732,391 +2102,19 @@ namespace sw2es { - unsigned int GetStencilSize(sw::Format stencilFormat) - { - switch(stencilFormat) - { - case sw::FORMAT_NULL: - return 0; - case sw::FORMAT_D24FS8: - case sw::FORMAT_D24S8: - case sw::FORMAT_D32FS8_TEXTURE: - case sw::FORMAT_D32FS8_SHADOW: - case sw::FORMAT_S8: - return 8; - // case sw::FORMAT_D24X4S4: - // return 4; - // case sw::FORMAT_D15S1: - // return 1; - // case sw::FORMAT_D16_LOCKABLE: - case sw::FORMAT_D32: - case sw::FORMAT_D24X8: - case sw::FORMAT_D32F_LOCKABLE: - case sw::FORMAT_D16: - return 0; - // case sw::FORMAT_D32_LOCKABLE: return 0; - // case sw::FORMAT_S8_LOCKABLE: return 8; - default: - UNREACHABLE(stencilFormat); - return 0; - } - } - - unsigned int GetAlphaSize(sw::Format colorFormat) - { - switch(colorFormat) - { - case sw::FORMAT_NULL: - return 0; - case sw::FORMAT_A16B16G16R16F: - case sw::FORMAT_A16B16G16R16I: - case sw::FORMAT_A16B16G16R16UI: - return 16; - case sw::FORMAT_A32B32G32R32F: - case sw::FORMAT_A32B32G32R32I: - case sw::FORMAT_A32B32G32R32UI: - return 32; - case sw::FORMAT_A2R10G10B10: - return 2; - case sw::FORMAT_A8R8G8B8: - case sw::FORMAT_A8B8G8R8: - case sw::FORMAT_SRGB8_A8: - case sw::FORMAT_A8B8G8R8I: - case sw::FORMAT_A8B8G8R8UI: - case sw::FORMAT_A8B8G8R8I_SNORM: - return 8; - case sw::FORMAT_A2B10G10R10: - return 2; - case sw::FORMAT_A1R5G5B5: - return 1; - case sw::FORMAT_X8R8G8B8: - case sw::FORMAT_X8B8G8R8: - case sw::FORMAT_SRGB8_X8: - case sw::FORMAT_R5G6B5: - return 0; - default: - UNREACHABLE(colorFormat); - return 0; - } - } - - unsigned int GetRedSize(sw::Format colorFormat) - { - switch(colorFormat) - { - case sw::FORMAT_NULL: - return 0; - case sw::FORMAT_R16F: - case sw::FORMAT_G16R16F: - case sw::FORMAT_B16G16R16F: - case sw::FORMAT_A16B16G16R16F: - case sw::FORMAT_R16I: - case sw::FORMAT_G16R16I: - case sw::FORMAT_X16B16G16R16I: - case sw::FORMAT_A16B16G16R16I: - case sw::FORMAT_R16UI: - case sw::FORMAT_G16R16UI: - case sw::FORMAT_X16B16G16R16UI: - case sw::FORMAT_A16B16G16R16UI: - return 16; - case sw::FORMAT_R32F: - case sw::FORMAT_G32R32F: - case sw::FORMAT_B32G32R32F: - case sw::FORMAT_X32B32G32R32F: - case sw::FORMAT_A32B32G32R32F: - case sw::FORMAT_R32I: - case sw::FORMAT_G32R32I: - case sw::FORMAT_X32B32G32R32I: - case sw::FORMAT_A32B32G32R32I: - case sw::FORMAT_R32UI: - case sw::FORMAT_G32R32UI: - case sw::FORMAT_X32B32G32R32UI: - case sw::FORMAT_A32B32G32R32UI: - return 32; - case sw::FORMAT_A2B10G10R10: - case sw::FORMAT_A2R10G10B10: - return 10; - case sw::FORMAT_A8R8G8B8: - case sw::FORMAT_A8B8G8R8: - case sw::FORMAT_X8R8G8B8: - case sw::FORMAT_X8B8G8R8: - case sw::FORMAT_SRGB8_A8: - case sw::FORMAT_SRGB8_X8: - case sw::FORMAT_R8: - case sw::FORMAT_G8R8: - case sw::FORMAT_R8I: - case sw::FORMAT_G8R8I: - case sw::FORMAT_X8B8G8R8I: - case sw::FORMAT_A8B8G8R8I: - case sw::FORMAT_R8UI: - case sw::FORMAT_G8R8UI: - case sw::FORMAT_X8B8G8R8UI: - case sw::FORMAT_A8B8G8R8UI: - case sw::FORMAT_R8I_SNORM: - case sw::FORMAT_G8R8I_SNORM: - case sw::FORMAT_X8B8G8R8I_SNORM: - case sw::FORMAT_A8B8G8R8I_SNORM: - return 8; - case sw::FORMAT_A1R5G5B5: - case sw::FORMAT_R5G6B5: - return 5; - default: - UNREACHABLE(colorFormat); - return 0; - } - } - - unsigned int GetGreenSize(sw::Format colorFormat) - { - switch(colorFormat) - { - case sw::FORMAT_NULL: - return 0; - case sw::FORMAT_G16R16F: - case sw::FORMAT_B16G16R16F: - case sw::FORMAT_A16B16G16R16F: - case sw::FORMAT_G16R16I: - case sw::FORMAT_X16B16G16R16I: - case sw::FORMAT_A16B16G16R16I: - case sw::FORMAT_G16R16UI: - case sw::FORMAT_X16B16G16R16UI: - case sw::FORMAT_A16B16G16R16UI: - return 16; - case sw::FORMAT_G32R32F: - case sw::FORMAT_B32G32R32F: - case sw::FORMAT_X32B32G32R32F: - case sw::FORMAT_A32B32G32R32F: - case sw::FORMAT_G32R32I: - case sw::FORMAT_X32B32G32R32I: - case sw::FORMAT_A32B32G32R32I: - case sw::FORMAT_G32R32UI: - case sw::FORMAT_X32B32G32R32UI: - case sw::FORMAT_A32B32G32R32UI: - return 32; - case sw::FORMAT_A2B10G10R10: - case sw::FORMAT_A2R10G10B10: - return 10; - case sw::FORMAT_A8R8G8B8: - case sw::FORMAT_A8B8G8R8: - case sw::FORMAT_X8R8G8B8: - case sw::FORMAT_X8B8G8R8: - case sw::FORMAT_SRGB8_A8: - case sw::FORMAT_SRGB8_X8: - case sw::FORMAT_G8R8: - case sw::FORMAT_G8R8I: - case sw::FORMAT_X8B8G8R8I: - case sw::FORMAT_A8B8G8R8I: - case sw::FORMAT_G8R8UI: - case sw::FORMAT_X8B8G8R8UI: - case sw::FORMAT_A8B8G8R8UI: - case sw::FORMAT_G8R8I_SNORM: - case sw::FORMAT_X8B8G8R8I_SNORM: - case sw::FORMAT_A8B8G8R8I_SNORM: - return 8; - case sw::FORMAT_A1R5G5B5: - return 5; - case sw::FORMAT_R5G6B5: - return 6; - default: - UNREACHABLE(colorFormat); - return 0; - } - } - - unsigned int GetBlueSize(sw::Format colorFormat) - { - switch(colorFormat) - { - case sw::FORMAT_NULL: - return 0; - case sw::FORMAT_B16G16R16F: - case sw::FORMAT_A16B16G16R16F: - case sw::FORMAT_X16B16G16R16I: - case sw::FORMAT_A16B16G16R16I: - case sw::FORMAT_X16B16G16R16UI: - case sw::FORMAT_A16B16G16R16UI: - return 16; - case sw::FORMAT_B32G32R32F: - case sw::FORMAT_X32B32G32R32F: - case sw::FORMAT_A32B32G32R32F: - case sw::FORMAT_X32B32G32R32I: - case sw::FORMAT_A32B32G32R32I: - case sw::FORMAT_X32B32G32R32UI: - case sw::FORMAT_A32B32G32R32UI: - return 32; - case sw::FORMAT_A2B10G10R10: - case sw::FORMAT_A2R10G10B10: - return 10; - case sw::FORMAT_A8R8G8B8: - case sw::FORMAT_A8B8G8R8: - case sw::FORMAT_X8R8G8B8: - case sw::FORMAT_X8B8G8R8: - case sw::FORMAT_SRGB8_A8: - case sw::FORMAT_SRGB8_X8: - case sw::FORMAT_X8B8G8R8I: - case sw::FORMAT_A8B8G8R8I: - case sw::FORMAT_X8B8G8R8UI: - case sw::FORMAT_A8B8G8R8UI: - case sw::FORMAT_X8B8G8R8I_SNORM: - case sw::FORMAT_A8B8G8R8I_SNORM: - return 8; - case sw::FORMAT_A1R5G5B5: - case sw::FORMAT_R5G6B5: - return 5; - default: - UNREACHABLE(colorFormat); - return 0; - } - } - - unsigned int GetDepthSize(sw::Format depthFormat) - { - switch(depthFormat) - { - case sw::FORMAT_NULL: return 0; - // case sw::FORMAT_D16_LOCKABLE: return 16; - case sw::FORMAT_D32: return 32; - // case sw::FORMAT_D15S1: return 15; - case sw::FORMAT_D24S8: return 24; - case sw::FORMAT_D24X8: return 24; - // case sw::FORMAT_D24X4S4: return 24; - case sw::FORMAT_DF16S8: - case sw::FORMAT_D16: return 16; - case sw::FORMAT_D32F: - case sw::FORMAT_D32F_COMPLEMENTARY: - case sw::FORMAT_D32F_LOCKABLE: return 32; - case sw::FORMAT_DF24S8: - case sw::FORMAT_D24FS8: return 24; - // case sw::FORMAT_D32_LOCKABLE: return 32; - // case sw::FORMAT_S8_LOCKABLE: return 0; - case sw::FORMAT_D32FS8_SHADOW: - case sw::FORMAT_D32FS8_TEXTURE: return 32; - default: - UNREACHABLE(depthFormat); - return 0; - } - } - - GLenum GetComponentType(sw::Format format, GLenum attachment) - { - // Can be one of GL_FLOAT, GL_INT, GL_UNSIGNED_INT, GL_SIGNED_NORMALIZED, or GL_UNSIGNED_NORMALIZED - switch(attachment) - { - case GL_COLOR_ATTACHMENT0: - case GL_COLOR_ATTACHMENT1: - case GL_COLOR_ATTACHMENT2: - case GL_COLOR_ATTACHMENT3: - case GL_COLOR_ATTACHMENT4: - case GL_COLOR_ATTACHMENT5: - case GL_COLOR_ATTACHMENT6: - case GL_COLOR_ATTACHMENT7: - case GL_COLOR_ATTACHMENT8: - case GL_COLOR_ATTACHMENT9: - case GL_COLOR_ATTACHMENT10: - case GL_COLOR_ATTACHMENT11: - case GL_COLOR_ATTACHMENT12: - case GL_COLOR_ATTACHMENT13: - case GL_COLOR_ATTACHMENT14: - case GL_COLOR_ATTACHMENT15: - case GL_COLOR_ATTACHMENT16: - case GL_COLOR_ATTACHMENT17: - case GL_COLOR_ATTACHMENT18: - case GL_COLOR_ATTACHMENT19: - case GL_COLOR_ATTACHMENT20: - case GL_COLOR_ATTACHMENT21: - case GL_COLOR_ATTACHMENT22: - case GL_COLOR_ATTACHMENT23: - case GL_COLOR_ATTACHMENT24: - case GL_COLOR_ATTACHMENT25: - case GL_COLOR_ATTACHMENT26: - case GL_COLOR_ATTACHMENT27: - case GL_COLOR_ATTACHMENT28: - case GL_COLOR_ATTACHMENT29: - case GL_COLOR_ATTACHMENT30: - case GL_COLOR_ATTACHMENT31: - switch(format) - { - case sw::FORMAT_R8I: - case sw::FORMAT_G8R8I: - case sw::FORMAT_X8B8G8R8I: - case sw::FORMAT_A8B8G8R8I: - case sw::FORMAT_R16I: - case sw::FORMAT_G16R16I: - case sw::FORMAT_X16B16G16R16I: - case sw::FORMAT_A16B16G16R16I: - case sw::FORMAT_R32I: - case sw::FORMAT_G32R32I: - case sw::FORMAT_X32B32G32R32I: - case sw::FORMAT_A32B32G32R32I: - return GL_INT; - case sw::FORMAT_R8UI: - case sw::FORMAT_G8R8UI: - case sw::FORMAT_X8B8G8R8UI: - case sw::FORMAT_A8B8G8R8UI: - case sw::FORMAT_R16UI: - case sw::FORMAT_G16R16UI: - case sw::FORMAT_X16B16G16R16UI: - case sw::FORMAT_A16B16G16R16UI: - case sw::FORMAT_R32UI: - case sw::FORMAT_G32R32UI: - case sw::FORMAT_X32B32G32R32UI: - case sw::FORMAT_A32B32G32R32UI: - return GL_UNSIGNED_INT; - case sw::FORMAT_R16F: - case sw::FORMAT_G16R16F: - case sw::FORMAT_B16G16R16F: - case sw::FORMAT_A16B16G16R16F: - case sw::FORMAT_R32F: - case sw::FORMAT_G32R32F: - case sw::FORMAT_B32G32R32F: - case sw::FORMAT_X32B32G32R32F: - case sw::FORMAT_A32B32G32R32F: - return GL_FLOAT; - case sw::FORMAT_R8: - case sw::FORMAT_G8R8: - case sw::FORMAT_A2B10G10R10: - case sw::FORMAT_A2R10G10B10: - case sw::FORMAT_A8R8G8B8: - case sw::FORMAT_A8B8G8R8: - case sw::FORMAT_X8R8G8B8: - case sw::FORMAT_X8B8G8R8: - case sw::FORMAT_SRGB8_A8: - case sw::FORMAT_SRGB8_X8: - case sw::FORMAT_A1R5G5B5: - case sw::FORMAT_R5G6B5: - return GL_UNSIGNED_NORMALIZED; - case sw::FORMAT_R8I_SNORM: - case sw::FORMAT_X8B8G8R8I_SNORM: - case sw::FORMAT_A8B8G8R8I_SNORM: - case sw::FORMAT_G8R8I_SNORM: - return GL_SIGNED_NORMALIZED; - default: - UNREACHABLE(format); - return GL_NONE; - } - case GL_DEPTH_ATTACHMENT: - case GL_STENCIL_ATTACHMENT: - // Only color buffers may have integer components. - return GL_FLOAT; - default: - UNREACHABLE(attachment); - return GL_NONE; - } - } - GLenum ConvertBackBufferFormat(sw::Format format) { switch(format) { case sw::FORMAT_A4R4G4B4: return GL_RGBA4; - case sw::FORMAT_A8R8G8B8: return GL_RGBA8_OES; - case sw::FORMAT_A8B8G8R8: return GL_RGBA8_OES; + case sw::FORMAT_A8R8G8B8: return GL_RGBA8; + case sw::FORMAT_A8B8G8R8: return GL_RGBA8; case sw::FORMAT_A1R5G5B5: return GL_RGB5_A1; case sw::FORMAT_R5G6B5: return GL_RGB565; - case sw::FORMAT_X8R8G8B8: return GL_RGB8_OES; - case sw::FORMAT_X8B8G8R8: return GL_RGB8_OES; - case sw::FORMAT_SRGB8_A8: return GL_RGBA8_OES; - case sw::FORMAT_SRGB8_X8: return GL_RGB8_OES; + case sw::FORMAT_X8R8G8B8: return GL_RGB8; + case sw::FORMAT_X8B8G8R8: return GL_RGB8; + case sw::FORMAT_SRGB8_A8: return GL_RGBA8; + case sw::FORMAT_SRGB8_X8: return GL_RGB8; default: UNREACHABLE(format); } @@ -2149,4 +2147,4 @@ return GL_DEPTH24_STENCIL8_OES; } -} +} \ No newline at end of file
diff --git a/src/OpenGL/libGLESv2/utilities.h b/src/OpenGL/libGLESv2/utilities.h index 7240999..6156097 100644 --- a/src/OpenGL/libGLESv2/utilities.h +++ b/src/OpenGL/libGLESv2/utilities.h
@@ -43,7 +43,7 @@ int AllocateFirstFreeBits(unsigned int *bits, unsigned int allocationSize, unsigned int bitsSize); bool IsCompressed(GLenum format, GLint clientVersion); - GLenum GetSizedInternalFormat(GLenum internalFormat, GLenum type); + GLint GetSizedInternalFormat(GLint internalFormat, GLenum type); GLenum ValidateCompressedFormat(GLenum format, GLint clientVersion, bool expectCompressedFormats); GLenum ValidateSubImageParams(bool compressed, bool copy, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, Texture *texture, GLint clientVersion); @@ -61,7 +61,22 @@ bool IsColorRenderable(GLint internalformat, GLint clientVersion); bool IsDepthRenderable(GLint internalformat, GLint clientVersion); bool IsStencilRenderable(GLint internalformat, GLint clientVersion); - bool IsMipmappable(GLint internalformat, sw::Format format, GLint clientVersion); + bool IsMipmappable(GLint internalformat, GLint clientVersion); + + GLuint GetAlphaSize(GLint internalformat); + GLuint GetRedSize(GLint internalformat); + GLuint GetGreenSize(GLint internalformat); + GLuint GetBlueSize(GLint internalformat); + GLuint GetDepthSize(GLint internalformat); + GLuint GetStencilSize(GLint internalformat); + + GLenum GetColorComponentType(GLint internalformat); + GLenum GetComponentType(GLint internalformat, GLenum attachment); + bool IsNormalizedInteger(GLint internalformat); + bool IsNonNormalizedInteger(GLint internalformat); + bool IsFloatFormat(GLint internalformat); + bool IsSignedNonNormalizedInteger(GLint internalformat); + bool IsUnsignedNonNormalizedInteger(GLint internalformat); // Parse the base uniform name and array index. Returns the base name of the uniform. outSubscript is // set to GL_INVALID_INDEX if the provided name is not an array or the array index is invalid. @@ -90,14 +105,6 @@ namespace sw2es { - GLuint GetAlphaSize(sw::Format colorFormat); - GLuint GetRedSize(sw::Format colorFormat); - GLuint GetGreenSize(sw::Format colorFormat); - GLuint GetBlueSize(sw::Format colorFormat); - GLuint GetDepthSize(sw::Format depthFormat); - GLuint GetStencilSize(sw::Format stencilFormat); - GLenum GetComponentType(sw::Format format, GLenum attachment); - GLenum ConvertBackBufferFormat(sw::Format format); GLenum ConvertDepthStencilFormat(sw::Format format); }