| // |
| // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| |
| // formatutils.h: Queries for GL image formats. |
| |
| #ifndef LIBGLESV2_FORMATUTILS_H_ |
| #define LIBGLESV2_FORMATUTILS_H_ |
| |
| #include "libGLESv2/Caps.h" |
| #include "libGLESv2/angletypes.h" |
| |
| #include "angle_gl.h" |
| |
| #include <cstddef> |
| #include <cstdint> |
| |
| typedef void (*MipGenerationFunction)(size_t sourceWidth, size_t sourceHeight, size_t sourceDepth, |
| const uint8_t *sourceData, size_t sourceRowPitch, size_t sourceDepthPitch, |
| uint8_t *destData, size_t destRowPitch, size_t destDepthPitch); |
| |
| typedef void (*LoadImageFunction)(size_t width, size_t height, size_t depth, |
| const uint8_t *input, size_t inputRowPitch, size_t inputDepthPitch, |
| uint8_t *output, size_t outputRowPitch, size_t outputDepthPitch); |
| |
| typedef void (*InitializeTextureDataFunction)(size_t width, size_t height, size_t depth, |
| uint8_t *output, size_t outputRowPitch, size_t outputDepthPitch); |
| |
| typedef void (*ColorReadFunction)(const uint8_t *source, uint8_t *dest); |
| typedef void (*ColorWriteFunction)(const uint8_t *source, uint8_t *dest); |
| typedef void (*ColorCopyFunction)(const uint8_t *source, uint8_t *dest); |
| |
| typedef void (*VertexCopyFunction)(const uint8_t *input, size_t stride, size_t count, uint8_t *output); |
| |
| namespace gl |
| { |
| |
| struct FormatType |
| { |
| FormatType(); |
| |
| GLenum internalFormat; |
| ColorWriteFunction colorWriteFunction; |
| }; |
| const FormatType &GetFormatTypeInfo(GLenum format, GLenum type); |
| |
| struct Type |
| { |
| Type(); |
| |
| GLuint bytes; |
| bool specialInterpretation; |
| }; |
| const Type &GetTypeInfo(GLenum type); |
| |
| struct InternalFormat |
| { |
| InternalFormat(); |
| |
| GLuint redBits; |
| GLuint greenBits; |
| GLuint blueBits; |
| |
| GLuint luminanceBits; |
| |
| GLuint alphaBits; |
| GLuint sharedBits; |
| |
| GLuint depthBits; |
| GLuint stencilBits; |
| |
| GLuint pixelBytes; |
| |
| GLuint componentCount; |
| |
| bool compressed; |
| GLuint compressedBlockWidth; |
| GLuint compressedBlockHeight; |
| |
| GLenum format; |
| GLenum type; |
| |
| GLenum componentType; |
| GLenum colorEncoding; |
| |
| typedef bool (*SupportCheckFunction)(GLuint, const Extensions &); |
| SupportCheckFunction textureSupport; |
| SupportCheckFunction renderSupport; |
| SupportCheckFunction filterSupport; |
| |
| GLuint computeRowPitch(GLenum type, GLsizei width, GLint alignment) const; |
| GLuint computeDepthPitch(GLenum type, GLsizei width, GLsizei height, GLint alignment) const; |
| GLuint computeBlockSize(GLenum type, GLsizei width, GLsizei height) const; |
| }; |
| const InternalFormat &GetInternalFormatInfo(GLenum internalFormat); |
| |
| GLenum GetSizedInternalFormat(GLenum internalFormat, GLenum type); |
| |
| typedef std::set<GLenum> FormatSet; |
| const FormatSet &GetAllSizedInternalFormats(); |
| |
| } |
| |
| #endif // LIBGLESV2_FORMATUTILS_H_ |