Edit

kc3-lang/angle/src/libGLESv2/utilities.h

Branch :

  • Show log

    Commit

  • Author : jbauman@chromium.org
    Date : 2012-07-12 23:28:41
    Hash : 68715287
    Message : Scale up non-multiple-of-4 dxt textures D3D doesn't support DXT textures that aren't a multiple of 4 in size, so multiply the sizes by 2 or 4 so they work. Then ensure sampler parameters are set up correctly so they don't sample the unuploaded miplevels. BUG=https://code.google.com/p/angleproject/issues/detail?id=237 TEST= Review URL: https://codereview.appspot.com/6287045 git-svn-id: https://angleproject.googlecode.com/svn/trunk@1222 736b8ea6-26fd-11df-bfd4-992fa37f6226

  • src/libGLESv2/utilities.h
  • //
    // Copyright (c) 2002-2012 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.
    //
    
    // utilities.h: Conversion functions and other utility routines.
    
    #ifndef LIBGLESV2_UTILITIES_H
    #define LIBGLESV2_UTILITIES_H
    
    #define GL_APICALL
    #include <GLES2/gl2.h>
    #include <GLES2/gl2ext.h>
    #include <d3d9.h>
    
    #include <string>
    
    const D3DFORMAT D3DFMT_INTZ = ((D3DFORMAT)(MAKEFOURCC('I','N','T','Z')));
    const D3DFORMAT D3DFMT_NULL = ((D3DFORMAT)(MAKEFOURCC('N','U','L','L')));
    
    namespace gl
    {
    
    struct Color;
    
    int UniformExternalComponentCount(GLenum type);
    int UniformInternalComponentCount(GLenum type);
    GLenum UniformComponentType(GLenum type);
    size_t UniformInternalSize(GLenum type);
    size_t UniformExternalSize(GLenum type);
    int VariableRowCount(GLenum type);
    int VariableColumnCount(GLenum type);
    
    int AllocateFirstFreeBits(unsigned int *bits, unsigned int allocationSize, unsigned int bitsSize);
    
    int ComputePixelSize(GLenum format, GLenum type);
    GLsizei ComputePitch(GLsizei width, GLenum format, GLenum type, GLint alignment);
    GLsizei ComputeCompressedPitch(GLsizei width, GLenum format);
    GLsizei ComputeCompressedSize(GLsizei width, GLsizei height, GLenum format);
    bool IsCompressed(GLenum format);
    bool IsDepthTexture(GLenum format);
    bool IsCubemapTextureTarget(GLenum target);
    bool IsInternalTextureTarget(GLenum target);
    GLenum ExtractFormat(GLenum internalformat);
    GLenum ExtractType(GLenum internalformat);
    
    bool IsColorRenderable(GLenum internalformat);
    bool IsDepthRenderable(GLenum internalformat);
    bool IsStencilRenderable(GLenum internalformat);
    
    }
    
    namespace es2dx
    {
    
    D3DCMPFUNC ConvertComparison(GLenum comparison);
    D3DCOLOR ConvertColor(gl::Color color);
    D3DBLEND ConvertBlendFunc(GLenum blend);
    D3DBLENDOP ConvertBlendOp(GLenum blendOp);
    D3DSTENCILOP ConvertStencilOp(GLenum stencilOp);
    D3DTEXTUREADDRESS ConvertTextureWrap(GLenum wrap);
    D3DCULL ConvertCullMode(GLenum cullFace, GLenum frontFace);
    D3DCUBEMAP_FACES ConvertCubeFace(GLenum cubeFace);
    DWORD ConvertColorMask(bool red, bool green, bool blue, bool alpha);
    D3DTEXTUREFILTERTYPE ConvertMagFilter(GLenum magFilter, float maxAnisotropy);
    void ConvertMinFilter(GLenum minFilter, D3DTEXTUREFILTERTYPE *d3dMinFilter, D3DTEXTUREFILTERTYPE *d3dMipFilter, float maxAnisotropy);
    bool ConvertPrimitiveType(GLenum primitiveType, GLsizei elementCount,
                              D3DPRIMITIVETYPE *d3dPrimitiveType, int *d3dPrimitiveCount);
    D3DFORMAT ConvertRenderbufferFormat(GLenum format);
    D3DMULTISAMPLE_TYPE GetMultisampleTypeFromSamples(GLsizei samples);
    
    }
    
    namespace dx2es
    {
    GLuint GetAlphaSize(D3DFORMAT colorFormat);
    GLuint GetRedSize(D3DFORMAT colorFormat);
    GLuint GetGreenSize(D3DFORMAT colorFormat);
    GLuint GetBlueSize(D3DFORMAT colorFormat);
    GLuint GetDepthSize(D3DFORMAT depthFormat);
    GLuint GetStencilSize(D3DFORMAT stencilFormat);
    bool IsFloat32Format(D3DFORMAT surfaceFormat);
    bool IsFloat16Format(D3DFORMAT surfaceFormat);
    bool IsDepthTextureFormat(D3DFORMAT surfaceFormat);
    bool IsStencilTextureFormat(D3DFORMAT surfaceFormat);
    bool IsCompressedD3DFormat(D3DFORMAT format);
    
    GLsizei GetSamplesFromMultisampleType(D3DMULTISAMPLE_TYPE type);
    
    GLenum ConvertBackBufferFormat(D3DFORMAT format);
    GLenum ConvertDepthStencilFormat(D3DFORMAT format);
    
    }
    
    std::string getTempPath();
    void writeFile(const char* path, const void* data, size_t size);
    
    inline bool isDeviceLostError(HRESULT errorCode)
    {
        switch (errorCode)
        {
          case D3DERR_DRIVERINTERNALERROR:
          case D3DERR_DEVICELOST:
          case D3DERR_DEVICEHUNG:
          case D3DERR_DEVICEREMOVED:
            return true;
          default:
            return false;
        }
    };
    
    #endif  // LIBGLESV2_UTILITIES_H