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 ...@@ -53,19 +53,21 @@ class Buffer11 : public BufferD3D
Buffer11(const gl::BufferState &state, Renderer11 *renderer); Buffer11(const gl::BufferState &state, Renderer11 *renderer);
~Buffer11() override; ~Buffer11() override;
gl::ErrorOrResult<ID3D11Buffer *> getBuffer(const gl::Context *context, BufferUsage usage); gl::Error getBuffer(const gl::Context *context, BufferUsage usage, ID3D11Buffer **bufferOut);
gl::ErrorOrResult<ID3D11Buffer *> getEmulatedIndexedBuffer(const gl::Context *context, gl::Error getEmulatedIndexedBuffer(const gl::Context *context,
SourceIndexData *indexInfo, SourceIndexData *indexInfo,
const TranslatedAttribute &attribute, const TranslatedAttribute &attribute,
GLint startVertex); GLint startVertex,
ID3D11Buffer **bufferOut);
gl::Error getConstantBufferRange(const gl::Context *context, gl::Error getConstantBufferRange(const gl::Context *context,
GLintptr offset, GLintptr offset,
GLsizeiptr size, GLsizeiptr size,
const d3d11::Buffer **bufferOut, const d3d11::Buffer **bufferOut,
UINT *firstConstantOut, UINT *firstConstantOut,
UINT *numConstantsOut); UINT *numConstantsOut);
gl::ErrorOrResult<const d3d11::ShaderResourceView *> getSRV(const gl::Context *context, gl::Error getSRV(const gl::Context *context,
DXGI_FORMAT srvFormat); DXGI_FORMAT srvFormat,
const d3d11::ShaderResourceView **srvOut);
bool isMapped() const { return mMappedStorage != nullptr; } bool isMapped() const { return mMappedStorage != nullptr; }
gl::Error packPixels(const gl::Context *context, gl::Error packPixels(const gl::Context *context,
const gl::FramebufferAttachment &readAttachment, const gl::FramebufferAttachment &readAttachment,
...@@ -121,21 +123,26 @@ class Buffer11 : public BufferD3D ...@@ -121,21 +123,26 @@ class Buffer11 : public BufferD3D
void markBufferUsage(BufferUsage usage); void markBufferUsage(BufferUsage usage);
gl::Error garbageCollection(const gl::Context *context, BufferUsage currentUsage); 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, gl::Error updateBufferStorage(const gl::Context *context,
BufferStorage *storage, BufferStorage *storage,
size_t sourceOffset, size_t sourceOffset,
size_t storageSize); 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, template <typename StorageOutT>
GLintptr offset, gl::Error getBufferStorage(const gl::Context *context,
GLsizeiptr size); 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); BufferStorage *allocateStorage(BufferUsage usage);
void updateDeallocThreshold(BufferUsage usage); void updateDeallocThreshold(BufferUsage usage);
......
...@@ -173,7 +173,7 @@ gl::Error PixelTransfer11::copyBufferToTexture(const gl::Context *context, ...@@ -173,7 +173,7 @@ gl::Error PixelTransfer11::copyBufferToTexture(const gl::Context *context,
ASSERT(srvFormat != DXGI_FORMAT_UNKNOWN); ASSERT(srvFormat != DXGI_FORMAT_UNKNOWN);
Buffer11 *bufferStorage11 = GetAs<Buffer11>(sourceBuffer.getImplementation()); Buffer11 *bufferStorage11 = GetAs<Buffer11>(sourceBuffer.getImplementation());
const d3d11::ShaderResourceView *bufferSRV = nullptr; const d3d11::ShaderResourceView *bufferSRV = nullptr;
ANGLE_TRY_RESULT(bufferStorage11->getSRV(context, srvFormat), bufferSRV); ANGLE_TRY(bufferStorage11->getSRV(context, srvFormat, &bufferSRV));
ASSERT(bufferSRV != nullptr); ASSERT(bufferSRV != nullptr);
const d3d11::RenderTargetView &textureRTV = const d3d11::RenderTargetView &textureRTV =
......
...@@ -1639,7 +1639,7 @@ gl::Error Renderer11::drawArraysIndirect(const gl::Context *context, ...@@ -1639,7 +1639,7 @@ gl::Error Renderer11::drawArraysIndirect(const gl::Context *context,
uintptr_t offset = reinterpret_cast<uintptr_t>(params.indirect()); uintptr_t offset = reinterpret_cast<uintptr_t>(params.indirect());
ID3D11Buffer *buffer = nullptr; 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)); mDeviceContext->DrawInstancedIndirect(buffer, static_cast<unsigned int>(offset));
return gl::NoError(); return gl::NoError();
} }
...@@ -1661,7 +1661,7 @@ gl::Error Renderer11::drawElementsIndirect(const gl::Context *context, ...@@ -1661,7 +1661,7 @@ gl::Error Renderer11::drawElementsIndirect(const gl::Context *context,
uintptr_t offset = reinterpret_cast<uintptr_t>(params.indirect()); uintptr_t offset = reinterpret_cast<uintptr_t>(params.indirect());
ID3D11Buffer *buffer = nullptr; 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)); mDeviceContext->DrawIndexedInstancedIndirect(buffer, static_cast<unsigned int>(offset));
return gl::NoError(); return gl::NoError();
} }
......
...@@ -2743,18 +2743,16 @@ gl::Error StateManager11::applyVertexBuffers(const gl::Context *context, ...@@ -2743,18 +2743,16 @@ gl::Error StateManager11::applyVertexBuffers(const gl::Context *context,
indexInfo.srcIndexData.srcIndices = bufferData + offset; indexInfo.srcIndexData.srcIndices = bufferData + offset;
} }
ANGLE_TRY_RESULT( ANGLE_TRY(bufferStorage->getEmulatedIndexedBuffer(
bufferStorage->getEmulatedIndexedBuffer(context, &indexInfo.srcIndexData, context, &indexInfo.srcIndexData, attrib, drawCallParams.firstVertex(),
attrib, drawCallParams.firstVertex()), &buffer));
buffer);
mVertexArray11->updateCachedIndexInfo(indexInfo); mVertexArray11->updateCachedIndexInfo(indexInfo);
} }
else else
{ {
ANGLE_TRY_RESULT( ANGLE_TRY(bufferStorage->getBuffer(
bufferStorage->getBuffer(context, BUFFER_USAGE_VERTEX_OR_TRANSFORM_FEEDBACK), context, BUFFER_USAGE_VERTEX_OR_TRANSFORM_FEEDBACK, &buffer));
buffer);
} }
vertexStride = attrib.stride; vertexStride = attrib.stride;
...@@ -2865,7 +2863,7 @@ gl::Error StateManager11::applyIndexBuffer(const gl::Context *context, ...@@ -2865,7 +2863,7 @@ gl::Error StateManager11::applyIndexBuffer(const gl::Context *context,
if (indexInfo.storage) if (indexInfo.storage)
{ {
Buffer11 *storage = GetAs<Buffer11>(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 else
{ {
......
...@@ -109,8 +109,8 @@ gl::ErrorOrResult<const std::vector<ID3D11Buffer *> *> TransformFeedback11::getS ...@@ -109,8 +109,8 @@ gl::ErrorOrResult<const std::vector<ID3D11Buffer *> *> TransformFeedback11::getS
if (binding.get() != nullptr) if (binding.get() != nullptr)
{ {
Buffer11 *storage = GetImplAs<Buffer11>(binding.get()); Buffer11 *storage = GetImplAs<Buffer11>(binding.get());
ANGLE_TRY_RESULT(storage->getBuffer(context, BUFFER_USAGE_VERTEX_OR_TRANSFORM_FEEDBACK), ANGLE_TRY(storage->getBuffer(context, BUFFER_USAGE_VERTEX_OR_TRANSFORM_FEEDBACK,
mBuffers[bindingIdx]); &mBuffers[bindingIdx]));
} }
} }
......
...@@ -111,10 +111,10 @@ class D3D11EmulatedIndexedBufferTest : public ANGLETest ...@@ -111,10 +111,10 @@ class D3D11EmulatedIndexedBufferTest : public ANGLETest
void emulateAndCompare(rx::SourceIndexData *srcData) void emulateAndCompare(rx::SourceIndexData *srcData)
{ {
auto bufferOrError = ID3D11Buffer *emulatedBuffer = nullptr;
mSourceBuffer->getEmulatedIndexedBuffer(mContext, srcData, mTranslatedAttribute, 0); gl::Error error = mSourceBuffer->getEmulatedIndexedBuffer(
ASSERT_FALSE(bufferOrError.isError()); mContext, srcData, mTranslatedAttribute, 0, &emulatedBuffer);
ID3D11Buffer *emulatedBuffer = bufferOrError.getResult(); ASSERT_FALSE(error.isError());
ASSERT_TRUE(emulatedBuffer != nullptr); ASSERT_TRUE(emulatedBuffer != nullptr);
compareContents(emulatedBuffer); 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