summaryrefslogtreecommitdiff
path: root/chromium/third_party/angle/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-07-31 15:50:41 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-08-30 12:35:23 +0000
commit7b2ffa587235a47d4094787d72f38102089f402a (patch)
tree30e82af9cbab08a7fa028bb18f4f2987a3f74dfa /chromium/third_party/angle/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
parentd94af01c90575348c4e81a418257f254b6f8d225 (diff)
downloadqtwebengine-chromium-7b2ffa587235a47d4094787d72f38102089f402a.tar.gz
BASELINE: Update Chromium to 76.0.3809.94
Change-Id: I321c3f5f929c105aec0f98c5091ef6108822e647 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/third_party/angle/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp')
-rw-r--r--chromium/third_party/angle/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp69
1 files changed, 44 insertions, 25 deletions
diff --git a/chromium/third_party/angle/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp b/chromium/third_party/angle/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
index f5acd68efd1..5ea36b43bcf 100644
--- a/chromium/third_party/angle/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
+++ b/chromium/third_party/angle/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
@@ -153,18 +153,18 @@ VertexArrayVk::~VertexArrayVk() {}
void VertexArrayVk::destroy(const gl::Context *context)
{
- RendererVk *renderer = vk::GetImpl(context)->getRenderer();
+ ContextVk *contextVk = vk::GetImpl(context);
- mTheNullBuffer.release(renderer);
+ mTheNullBuffer.release(contextVk);
for (vk::DynamicBuffer &buffer : mCurrentArrayBufferConversion)
{
- buffer.release(renderer);
+ buffer.release(contextVk);
}
- mDynamicVertexData.release(renderer);
- mDynamicIndexData.release(renderer);
- mTranslatedByteIndexData.release(renderer);
- mLineLoopHelper.release(renderer);
+ mDynamicVertexData.release(contextVk);
+ mDynamicIndexData.release(contextVk);
+ mTranslatedByteIndexData.release(contextVk);
+ mLineLoopHelper.release(contextVk);
}
angle::Result VertexArrayVk::streamIndexData(ContextVk *contextVk,
@@ -175,7 +175,7 @@ angle::Result VertexArrayVk::streamIndexData(ContextVk *contextVk,
{
ASSERT(!mState.getElementArrayBuffer() || indexType == gl::DrawElementsType::UnsignedByte);
- dynamicBuffer->releaseRetainedBuffers(contextVk->getRenderer());
+ dynamicBuffer->releaseRetainedBuffers(contextVk);
const size_t amount = sizeof(GLushort) * indexCount;
GLubyte *dst = nullptr;
@@ -212,8 +212,6 @@ angle::Result VertexArrayVk::convertVertexBufferGpu(ContextVk *contextVk,
size_t attribIndex,
const vk::Format &vertexFormat)
{
- RendererVk *renderer = contextVk->getRenderer();
-
const angle::Format &srcFormat = vertexFormat.angleFormat();
const angle::Format &destFormat = vertexFormat.bufferFormat();
@@ -231,7 +229,7 @@ angle::Result VertexArrayVk::convertVertexBufferGpu(ContextVk *contextVk,
ASSERT(GetVertexInputAlignment(vertexFormat) <= kMaxVertexFormatAlignment);
// Allocate buffer for results
- mCurrentArrayBufferConversion[attribIndex].releaseRetainedBuffers(renderer);
+ mCurrentArrayBufferConversion[attribIndex].releaseRetainedBuffers(contextVk);
ANGLE_TRY(mCurrentArrayBufferConversion[attribIndex].allocate(
contextVk, numVertices * destFormatSize, nullptr, nullptr,
&mCurrentArrayBufferOffsets[attribIndex], nullptr));
@@ -246,8 +244,8 @@ angle::Result VertexArrayVk::convertVertexBufferGpu(ContextVk *contextVk,
params.srcOffset = binding.getOffset();
params.destOffset = static_cast<size_t>(mCurrentArrayBufferOffsets[attribIndex]);
- ANGLE_TRY(renderer->getUtils().convertVertexBuffer(contextVk, mCurrentArrayBuffers[attribIndex],
- &srcBuffer->getBuffer(), params));
+ ANGLE_TRY(contextVk->getUtils().convertVertexBuffer(
+ contextVk, mCurrentArrayBuffers[attribIndex], &srcBuffer->getBuffer(), params));
mCurrentArrayBufferHandles[attribIndex] =
mCurrentArrayBuffers[attribIndex]->getBuffer().getHandle();
@@ -269,7 +267,7 @@ angle::Result VertexArrayVk::convertVertexBufferCpu(ContextVk *contextVk,
unsigned srcFormatSize = vertexFormat.angleFormat().pixelBytes;
unsigned dstFormatSize = vertexFormat.bufferFormat().pixelBytes;
- mCurrentArrayBufferConversion[attribIndex].releaseRetainedBuffers(contextVk->getRenderer());
+ mCurrentArrayBufferConversion[attribIndex].releaseRetainedBuffers(contextVk);
size_t numVertices = GetVertexCount(srcBuffer, binding, srcFormatSize);
if (numVertices == 0)
@@ -295,11 +293,11 @@ angle::Result VertexArrayVk::convertVertexBufferCpu(ContextVk *contextVk,
return angle::Result::Continue;
}
-ANGLE_INLINE void VertexArrayVk::ensureConversionReleased(RendererVk *renderer, size_t attribIndex)
+ANGLE_INLINE void VertexArrayVk::ensureConversionReleased(ContextVk *contextVk, size_t attribIndex)
{
if (mCurrentArrayBufferConversionCanRelease[attribIndex])
{
- mCurrentArrayBufferConversion[attribIndex].release(renderer);
+ mCurrentArrayBufferConversion[attribIndex].release(contextVk);
mCurrentArrayBufferConversionCanRelease[attribIndex] = false;
}
}
@@ -395,7 +393,28 @@ angle::Result VertexArrayVk::syncState(const gl::Context *context,
ANGLE_INLINE void VertexArrayVk::setDefaultPackedInput(ContextVk *contextVk, size_t attribIndex)
{
- contextVk->onVertexAttributeChange(attribIndex, 0, 0, VK_FORMAT_R32G32B32A32_SFLOAT, 0);
+ const gl::State &glState = contextVk->getState();
+ const gl::VertexAttribCurrentValueData &defaultValue =
+ glState.getVertexAttribCurrentValues()[attribIndex];
+
+ switch (defaultValue.Type)
+ {
+ case gl::VertexAttribType::Float:
+ contextVk->onVertexAttributeChange(attribIndex, 0, 0, VK_FORMAT_R32G32B32A32_SFLOAT, 0);
+ break;
+
+ case gl::VertexAttribType::Int:
+ contextVk->onVertexAttributeChange(attribIndex, 0, 0, VK_FORMAT_R32G32B32A32_SINT, 0);
+ break;
+
+ case gl::VertexAttribType::UnsignedInt:
+ contextVk->onVertexAttributeChange(attribIndex, 0, 0, VK_FORMAT_R32G32B32A32_UINT, 0);
+ break;
+
+ default:
+ UNREACHABLE();
+ break;
+ }
}
angle::Result VertexArrayVk::syncDirtyAttrib(ContextVk *contextVk,
@@ -453,7 +472,7 @@ angle::Result VertexArrayVk::syncDirtyAttrib(ContextVk *contextVk,
stride = binding.getStride();
}
- ensureConversionReleased(renderer, attribIndex);
+ ensureConversionReleased(contextVk, attribIndex);
}
}
else
@@ -462,7 +481,7 @@ angle::Result VertexArrayVk::syncDirtyAttrib(ContextVk *contextVk,
mCurrentArrayBufferHandles[attribIndex] = mTheNullBuffer.getBuffer().getHandle();
mCurrentArrayBufferOffsets[attribIndex] = 0;
stride = vertexFormat.bufferFormat().pixelBytes;
- ensureConversionReleased(renderer, attribIndex);
+ ensureConversionReleased(contextVk, attribIndex);
}
contextVk->onVertexAttributeChange(attribIndex, stride, binding.getDivisor(),
@@ -478,12 +497,12 @@ angle::Result VertexArrayVk::syncDirtyAttrib(ContextVk *contextVk,
mCurrentArrayBufferOffsets[attribIndex] = 0;
setDefaultPackedInput(contextVk, attribIndex);
- ensureConversionReleased(renderer, attribIndex);
+ ensureConversionReleased(contextVk, attribIndex);
}
- if (anyVertexBufferConvertedOnGpu && renderer->getFeatures().flushAfterVertexConversion)
+ if (anyVertexBufferConvertedOnGpu && renderer->getFeatures().flushAfterVertexConversion.enabled)
{
- ANGLE_TRY(contextVk->flushImpl());
+ ANGLE_TRY(contextVk->flushImpl(nullptr));
}
return angle::Result::Continue;
@@ -507,7 +526,7 @@ angle::Result VertexArrayVk::updateClientAttribs(const gl::Context *context,
indices, 0, &startVertex, &vertexCount));
RendererVk *renderer = contextVk->getRenderer();
- mDynamicVertexData.releaseRetainedBuffers(renderer);
+ mDynamicVertexData.releaseRetainedBuffers(contextVk);
const auto &attribs = mState.getVertexAttributes();
const auto &bindings = mState.getVertexBindings();
@@ -640,7 +659,7 @@ angle::Result VertexArrayVk::updateIndexTranslation(ContextVk *contextVk,
intptr_t offsetIntoSrcData = reinterpret_cast<intptr_t>(indices);
size_t srcDataSize = static_cast<size_t>(bufferVk->getSize()) - offsetIntoSrcData;
- mTranslatedByteIndexData.releaseRetainedBuffers(renderer);
+ mTranslatedByteIndexData.releaseRetainedBuffers(contextVk);
ANGLE_TRY(mTranslatedByteIndexData.allocate(contextVk, sizeof(GLushort) * srcDataSize,
nullptr, nullptr,
@@ -665,7 +684,7 @@ angle::Result VertexArrayVk::updateIndexTranslation(ContextVk *contextVk,
// Note: this is a copy, which implicitly converts between formats. Once support for
// primitive restart is added, a specialized shader is likely needed to special case 0xFF ->
// 0xFFFF.
- ANGLE_TRY(renderer->getUtils().copyBuffer(contextVk, dest, src, params));
+ ANGLE_TRY(contextVk->getUtils().copyBuffer(contextVk, dest, src, params));
}
else
{