diff options
Diffstat (limited to 'ANGLE/src/libGLESv2/utilities.cpp')
-rw-r--r-- | ANGLE/src/libGLESv2/utilities.cpp | 68 |
1 files changed, 66 insertions, 2 deletions
diff --git a/ANGLE/src/libGLESv2/utilities.cpp b/ANGLE/src/libGLESv2/utilities.cpp index f584588..7fc2bc4 100644 --- a/ANGLE/src/libGLESv2/utilities.cpp +++ b/ANGLE/src/libGLESv2/utilities.cpp @@ -183,6 +183,49 @@ GLsizei ComputePitch(GLsizei width, GLenum format, GLenum type, GLint alignment) return (rawPitch + alignment - 1) & ~(alignment - 1); } +GLsizei ComputeCompressedPitch(GLsizei width, GLenum format) +{ + switch (format) + { + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + break; + default: + return 0; + } + + ASSERT(width % 4 == 0); + + return 8 * width / 4; +} + +GLsizei ComputeCompressedSize(GLsizei width, GLsizei height, GLenum format) +{ + switch (format) + { + case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: + case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + break; + default: + return 0; + } + + return 8 * (GLsizei)ceil((float)width / 4.0f) * (GLsizei)ceil((float)height / 4.0f); +} + +bool IsCompressed(GLenum format) +{ + if(format == GL_COMPRESSED_RGB_S3TC_DXT1_EXT || + format == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT) + { + return true; + } + else + { + return false; + } +} + // Returns the size, in bytes, of a single texel in an Image int ComputePixelSize(GLenum format, GLenum type) { @@ -196,6 +239,7 @@ int ComputePixelSize(GLenum format, GLenum type) case GL_LUMINANCE_ALPHA: return sizeof(unsigned char) * 2; case GL_RGB: return sizeof(unsigned char) * 3; case GL_RGBA: return sizeof(unsigned char) * 4; + case GL_BGRA_EXT: return sizeof(unsigned char) * 4; default: UNREACHABLE(); } break; @@ -228,6 +272,7 @@ bool CheckTextureFormatType(GLenum format, GLenum type) switch (format) { case GL_RGBA: + case GL_BGRA_EXT: case GL_RGB: case GL_ALPHA: case GL_LUMINANCE: @@ -599,12 +644,31 @@ D3DFORMAT ConvertRenderbufferFormat(GLenum format) switch (format) { case GL_RGBA4: - case GL_RGB5_A1: return D3DFMT_A8R8G8B8; + case GL_RGB5_A1: + case GL_RGBA8_OES: return D3DFMT_A8R8G8B8; case GL_RGB565: return D3DFMT_R5G6B5; + case GL_RGB8_OES: return D3DFMT_X8R8G8B8; case GL_DEPTH_COMPONENT16: - case GL_STENCIL_INDEX8: return D3DFMT_D24S8; + case GL_STENCIL_INDEX8: + case GL_DEPTH24_STENCIL8_OES: return D3DFMT_D24S8; default: UNREACHABLE(); return D3DFMT_A8R8G8B8; } } +GLsizei GetSamplesFromMultisampleType(D3DMULTISAMPLE_TYPE type) +{ + if (type == D3DMULTISAMPLE_NONMASKABLE) + return 0; + else + return type; +} + +D3DMULTISAMPLE_TYPE GetMultisampleTypeFromSamples(GLsizei samples) +{ + if (samples <= 1) + return D3DMULTISAMPLE_NONE; + else + return (D3DMULTISAMPLE_TYPE)samples; +} + } |