Commit 3d5f2687 by Olli Etuaho

Remove unused streamOffset from IndexRangeCache

This value is now redundant - it is always the same as regular offset. TEST=angle_end2end_tests BUG=angleproject:956 Change-Id: If4b6c8bcbebf24fbf84723fe081fd058916cc504 Reviewed-on: https://chromium-review.googlesource.com/262423Reviewed-by: 's avatarNicolas Capens <capn@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Tested-by: 's avatarOlli Etuaho <oetuaho@nvidia.com>
parent ff5e7374
...@@ -46,10 +46,9 @@ RangeUI IndexRangeCache::ComputeRange(GLenum type, const GLvoid *indices, GLsize ...@@ -46,10 +46,9 @@ RangeUI IndexRangeCache::ComputeRange(GLenum type, const GLvoid *indices, GLsize
} }
} }
void IndexRangeCache::addRange(GLenum type, unsigned int offset, GLsizei count, const RangeUI &range, void IndexRangeCache::addRange(GLenum type, unsigned int offset, GLsizei count, const RangeUI &range)
unsigned int streamOffset)
{ {
mIndexRangeCache[IndexRange(type, offset, count)] = IndexBounds(range, streamOffset); mIndexRangeCache[IndexRange(type, offset, count)] = range;
} }
void IndexRangeCache::invalidateRange(unsigned int offset, unsigned int size) void IndexRangeCache::invalidateRange(unsigned int offset, unsigned int size)
...@@ -60,8 +59,8 @@ void IndexRangeCache::invalidateRange(unsigned int offset, unsigned int size) ...@@ -60,8 +59,8 @@ void IndexRangeCache::invalidateRange(unsigned int offset, unsigned int size)
IndexRangeMap::iterator i = mIndexRangeCache.begin(); IndexRangeMap::iterator i = mIndexRangeCache.begin();
while (i != mIndexRangeCache.end()) while (i != mIndexRangeCache.end())
{ {
unsigned int rangeStart = i->second.streamOffset; unsigned int rangeStart = i->first.offset;
unsigned int rangeEnd = i->second.streamOffset + (gl::GetTypeInfo(i->first.type).bytes * i->first.count); unsigned int rangeEnd = i->first.offset + (gl::GetTypeInfo(i->first.type).bytes * i->first.count);
if (invalidateEnd < rangeStart || invalidateStart > rangeEnd) if (invalidateEnd < rangeStart || invalidateStart > rangeEnd)
{ {
...@@ -75,19 +74,17 @@ void IndexRangeCache::invalidateRange(unsigned int offset, unsigned int size) ...@@ -75,19 +74,17 @@ void IndexRangeCache::invalidateRange(unsigned int offset, unsigned int size)
} }
bool IndexRangeCache::findRange(GLenum type, unsigned int offset, GLsizei count, bool IndexRangeCache::findRange(GLenum type, unsigned int offset, GLsizei count,
RangeUI *outRange, unsigned int *outStreamOffset) const RangeUI *outRange) const
{ {
IndexRangeMap::const_iterator i = mIndexRangeCache.find(IndexRange(type, offset, count)); IndexRangeMap::const_iterator i = mIndexRangeCache.find(IndexRange(type, offset, count));
if (i != mIndexRangeCache.end()) if (i != mIndexRangeCache.end())
{ {
if (outRange) *outRange = i->second.range; if (outRange) *outRange = i->second;
if (outStreamOffset) *outStreamOffset = i->second.streamOffset;
return true; return true;
} }
else else
{ {
if (outRange) *outRange = RangeUI(0, 0); if (outRange) *outRange = RangeUI(0, 0);
if (outStreamOffset) *outStreamOffset = 0;
return false; return false;
} }
} }
...@@ -114,15 +111,4 @@ bool IndexRangeCache::IndexRange::operator<(const IndexRange& rhs) const ...@@ -114,15 +111,4 @@ bool IndexRangeCache::IndexRange::operator<(const IndexRange& rhs) const
return count < rhs.count; return count < rhs.count;
} }
IndexRangeCache::IndexBounds::IndexBounds()
: range(0, 0),
streamOffset(0)
{
}
IndexRangeCache::IndexBounds::IndexBounds(const RangeUI &rangeIn, unsigned int offset)
: range(rangeIn), streamOffset(offset)
{
}
} }
...@@ -23,10 +23,8 @@ namespace rx ...@@ -23,10 +23,8 @@ namespace rx
class IndexRangeCache class IndexRangeCache
{ {
public: public:
void addRange(GLenum type, unsigned int offset, GLsizei count, const RangeUI &range, void addRange(GLenum type, unsigned int offset, GLsizei count, const RangeUI &range);
unsigned int streamOffset); bool findRange(GLenum type, unsigned int offset, GLsizei count, RangeUI *rangeOut) const;
bool findRange(GLenum type, unsigned int offset, GLsizei count, RangeUI *rangeOut,
unsigned int *outStreamOffset) const;
void invalidateRange(unsigned int offset, unsigned int size); void invalidateRange(unsigned int offset, unsigned int size);
void clear(); void clear();
...@@ -46,16 +44,7 @@ class IndexRangeCache ...@@ -46,16 +44,7 @@ class IndexRangeCache
bool operator<(const IndexRange& rhs) const; bool operator<(const IndexRange& rhs) const;
}; };
struct IndexBounds typedef std::map<IndexRange, RangeUI> IndexRangeMap;
{
RangeUI range;
unsigned int streamOffset;
IndexBounds();
IndexBounds(const RangeUI &range, unsigned int offset);
};
typedef std::map<IndexRange, IndexBounds> IndexRangeMap;
IndexRangeMap mIndexRangeCache; IndexRangeMap mIndexRangeCache;
}; };
......
...@@ -264,8 +264,7 @@ gl::Error VertexArrayGL::syncIndexData(GLsizei count, GLenum type, const GLvoid ...@@ -264,8 +264,7 @@ gl::Error VertexArrayGL::syncIndexData(GLsizei count, GLenum type, const GLvoid
// Find the index range in the buffer // Find the index range in the buffer
const IndexRangeCache *rangeCache = mElementArrayBuffer.get()->getIndexRangeCache(); const IndexRangeCache *rangeCache = mElementArrayBuffer.get()->getIndexRangeCache();
unsigned int streamOffset = 0; if (!rangeCache->findRange(type, elementArrayBufferOffset, count, outIndexRange))
if (!rangeCache->findRange(type, elementArrayBufferOffset, count, outIndexRange, &streamOffset))
{ {
// Need to compute the index range. // Need to compute the index range.
mStateManager->bindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementArrayBufferID); mStateManager->bindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementArrayBufferID);
...@@ -274,7 +273,7 @@ gl::Error VertexArrayGL::syncIndexData(GLsizei count, GLenum type, const GLvoid ...@@ -274,7 +273,7 @@ gl::Error VertexArrayGL::syncIndexData(GLsizei count, GLenum type, const GLvoid
*outIndexRange = IndexRangeCache::ComputeRange(type, elementArrayBufferPointer + elementArrayBufferOffset, count); *outIndexRange = IndexRangeCache::ComputeRange(type, elementArrayBufferPointer + elementArrayBufferOffset, count);
// TODO: Store the range cache at the impl level since the gl::Buffer object is supposed to remain constant // TODO: Store the range cache at the impl level since the gl::Buffer object is supposed to remain constant
const_cast<IndexRangeCache*>(rangeCache)->addRange(type, elementArrayBufferOffset, count, *outIndexRange, 0); const_cast<IndexRangeCache*>(rangeCache)->addRange(type, elementArrayBufferOffset, count, *outIndexRange);
if (!mFunctions->unmapBuffer(GL_ELEMENT_ARRAY_BUFFER)) if (!mFunctions->unmapBuffer(GL_ELEMENT_ARRAY_BUFFER))
{ {
......
...@@ -1599,7 +1599,7 @@ bool ValidateDrawElements(Context *context, GLenum mode, GLsizei count, GLenum t ...@@ -1599,7 +1599,7 @@ bool ValidateDrawElements(Context *context, GLenum mode, GLsizei count, GLenum t
if (elementArrayBuffer) if (elementArrayBuffer)
{ {
uintptr_t offset = reinterpret_cast<uintptr_t>(indices); uintptr_t offset = reinterpret_cast<uintptr_t>(indices);
if (!elementArrayBuffer->getIndexRangeCache()->findRange(type, offset, count, indexRangeOut, NULL)) if (!elementArrayBuffer->getIndexRangeCache()->findRange(type, offset, count, indexRangeOut))
{ {
rx::BufferImpl *bufferImpl = elementArrayBuffer->getImplementation(); rx::BufferImpl *bufferImpl = elementArrayBuffer->getImplementation();
const uint8_t *dataPointer = NULL; const uint8_t *dataPointer = NULL;
...@@ -1612,7 +1612,7 @@ bool ValidateDrawElements(Context *context, GLenum mode, GLsizei count, GLenum t ...@@ -1612,7 +1612,7 @@ bool ValidateDrawElements(Context *context, GLenum mode, GLsizei count, GLenum t
const uint8_t *offsetPointer = dataPointer + offset; const uint8_t *offsetPointer = dataPointer + offset;
*indexRangeOut = rx::IndexRangeCache::ComputeRange(type, offsetPointer, count); *indexRangeOut = rx::IndexRangeCache::ComputeRange(type, offsetPointer, count);
elementArrayBuffer->getIndexRangeCache()->addRange(type, offset, count, *indexRangeOut, offset); elementArrayBuffer->getIndexRangeCache()->addRange(type, offset, count, *indexRangeOut);
} }
} }
else else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment