Edit

kc3-lang/angle/src/libANGLE/renderer/d3d/d3d9/VertexDeclarationCache.h

Branch :

  • Show log

    Commit

  • Author : Geoff Lang
    Date : 2014-11-10 15:19:26
    Hash : 7dd2e10d
    Message : Merge the ProgramBinary class into Program. BUG=angle:731 Change-Id: I2ee97155841dc62f04bb71c1f2035d210fd3883c Reviewed-on: https://chromium-review.googlesource.com/232694 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>

  • src/libANGLE/renderer/d3d/d3d9/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 LIBANGLE_RENDERER_D3D_D3D9_VERTEXDECLARATIONCACHE_H_
    #define LIBANGLE_RENDERER_D3D_D3D9_VERTEXDECLARATIONCACHE_H_
    
    #include "libANGLE/Error.h"
    #include "libANGLE/renderer/d3d/VertexDataManager.h"
    
    namespace gl
    {
    class VertexDataManager;
    class Program;
    }
    
    namespace rx
    {
    
    class VertexDeclarationCache
    {
      public:
        VertexDeclarationCache();
        ~VertexDeclarationCache();
    
        gl::Error applyDeclaration(IDirect3DDevice9 *device, TranslatedAttribute attributes[], gl::Program *program, 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 // LIBANGLE_RENDERER_D3D_D3D9_VERTEXDECLARATIONCACHE_H_