Use de::ArrayBuffer, not raw arrays, in sglrReferenceContext.
authorJarkko Pöyry <jpoyry@google.com>
Fri, 13 Mar 2015 01:13:08 +0000 (18:13 -0700)
committerJarkko Pöyry <jpoyry@google.com>
Fri, 13 Mar 2015 01:13:08 +0000 (18:13 -0700)
Change-Id: I4b6b86318893441590f420320c201211ba8e269e

framework/opengl/simplereference/sglrReferenceContext.cpp
framework/opengl/simplereference/sglrReferenceContext.hpp

index 1bead80..bed3ba0 100644 (file)
@@ -4679,7 +4679,6 @@ namespace rc
 
 TextureLevelArray::TextureLevelArray (void)
 {
-       deMemset(&m_data[0], 0, sizeof(m_data));
 }
 
 TextureLevelArray::~TextureLevelArray (void)
@@ -4693,34 +4692,30 @@ void TextureLevelArray::clear (void)
 
        for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(m_data); ndx++)
        {
-               delete[] m_data[ndx];
-
-               m_data[ndx]             = DE_NULL;
-               m_access[ndx]   = PixelBufferAccess();
+               m_data[ndx].clear();
+               m_access[ndx] = PixelBufferAccess();
        }
 }
 
 void TextureLevelArray::allocLevel (int level, const tcu::TextureFormat& format, int width, int height, int depth)
 {
-       const int       dataSize        = format.getPixelSize()*width*height*depth;
+       const int dataSize = format.getPixelSize()*width*height*depth;
 
-       DE_ASSERT(level < DE_LENGTH_OF_ARRAY(m_data));
+       DE_ASSERT(deInBounds32(level, 0, DE_LENGTH_OF_ARRAY(m_data)));
 
        if (hasLevel(level))
                clearLevel(level);
 
-       m_data[level]   = new deUint8[dataSize];
-       m_access[level] = PixelBufferAccess(format, width, height, depth, m_data[level]);
+       m_data[level].setStorage(dataSize);
+       m_access[level] = PixelBufferAccess(format, width, height, depth, m_data[level].getPtr());
 }
 
 void TextureLevelArray::clearLevel (int level)
 {
-       DE_ASSERT(level < DE_LENGTH_OF_ARRAY(m_data));
-
-       delete[] m_data[level];
+       DE_ASSERT(deInBounds32(level, 0, DE_LENGTH_OF_ARRAY(m_data)));
 
-       m_data[level]   = DE_NULL;
-       m_access[level] = PixelBufferAccess();
+       m_data[level].clear();
+       m_access[level] = PixelBufferAccess();
 }
 
 Texture::Texture (deUint32 name, Type type)
index 76de272..a0ce306 100644 (file)
 #include "tcuSurface.hpp"
 #include "tcuTexture.hpp"
 #include "tcuVector.hpp"
-#include "gluRenderContext.hpp"
 #include "rrFragmentOperations.hpp"
 #include "rrRenderState.hpp"
 #include "rrRenderer.hpp"
 #include "rrMultisamplePixelBufferAccess.hpp"
+#include "gluRenderContext.hpp"
 #include "gluShaderUtil.hpp"
+#include "deArrayBuffer.hpp"
 
 #include <map>
 #include <vector>
@@ -117,11 +118,11 @@ public:
                                                                                TextureLevelArray       (void);
                                                                                ~TextureLevelArray      (void);
 
-       bool                                                            hasLevel                        (int level) const       { return level < DE_LENGTH_OF_ARRAY(m_data) && m_data[level];   }
-       const tcu::PixelBufferAccess&           getLevel                        (int level)                     { DE_ASSERT(hasLevel(level)); return m_access[level];                   }
-       const tcu::ConstPixelBufferAccess&      getLevel                        (int level) const       { DE_ASSERT(hasLevel(level)); return m_access[level];                   }
+       bool                                                            hasLevel                        (int level) const       { return deInBounds32(level, 0, DE_LENGTH_OF_ARRAY(m_data)) && !m_data[level].empty();  }
+       const tcu::PixelBufferAccess&           getLevel                        (int level)                     { DE_ASSERT(hasLevel(level)); return m_access[level];                                                                   }
+       const tcu::ConstPixelBufferAccess&      getLevel                        (int level) const       { DE_ASSERT(hasLevel(level)); return m_access[level];                                                                   }
 
-       const tcu::ConstPixelBufferAccess*      getLevels                       (void) const            { return &m_access[0];                                                                                  }
+       const tcu::ConstPixelBufferAccess*      getLevels                       (void) const            { return &m_access[0];                                                                                                                                  }
 
        void                                                            allocLevel                      (int level, const tcu::TextureFormat& format, int width, int height, int depth);
        void                                                            clearLevel                      (int level);
@@ -129,7 +130,7 @@ public:
        void                                                            clear                           (void);
 
 private:
-       deUint8*                                                        m_data[MAX_TEXTURE_SIZE_LOG2];
+       de::ArrayBuffer<deUint8>                        m_data[MAX_TEXTURE_SIZE_LOG2];
        tcu::PixelBufferAccess                          m_access[MAX_TEXTURE_SIZE_LOG2];
 };