1a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block//
2a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
3a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block// Use of this source code is governed by a BSD-style license that can be
4a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block// found in the LICENSE file.
5a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block//
6a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
7a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block// utilities.h: Conversion functions and other utility routines.
8a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
9a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#ifndef LIBGLESV2_UTILITIES_H
10a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#define LIBGLESV2_UTILITIES_H
11a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
12a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#define GL_APICALL
13a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#include <GLES2/gl2.h>
145abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick#include <GLES2/gl2ext.h>
15a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#include <d3d9.h>
16a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
17a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blocknamespace gl
18a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block{
19a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
20a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockstruct Color;
21a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
22a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockint UniformComponentCount(GLenum type);
23a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockGLenum UniformComponentType(GLenum type);
24a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blocksize_t UniformTypeSize(GLenum type);
25a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockint VariableRowCount(GLenum type);
26a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockint VariableColumnCount(GLenum type);
27a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
28a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockint AllocateFirstFreeBits(unsigned int *bits, unsigned int allocationSize, unsigned int bitsSize);
29a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
30a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockint ComputePixelSize(GLenum format, GLenum type);
31a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockGLsizei ComputePitch(GLsizei width, GLenum format, GLenum type, GLint alignment);
325abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain MerrickGLsizei ComputeCompressedPitch(GLsizei width, GLenum format);
335abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain MerrickGLsizei ComputeCompressedSize(GLsizei width, GLsizei height, GLenum format);
345abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickbool IsCompressed(GLenum format);
35a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockbool IsCubemapTextureTarget(GLenum target);
36a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockbool IsTextureTarget(GLenum target);
37a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockbool CheckTextureFormatType(GLenum format, GLenum type);
38a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
39ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool IsColorRenderable(GLenum internalformat);
40ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool IsDepthRenderable(GLenum internalformat);
41ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool IsStencilRenderable(GLenum internalformat);
42ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
43a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block}
44a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
45a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blocknamespace es2dx
46a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block{
47a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
48a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockD3DCMPFUNC ConvertComparison(GLenum comparison);
49a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockD3DCOLOR ConvertColor(gl::Color color);
50a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockD3DBLEND ConvertBlendFunc(GLenum blend);
51a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockD3DBLENDOP ConvertBlendOp(GLenum blendOp);
52a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockD3DSTENCILOP ConvertStencilOp(GLenum stencilOp);
53a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockD3DTEXTUREADDRESS ConvertTextureWrap(GLenum wrap);
54a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockD3DCULL ConvertCullMode(GLenum cullFace, GLenum frontFace);
55a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockDWORD ConvertColorMask(bool red, bool green, bool blue, bool alpha);
56a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockD3DTEXTUREFILTERTYPE ConvertMagFilter(GLenum magFilter);
57a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockvoid ConvertMinFilter(GLenum minFilter, D3DTEXTUREFILTERTYPE *d3dMinFilter, D3DTEXTUREFILTERTYPE *d3dMipFilter);
58a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockunsigned int GetAlphaSize(D3DFORMAT colorFormat);
59a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockunsigned int GetRedSize(D3DFORMAT colorFormat);
60a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockunsigned int GetGreenSize(D3DFORMAT colorFormat);
61a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockunsigned int GetBlueSize(D3DFORMAT colorFormat);
62a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockunsigned int GetDepthSize(D3DFORMAT depthFormat);
63a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockunsigned int GetStencilSize(D3DFORMAT stencilFormat);
64ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool ConvertPrimitiveType(GLenum primitiveType, GLsizei elementCount,
65a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block                          D3DPRIMITIVETYPE *d3dPrimitiveType, int *d3dPrimitiveCount);
66a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve BlockD3DFORMAT ConvertRenderbufferFormat(GLenum format);
675abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain MerrickD3DMULTISAMPLE_TYPE GetMultisampleTypeFromSamples(GLsizei samples);
685abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain MerrickGLsizei GetSamplesFromMultisampleType(D3DMULTISAMPLE_TYPE type);
69a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
70a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block}
71a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
72ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochnamespace dx2es
73ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{
74ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
75ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochGLenum ConvertBackBufferFormat(D3DFORMAT format);
76ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochGLenum ConvertDepthStencilFormat(D3DFORMAT format);
77ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
78ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch}
79ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
80a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#endif  // LIBGLESV2_UTILITIES_H
81