Commit df0e48fe by Jamie Madill Committed by Commit Bot

Buffer11: Don't use ErrorOrResult.

This pattern isn't available when using angle::Result instead of gl::Error. Refactor the Buffer11 class to use gl::Error instead. This unblocks further return value refactoring for perf. Bug: angleproject:2738 Change-Id: I739044ae318c6b1fc40756a4f1fcadf609276c1a Reviewed-on: https://chromium-review.googlesource.com/1142952Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 0359b697
......@@ -53,19 +53,21 @@ class Buffer11 : public BufferD3D
Buffer11(const gl::BufferState &state, Renderer11 *renderer);
~Buffer11() override;
gl::ErrorOrResult<ID3D11Buffer *> getBuffer(const gl::Context *context, BufferUsage usage);
gl::ErrorOrResult<ID3D11Buffer *> getEmulatedIndexedBuffer(const gl::Context *context,
SourceIndexData *indexInfo,
const TranslatedAttribute &attribute,
GLint startVertex);
gl::Error getBuffer(const gl::Context *context, BufferUsage usage, ID3D11Buffer **bufferOut);
gl::Error getEmulatedIndexedBuffer(const gl::Context *context,
SourceIndexData *indexInfo,
const TranslatedAttribute &attribute,
GLint startVertex,
ID3D11Buffer **bufferOut);
gl::Error getConstantBufferRange(const gl::Context *context,
GLintptr offset,
GLsizeiptr size,
const d3d11::Buffer **bufferOut,
UINT *firstConstantOut,
UINT *numConstantsOut);
gl::ErrorOrResult<const d3d11::ShaderResourceView *> getSRV(const gl::Context *context,
DXGI_FORMAT srvFormat);
gl::Error getSRV(const gl::Context *context,
DXGI_FORMAT srvFormat,
const d3d11::ShaderResourceView **srvOut);
bool isMapped() const { return mMappedStorage != nullptr; }
gl::Error packPixels(const gl::Context *context,
const gl::FramebufferAttachment &readAttachment,
......@@ -121,21 +123,26 @@ class Buffer11 : public BufferD3D
void markBufferUsage(BufferUsage usage);
gl::Error garbageCollection(const gl::Context *context, BufferUsage currentUsage);
gl::ErrorOrResult<NativeStorage *> getStagingStorage(const gl::Context *context);
gl::ErrorOrResult<PackStorage *> getPackStorage(const gl::Context *context);
gl::ErrorOrResult<SystemMemoryStorage *> getSystemMemoryStorage(const gl::Context *context);
gl::Error updateBufferStorage(const gl::Context *context,
BufferStorage *storage,
size_t sourceOffset,
size_t storageSize);
gl::ErrorOrResult<BufferStorage *> getBufferStorage(const gl::Context *context,
BufferUsage usage);
gl::ErrorOrResult<BufferStorage *> getLatestBufferStorage(const gl::Context *context) const;
gl::ErrorOrResult<BufferStorage *> getConstantBufferRangeStorage(const gl::Context *context,
GLintptr offset,
GLsizeiptr size);
template <typename StorageOutT>
gl::Error getBufferStorage(const gl::Context *context,
BufferUsage usage,
StorageOutT **storageOut);
template <typename StorageOutT>
gl::Error getStagingStorage(const gl::Context *context, StorageOutT **storageOut);
gl::Error getLatestBufferStorage(const gl::Context *context, BufferStorage **storageOut) const;
gl::Error getConstantBufferRangeStorage(const gl::Context *context,
GLintptr offset,
GLsizeiptr size,
NativeStorage **storageOut);
BufferStorage *allocateStorage(BufferUsage usage);
void updateDeallocThreshold(BufferUsage usage);
......
......@@ -173,7 +173,7 @@ gl::Error PixelTransfer11::copyBufferToTexture(const gl::Context *context,
ASSERT(srvFormat != DXGI_FORMAT_UNKNOWN);
Buffer11 *bufferStorage11 = GetAs<Buffer11>(sourceBuffer.getImplementation());
const d3d11::ShaderResourceView *bufferSRV = nullptr;
ANGLE_TRY_RESULT(bufferStorage11->getSRV(context, srvFormat), bufferSRV);
ANGLE_TRY(bufferStorage11->getSRV(context, srvFormat, &bufferSRV));
ASSERT(bufferSRV != nullptr);
const d3d11::RenderTargetView &textureRTV =
......
......@@ -1639,7 +1639,7 @@ gl::Error Renderer11::drawArraysIndirect(const gl::Context *context,
uintptr_t offset = reinterpret_cast<uintptr_t>(params.indirect());
ID3D11Buffer *buffer = nullptr;
ANGLE_TRY_RESULT(storage->getBuffer(context, BUFFER_USAGE_INDIRECT), buffer);
ANGLE_TRY(storage->getBuffer(context, BUFFER_USAGE_INDIRECT, &buffer));
mDeviceContext->DrawInstancedIndirect(buffer, static_cast<unsigned int>(offset));
return gl::NoError();
}
......@@ -1661,7 +1661,7 @@ gl::Error Renderer11::drawElementsIndirect(const gl::Context *context,
uintptr_t offset = reinterpret_cast<uintptr_t>(params.indirect());
ID3D11Buffer *buffer = nullptr;
ANGLE_TRY_RESULT(storage->getBuffer(context, BUFFER_USAGE_INDIRECT), buffer);
ANGLE_TRY(storage->getBuffer(context, BUFFER_USAGE_INDIRECT, &buffer));
mDeviceContext->DrawIndexedInstancedIndirect(buffer, static_cast<unsigned int>(offset));
return gl::NoError();
}
......
......@@ -2743,18 +2743,16 @@ gl::Error StateManager11::applyVertexBuffers(const gl::Context *context,
indexInfo.srcIndexData.srcIndices = bufferData + offset;
}
ANGLE_TRY_RESULT(
bufferStorage->getEmulatedIndexedBuffer(context, &indexInfo.srcIndexData,
attrib, drawCallParams.firstVertex()),
buffer);
ANGLE_TRY(bufferStorage->getEmulatedIndexedBuffer(
context, &indexInfo.srcIndexData, attrib, drawCallParams.firstVertex(),
&buffer));
mVertexArray11->updateCachedIndexInfo(indexInfo);
}
else
{
ANGLE_TRY_RESULT(
bufferStorage->getBuffer(context, BUFFER_USAGE_VERTEX_OR_TRANSFORM_FEEDBACK),
buffer);
ANGLE_TRY(bufferStorage->getBuffer(
context, BUFFER_USAGE_VERTEX_OR_TRANSFORM_FEEDBACK, &buffer));
}
vertexStride = attrib.stride;
......@@ -2865,7 +2863,7 @@ gl::Error StateManager11::applyIndexBuffer(const gl::Context *context,
if (indexInfo.storage)
{
Buffer11 *storage = GetAs<Buffer11>(indexInfo.storage);
ANGLE_TRY_RESULT(storage->getBuffer(context, BUFFER_USAGE_INDEX), buffer);
ANGLE_TRY(storage->getBuffer(context, BUFFER_USAGE_INDEX, &buffer));
}
else
{
......
......@@ -109,8 +109,8 @@ gl::ErrorOrResult<const std::vector<ID3D11Buffer *> *> TransformFeedback11::getS
if (binding.get() != nullptr)
{
Buffer11 *storage = GetImplAs<Buffer11>(binding.get());
ANGLE_TRY_RESULT(storage->getBuffer(context, BUFFER_USAGE_VERTEX_OR_TRANSFORM_FEEDBACK),
mBuffers[bindingIdx]);
ANGLE_TRY(storage->getBuffer(context, BUFFER_USAGE_VERTEX_OR_TRANSFORM_FEEDBACK,
&mBuffers[bindingIdx]));
}
}
......
......@@ -111,10 +111,10 @@ class D3D11EmulatedIndexedBufferTest : public ANGLETest
void emulateAndCompare(rx::SourceIndexData *srcData)
{
auto bufferOrError =
mSourceBuffer->getEmulatedIndexedBuffer(mContext, srcData, mTranslatedAttribute, 0);
ASSERT_FALSE(bufferOrError.isError());
ID3D11Buffer *emulatedBuffer = bufferOrError.getResult();
ID3D11Buffer *emulatedBuffer = nullptr;
gl::Error error = mSourceBuffer->getEmulatedIndexedBuffer(
mContext, srcData, mTranslatedAttribute, 0, &emulatedBuffer);
ASSERT_FALSE(error.isError());
ASSERT_TRUE(emulatedBuffer != nullptr);
compareContents(emulatedBuffer);
}
......
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