blob: ce038a34f23d51438340a803f0b20114a2398578 [file] [log] [blame]
//
// 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_
#define GL_APICALL
#include <GLES3/gl3.h>
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#include "libGLESv2/angletypes.h"
typedef void (*MipGenerationFunction)(unsigned int sourceWidth, unsigned int sourceHeight, unsigned int sourceDepth,
const unsigned char *sourceData, int sourceRowPitch, int sourceDepthPitch,
unsigned char *destData, int destRowPitch, int destDepthPitch);
typedef void (*LoadImageFunction)(int width, int height, int depth,
const void *input, unsigned int inputRowPitch, unsigned int inputDepthPitch,
void *output, unsigned int outputRowPitch, unsigned int outputDepthPitch);
typedef void (*ColorReadFunction)(const void *source, void *dest);
typedef void (*ColorWriteFunction)(const void *source, void *dest);
typedef void (*ColorCopyFunction)(const void *source, void *dest);
namespace rx
{
class Renderer;
}
namespace gl
{
class Context;
bool IsValidInternalFormat(GLint internalFormat, const Context *context);
bool IsValidFormat(GLenum format, GLuint clientVersion);
bool IsValidType(GLenum type, GLuint clientVersion);
bool IsValidFormatCombination(GLint internalFormat, GLenum format, GLenum type, GLuint clientVersion);
bool IsValidCopyTexImageCombination(GLenum textureInternalFormat, GLenum frameBufferInternalFormat, GLuint clientVersion);
bool IsSizedInternalFormat(GLint internalFormat, GLuint clientVersion);
GLint GetSizedInternalFormat(GLenum format, GLenum type, GLuint clientVersion);
GLuint GetPixelBytes(GLint internalFormat, GLuint clientVersion);
GLuint GetAlphaBits(GLint internalFormat, GLuint clientVersion);
GLuint GetRedBits(GLint internalFormat, GLuint clientVersion);
GLuint GetGreenBits(GLint internalFormat, GLuint clientVersion);
GLuint GetBlueBits(GLint internalFormat, GLuint clientVersion);
GLuint GetLuminanceBits(GLint internalFormat, GLuint clientVersion);
GLuint GetDepthBits(GLint internalFormat, GLuint clientVersion);
GLuint GetStencilBits(GLint internalFormat, GLuint clientVersion);
GLuint GetTypeBytes(GLenum type);
bool IsSpecialInterpretationType(GLenum type);
GLenum GetFormat(GLint internalFormat, GLuint clientVersion);
GLenum GetType(GLint internalFormat, GLuint clientVersion);
bool IsNormalizedFixedPointFormat(GLint internalFormat, GLuint clientVersion);
bool IsIntegerFormat(GLint internalFormat, GLuint clientVersion);
bool IsSignedIntegerFormat(GLint internalFormat, GLuint clientVersion);
bool IsUnsignedIntegerFormat(GLint internalFormat, GLuint clientVersion);
bool IsFloatingPointFormat(GLint internalFormat, GLuint clientVersion);
bool IsSRGBFormat(GLint internalFormat, GLuint clientVersion);
bool IsColorRenderingSupported(GLint internalFormat, const rx::Renderer *renderer);
bool IsColorRenderingSupported(GLint internalFormat, const Context *context);
bool IsTextureFilteringSupported(GLint internalFormat, const rx::Renderer *renderer);
bool IsTextureFilteringSupported(GLint internalFormat, const Context *context);
bool IsDepthRenderingSupported(GLint internalFormat, const rx::Renderer *renderer);
bool IsDepthRenderingSupported(GLint internalFormat, const Context *context);
bool IsStencilRenderingSupported(GLint internalFormat, const rx::Renderer *renderer);
bool IsStencilRenderingSupported(GLint internalFormat, const Context *context);
GLuint GetRowPitch(GLint internalFormat, GLenum type, GLuint clientVersion, GLsizei width, GLint alignment);
GLuint GetDepthPitch(GLint internalFormat, GLenum type, GLuint clientVersion, GLsizei width, GLsizei height, GLint alignment);
GLuint GetBlockSize(GLint internalFormat, GLenum type, GLuint clientVersion, GLsizei width, GLsizei height);
bool IsFormatCompressed(GLint internalFormat, GLuint clientVersion);
GLuint GetCompressedBlockWidth(GLint internalFormat, GLuint clientVersion);
GLuint GetCompressedBlockHeight(GLint internalFormat, GLuint clientVersion);
ColorWriteFunction GetColorWriteFunction(GLenum format, GLenum type, GLuint clientVersion);
}
#endif LIBGLESV2_FORMATUTILS_H_