Make angle::Result an enum.
This moves away from a class type to a value type. This should improve
performance when using angle::Result as a return value. Previously the
generated code would return a pointer instead of a value.
Improves performance in the most targeted microbenchmark by 10%. In
more realistic scanarios it will have a smaller improvement. Also
simplifies the class implementation and usage.
Includes some unrelated code generation changes.
Bug: angleproject:2491
Change-Id: Ifcf86870bf1c00a2f73c39ea6e4f05ca705050aa
Reviewed-on: https://chromium-review.googlesource.com/c/1356139
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/ProgramVk.cpp b/src/libANGLE/renderer/vulkan/ProgramVk.cpp
index 4651a8f..227f59f 100644
--- a/src/libANGLE/renderer/vulkan/ProgramVk.cpp
+++ b/src/libANGLE/renderer/vulkan/ProgramVk.cpp
@@ -130,7 +130,7 @@
*outOffset = static_cast<uint32_t>(offset);
memcpy(data, bufferData.data(), bufferData.size());
ANGLE_TRY(dynamicBuffer->flush(contextVk));
- return angle::Result::Continue();
+ return angle::Result::Continue;
}
bool UseLineRaster(const ContextVk *contextVk, gl::PrimitiveMode mode)
@@ -167,7 +167,7 @@
mProgramHelper.setShader(gl::ShaderType::Fragment, &mShaders[gl::ShaderType::Fragment]);
}
- return angle::Result::Continue();
+ return angle::Result::Continue;
}
void ProgramVk::ShaderInfo::release(RendererVk *renderer)
@@ -239,7 +239,7 @@
gl::BinaryInputStream *stream)
{
UNIMPLEMENTED();
- return angle::Result::Stop();
+ return angle::Result::Stop;
}
void ProgramVk::save(const gl::Context *context, gl::BinaryOutputStream *stream)
@@ -343,7 +343,7 @@
}
}
- return angle::Result::Continue();
+ return angle::Result::Continue;
}
angle::Result ProgramVk::initDefaultUniformBlocks(const gl::Context *glContext)
@@ -445,7 +445,7 @@
}
}
- return angle::Result::Continue();
+ return angle::Result::Continue;
}
GLboolean ProgramVk::validate(const gl::Caps &caps, gl::InfoLog *infoLog)
@@ -745,7 +745,7 @@
*programOut = &mDefaultShaderInfo.getShaderProgram();
}
- return angle::Result::Continue();
+ return angle::Result::Continue;
}
angle::Result ProgramVk::allocateDescriptorSet(ContextVk *contextVk, uint32_t descriptorSetIndex)
@@ -765,7 +765,7 @@
ANGLE_TRY(dynamicDescriptorPool->allocateSets(contextVk, descriptorSetLayout.ptr(), 1,
&mDescriptorPoolBindings[descriptorSetIndex],
&mDescriptorSets[descriptorSetIndex]));
- return angle::Result::Continue();
+ return angle::Result::Continue;
}
void ProgramVk::getUniformfv(const gl::Context *context, GLint location, GLfloat *params) const
@@ -816,7 +816,7 @@
ANGLE_TRY(updateDefaultUniformsDescriptorSet(contextVk));
}
- return angle::Result::Continue();
+ return angle::Result::Continue;
}
angle::Result ProgramVk::updateDefaultUniformsDescriptorSet(ContextVk *contextVk)
@@ -858,7 +858,7 @@
vkUpdateDescriptorSets(device, 2, writeDescriptorInfo.data(), 0, nullptr);
- return angle::Result::Continue();
+ return angle::Result::Continue;
}
angle::Result ProgramVk::updateTexturesDescriptorSet(ContextVk *contextVk)
@@ -917,7 +917,7 @@
ASSERT(writeCount > 0);
vkUpdateDescriptorSets(device, writeCount, writeDescriptorInfo.data(), 0, nullptr);
- return angle::Result::Continue();
+ return angle::Result::Continue;
}
void ProgramVk::setDefaultUniformBlocksMinSizeForTesting(size_t minSize)
@@ -934,7 +934,7 @@
// Can probably use better dirty bits here.
if (mUsedDescriptorSetRange.empty())
- return angle::Result::Continue();
+ return angle::Result::Continue;
ASSERT(!mDescriptorSets.empty());
@@ -957,6 +957,6 @@
&mDescriptorSets[low], 0, nullptr);
}
- return angle::Result::Continue();
+ return angle::Result::Continue;
}
} // namespace rx