Hash :
4d161bad
Author :
Date :
2014-03-17T18:13:30
Amends CopyTexImage validation to conform to new language in the ES 3.0.3 spec. bug=angle:582 Also performs format checks for non-subimage copies, and permits unsized format textures as destination for the copy. Change-Id: Id647bb968416fbd35e1c70e5da21c81367e08f07 Reviewed-on: https://chromium-review.googlesource.com/189431 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Shannon Woods <shannonwoods@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
//
// 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 (*InitializeTextureDataFunction)(int width, int height, int depth,
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);
typedef void (*VertexCopyFunction)(const void *input, size_t stride, size_t count, void *output);
namespace rx
{
class Renderer;
}
namespace gl
{
class Context;
bool IsValidInternalFormat(GLenum internalFormat, const Context *context);
bool IsValidFormat(GLenum format, GLuint clientVersion);
bool IsValidType(GLenum type, GLuint clientVersion);
bool IsValidFormatCombination(GLenum internalFormat, GLenum format, GLenum type, GLuint clientVersion);
bool IsValidCopyTexImageCombination(GLenum textureInternalFormat, GLenum frameBufferInternalFormat, GLuint readBufferHandle, GLuint clientVersion);
bool IsSizedInternalFormat(GLenum internalFormat, GLuint clientVersion);
GLenum GetSizedInternalFormat(GLenum format, GLenum type, GLuint clientVersion);
GLuint GetPixelBytes(GLenum internalFormat, GLuint clientVersion);
GLuint GetAlphaBits(GLenum internalFormat, GLuint clientVersion);
GLuint GetRedBits(GLenum internalFormat, GLuint clientVersion);
GLuint GetGreenBits(GLenum internalFormat, GLuint clientVersion);
GLuint GetBlueBits(GLenum internalFormat, GLuint clientVersion);
GLuint GetLuminanceBits(GLenum internalFormat, GLuint clientVersion);
GLuint GetDepthBits(GLenum internalFormat, GLuint clientVersion);
GLuint GetStencilBits(GLenum internalFormat, GLuint clientVersion);
GLuint GetTypeBytes(GLenum type);
bool IsSpecialInterpretationType(GLenum type);
bool IsFloatOrFixedComponentType(GLenum type);
GLenum GetFormat(GLenum internalFormat, GLuint clientVersion);
GLenum GetType(GLenum internalFormat, GLuint clientVersion);
GLenum GetComponentType(GLenum internalFormat, GLuint clientVersion);
GLuint GetComponentCount(GLenum internalFormat, GLuint clientVersion);
GLenum GetColorEncoding(GLenum internalFormat, GLuint clientVersion);
bool IsColorRenderingSupported(GLenum internalFormat, const rx::Renderer *renderer);
bool IsColorRenderingSupported(GLenum internalFormat, const Context *context);
bool IsTextureFilteringSupported(GLenum internalFormat, const rx::Renderer *renderer);
bool IsTextureFilteringSupported(GLenum internalFormat, const Context *context);
bool IsDepthRenderingSupported(GLenum internalFormat, const rx::Renderer *renderer);
bool IsDepthRenderingSupported(GLenum internalFormat, const Context *context);
bool IsStencilRenderingSupported(GLenum internalFormat, const rx::Renderer *renderer);
bool IsStencilRenderingSupported(GLenum internalFormat, const Context *context);
GLuint GetRowPitch(GLenum internalFormat, GLenum type, GLuint clientVersion, GLsizei width, GLint alignment);
GLuint GetDepthPitch(GLenum internalFormat, GLenum type, GLuint clientVersion, GLsizei width, GLsizei height, GLint alignment);
GLuint GetBlockSize(GLenum internalFormat, GLenum type, GLuint clientVersion, GLsizei width, GLsizei height);
bool IsFormatCompressed(GLenum internalFormat, GLuint clientVersion);
GLuint GetCompressedBlockWidth(GLenum internalFormat, GLuint clientVersion);
GLuint GetCompressedBlockHeight(GLenum internalFormat, GLuint clientVersion);
ColorWriteFunction GetColorWriteFunction(GLenum format, GLenum type, GLuint clientVersion);
}
#endif LIBGLESV2_FORMATUTILS_H_