Commit 875509e9 by Jamie Madill Committed by Commit Bot

Vulkan: Minor cleanup to ContextVk::setupIndexedDraw.

This removes VertexArrayVk::updateIndexTranslation. Turns out this helper function wasn't that helpful. Bug: angleproject:3539 Change-Id: Ia4573219073261767e9d215ed4227233c23cbfaa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660639Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent beb0eb2d
......@@ -482,7 +482,7 @@ angle::Result ContextVk::setupIndexedDraw(const gl::Context *context,
if (!elementArrayBuffer)
{
mDirtyBits.set(DIRTY_BIT_INDEX_BUFFER);
ANGLE_TRY(mVertexArray->updateIndexTranslation(this, indexCount, indexType, indices));
ANGLE_TRY(mVertexArray->convertIndexBufferCPU(this, indexType, indexCount, indices));
}
else
{
......@@ -495,7 +495,8 @@ angle::Result ContextVk::setupIndexedDraw(const gl::Context *context,
if (indexType == gl::DrawElementsType::UnsignedByte && mDirtyBits[DIRTY_BIT_INDEX_BUFFER])
{
ANGLE_TRY(mVertexArray->updateIndexTranslation(this, indexCount, indexType, indices));
BufferVk *bufferVk = vk::GetImpl(elementArrayBuffer);
ANGLE_TRY(mVertexArray->convertIndexBufferGPU(this, bufferVk, indices));
}
}
......
......@@ -162,12 +162,11 @@ angle::Result VertexArrayVk::convertIndexBufferGPU(ContextVk *contextVk,
angle::Result VertexArrayVk::convertIndexBufferCPU(ContextVk *contextVk,
gl::DrawElementsType indexType,
size_t indexCount,
const void *sourcePointer,
vk::DynamicBuffer *dynamicBuffer)
const void *sourcePointer)
{
ASSERT(!mState.getElementArrayBuffer() || indexType == gl::DrawElementsType::UnsignedByte);
dynamicBuffer->releaseRetainedBuffers(contextVk);
mDynamicIndexData.releaseRetainedBuffers(contextVk);
size_t elementSize = gl::GetDrawElementsTypeSize(indexType);
if (indexType == gl::DrawElementsType::UnsignedByte)
......@@ -180,9 +179,9 @@ angle::Result VertexArrayVk::convertIndexBufferCPU(ContextVk *contextVk,
const size_t amount = elementSize * indexCount;
GLubyte *dst = nullptr;
ANGLE_TRY(dynamicBuffer->allocate(contextVk, amount, &dst, nullptr,
&mCurrentElementArrayBufferOffset, nullptr));
mCurrentElementArrayBuffer = dynamicBuffer->getCurrentBuffer();
ANGLE_TRY(mDynamicIndexData.allocate(contextVk, amount, &dst, nullptr,
&mCurrentElementArrayBufferOffset, nullptr));
mCurrentElementArrayBuffer = mDynamicIndexData.getCurrentBuffer();
if (indexType == gl::DrawElementsType::UnsignedByte)
{
// Unsigned bytes don't have direct support in Vulkan so we have to expand the
......@@ -222,8 +221,7 @@ angle::Result VertexArrayVk::convertIndexBufferCPU(ContextVk *contextVk,
// so there's no need to perform any conversion.
memcpy(dst, sourcePointer, amount);
}
ANGLE_TRY(dynamicBuffer->flush(contextVk));
return angle::Result::Continue;
return mDynamicIndexData.flush(contextVk);
}
// We assume the buffer is completely full of the same kind of data and convert
......@@ -657,26 +655,6 @@ angle::Result VertexArrayVk::handleLineLoop(ContextVk *contextVk,
return angle::Result::Continue;
}
angle::Result VertexArrayVk::updateIndexTranslation(ContextVk *contextVk,
GLsizei indexCount,
gl::DrawElementsType type,
const void *indices)
{
ASSERT(type != gl::DrawElementsType::InvalidEnum);
gl::Buffer *glBuffer = mState.getElementArrayBuffer();
if (!glBuffer)
{
return convertIndexBufferCPU(contextVk, type, indexCount, indices, &mDynamicIndexData);
}
ASSERT(type == gl::DrawElementsType::UnsignedByte);
BufferVk *bufferVk = vk::GetImpl(glBuffer);
return convertIndexBufferGPU(contextVk, bufferVk, indices);
}
void VertexArrayVk::updateDefaultAttrib(ContextVk *contextVk,
size_t attribIndex,
VkBuffer bufferHandle,
......
......@@ -78,14 +78,6 @@ class VertexArrayVk : public VertexArrayImpl
vk::BufferHelper *getCurrentElementArrayBuffer() const { return mCurrentElementArrayBuffer; }
angle::Result updateIndexTranslation(ContextVk *contextVk,
GLsizei indexCount,
gl::DrawElementsType type,
const void *indices);
private:
void setDefaultPackedInput(ContextVk *contextVk, size_t attribIndex);
angle::Result convertIndexBufferGPU(ContextVk *contextVk,
BufferVk *bufferVk,
const void *indices);
......@@ -93,8 +85,11 @@ class VertexArrayVk : public VertexArrayImpl
angle::Result convertIndexBufferCPU(ContextVk *contextVk,
gl::DrawElementsType indexType,
size_t indexCount,
const void *sourcePointer,
vk::DynamicBuffer *dynamicBuffer);
const void *sourcePointer);
private:
void setDefaultPackedInput(ContextVk *contextVk, size_t attribIndex);
angle::Result convertVertexBufferGPU(ContextVk *contextVk,
BufferVk *srcBuffer,
const gl::VertexBinding &binding,
......
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