From 5e334966c020f28d520c1c6bb36193990195fe0e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jarkko=20P=C3=B6yry?= Date: Thu, 12 Mar 2015 18:13:08 -0700 Subject: [PATCH] Use de::ArrayBuffer, not raw arrays, in sglrReferenceContext. Change-Id: I4b6b86318893441590f420320c201211ba8e269e --- .../simplereference/sglrReferenceContext.cpp | 23 +++++++++------------- .../simplereference/sglrReferenceContext.hpp | 13 ++++++------ 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/framework/opengl/simplereference/sglrReferenceContext.cpp b/framework/opengl/simplereference/sglrReferenceContext.cpp index 1bead80..bed3ba0 100644 --- a/framework/opengl/simplereference/sglrReferenceContext.cpp +++ b/framework/opengl/simplereference/sglrReferenceContext.cpp @@ -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) diff --git a/framework/opengl/simplereference/sglrReferenceContext.hpp b/framework/opengl/simplereference/sglrReferenceContext.hpp index 76de272..a0ce306 100644 --- a/framework/opengl/simplereference/sglrReferenceContext.hpp +++ b/framework/opengl/simplereference/sglrReferenceContext.hpp @@ -29,12 +29,13 @@ #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 #include @@ -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 m_data[MAX_TEXTURE_SIZE_LOG2]; tcu::PixelBufferAccess m_access[MAX_TEXTURE_SIZE_LOG2]; }; -- 2.7.4