Edit

kc3-lang/angle/src/libGLESv2/renderer/BufferStorage9.cpp

Branch :

  • Show log

    Commit

  • Author : shannon.woods@transgaming.com
    Date : 2013-02-28 23:16:20
    Hash : bdf2d80f
    Message : Add precompiled header support for the libGLESv2 project. TRAC #22518 Signed-off-by: Geoff Lang Signed-off-by: Shannon Woods Author: Jamie Madill git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1938 736b8ea6-26fd-11df-bfd4-992fa37f6226

  • src/libGLESv2/renderer/BufferStorage9.cpp
  • #include "precompiled.h"
    //
    // 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.
    //
    
    // BufferStorage9.cpp Defines the BufferStorage9 class.
    
    #include "libGLESv2/renderer/BufferStorage9.h"
    #include "common/debug.h"
    
    namespace rx
    {
    
    BufferStorage9::BufferStorage9()
    {
        mMemory = NULL;
        mAllocatedSize = 0;
        mSize = 0;
    }
    
    BufferStorage9::~BufferStorage9()
    {
        delete[] mMemory;
    }
    
    BufferStorage9 *BufferStorage9::makeBufferStorage9(BufferStorage *bufferStorage)
    {
        ASSERT(HAS_DYNAMIC_TYPE(BufferStorage9*, bufferStorage));
        return static_cast<BufferStorage9*>(bufferStorage);
    }
    
    void *BufferStorage9::getData()
    {
        return mMemory;
    }
    
    void BufferStorage9::setData(const void* data, unsigned int size, unsigned int offset)
    {
        if (!mMemory || offset + size > mAllocatedSize)
        {
            unsigned int newAllocatedSize = offset + size;
            void *newMemory = new char[newAllocatedSize];
    
            if (offset > 0 && mMemory && mAllocatedSize > 0)
            {
                memcpy(newMemory, mMemory, std::min(offset, mAllocatedSize));
            }
    
            delete[] mMemory;
            mMemory = newMemory;
            mAllocatedSize = newAllocatedSize;
        }
    
        mSize = std::max(mSize, offset + size);
        memcpy(reinterpret_cast<char*>(mMemory) + offset, data, size);
    }
    
    void BufferStorage9::clear()
    {
        mSize = 0;
    }
    
    unsigned int BufferStorage9::getSize() const
    {
        return mSize;
    }
    
    bool BufferStorage9::supportsDirectBinding() const
    {
        return false;
    }
    
    }