Edit

kc3-lang/angle/src/libGLESv2/renderer/VertexDeclarationCache.h

Branch :

  • Show log

    Commit

  • Author : daniel@transgaming.com
    Date : 2012-11-28 21:00:08
    Hash : 70a219bc
    Message : Fix line endings on a number of files git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1511 736b8ea6-26fd-11df-bfd4-992fa37f6226

  • src/libGLESv2/renderer/VertexDeclarationCache.h
  • //
    // Copyright (c) 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.
    //
    
    // VertexDeclarationCache.h: Defines a helper class to construct and cache vertex declarations.
    
    #ifndef LIBGLESV2_RENDERER_VERTEXDECLARATIONCACHE_H_
    #define LIBGLESV2_RENDERER_VERTEXDECLARATIONCACHE_H_
    
    #include "libGLESv2/Context.h"
    #include "libGLESv2/VertexDataManager.h"
    
    namespace gl
    {
    class VertexDataManager;
    }
    
    namespace rx
    {
    
    class VertexDeclarationCache
    {
      public:
        VertexDeclarationCache();
        ~VertexDeclarationCache();
    
        GLenum applyDeclaration(IDirect3DDevice9 *device, gl::TranslatedAttribute attributes[], gl::ProgramBinary *programBinary, GLsizei instances, GLsizei *repeatDraw);
    
        void markStateDirty();
    
      private:
        UINT mMaxLru;
    
        enum { NUM_VERTEX_DECL_CACHE_ENTRIES = 32 };
    
        struct VBData
        {
            unsigned int serial;
            unsigned int stride;
            unsigned int offset;
        };
    
        VBData mAppliedVBs[gl::MAX_VERTEX_ATTRIBS];
        IDirect3DVertexDeclaration9 *mLastSetVDecl;
        bool mInstancingEnabled;
    
        struct VertexDeclCacheEntry
        {
            D3DVERTEXELEMENT9 cachedElements[gl::MAX_VERTEX_ATTRIBS + 1];
            UINT lruCount;
            IDirect3DVertexDeclaration9 *vertexDeclaration;
        } mVertexDeclCache[NUM_VERTEX_DECL_CACHE_ENTRIES];
    };
    
    }
    
    #endif // LIBGLESV2_RENDERER_VERTEXDECLARATIONCACHE_H_