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
}
}
void IndexRangeCache::addRange(GLenum type, unsigned int offset, GLsizei count, const RangeUI &range,
unsigned int streamOffset)
void IndexRangeCache::addRange(GLenum type, unsigned int offset, GLsizei count, const RangeUI &range)
{
mIndexRangeCache[IndexRange(type, offset, count)] = IndexBounds(range, streamOffset);
mIndexRangeCache[IndexRange(type, offset, count)] = range;
}
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();
while (i != mIndexRangeCache.end())
{
unsigned int rangeStart = i->second.streamOffset;
unsigned int rangeEnd = i->second.streamOffset + (gl::GetTypeInfo(i->first.type).bytes * i->first.count);
unsigned int rangeStart = i->first.offset;
unsigned int rangeEnd = i->first.offset + (gl::GetTypeInfo(i->first.type).bytes * i->first.count);
if (invalidateEnd < rangeStart || invalidateStart > rangeEnd)
{
......@@ -75,19 +74,17 @@ void IndexRangeCache::invalidateRange(unsigned int offset, unsigned int size)
}
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));
if (i != mIndexRangeCache.end())
{
if (outRange) *outRange = i->second.range;
if (outStreamOffset) *outStreamOffset = i->second.streamOffset;
if (outRange) *outRange = i->second;
return true;
}
else
{
if (outRange) *outRange = RangeUI(0, 0);
if (outStreamOffset) *outStreamOffset = 0;
return false;
}
}
......@@ -114,15 +111,4 @@ bool IndexRangeCache::IndexRange::operator<(const IndexRange& rhs) const
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
class IndexRangeCache
{
public:
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,
unsigned int *outStreamOffset) const;
void addRange(GLenum type, unsigned int offset, GLsizei count, const RangeUI &range);
bool findRange(GLenum type, unsigned int offset, GLsizei count, RangeUI *rangeOut) const;
void invalidateRange(unsigned int offset, unsigned int size);
void clear();
......@@ -46,16 +44,7 @@ class IndexRangeCache
bool operator<(const IndexRange& rhs) const;
};
struct IndexBounds
{
RangeUI range;
unsigned int streamOffset;
IndexBounds();
IndexBounds(const RangeUI &range, unsigned int offset);
};
typedef std::map<IndexRange, IndexBounds> IndexRangeMap;
typedef std::map<IndexRange, RangeUI> IndexRangeMap;
IndexRangeMap mIndexRangeCache;
};
......
......@@ -264,8 +264,7 @@ gl::Error VertexArrayGL::syncIndexData(GLsizei count, GLenum type, const GLvoid
// Find the index range in the buffer
const IndexRangeCache *rangeCache = mElementArrayBuffer.get()->getIndexRangeCache();
unsigned int streamOffset = 0;
if (!rangeCache->findRange(type, elementArrayBufferOffset, count, outIndexRange, &streamOffset))
if (!rangeCache->findRange(type, elementArrayBufferOffset, count, outIndexRange))
{
// Need to compute the index range.
mStateManager->bindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementArrayBufferID);
......@@ -274,7 +273,7 @@ gl::Error VertexArrayGL::syncIndexData(GLsizei count, GLenum type, const GLvoid
*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
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))
{
......
......@@ -1599,7 +1599,7 @@ bool ValidateDrawElements(Context *context, GLenum mode, GLsizei count, GLenum t
if (elementArrayBuffer)
{
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();
const uint8_t *dataPointer = NULL;
......@@ -1612,7 +1612,7 @@ bool ValidateDrawElements(Context *context, GLenum mode, GLsizei count, GLenum t
const uint8_t *offsetPointer = dataPointer + offset;
*indexRangeOut = rx::IndexRangeCache::ComputeRange(type, offsetPointer, count);
elementArrayBuffer->getIndexRangeCache()->addRange(type, offset, count, *indexRangeOut, offset);
elementArrayBuffer->getIndexRangeCache()->addRange(type, offset, count, *indexRangeOut);
}
}
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