Commit c2c106d4 by Jamie Madill Committed by Commit Bot

D3D11: Clean up buffer calls a bit.

BUG=None Change-Id: I3b697c3b721b5be4888d039a5cefd160ab5b23f8 Reviewed-on: https://chromium-review.googlesource.com/367877Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent f69682be
......@@ -550,7 +550,7 @@ gl::ErrorOrResult<ID3D11Buffer *> Buffer11::getConstantBufferRange(GLintptr offs
BufferStorage *bufferStorage = nullptr;
if (offset == 0)
if (offset == 0 || mRenderer->getRenderer11DeviceCaps().supportsConstantBufferOffsets)
{
ANGLE_TRY_RESULT(getBufferStorage(BUFFER_USAGE_UNIFORM), bufferStorage);
}
......
......@@ -1377,34 +1377,21 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data,
GLintptr uniformBufferOffset = uniformBuffer.getOffset();
GLsizeiptr uniformBufferSize = uniformBuffer.getSize();
if (uniformBuffer.get() != nullptr)
if (uniformBuffer.get() == nullptr)
{
continue;
}
Buffer11 *bufferStorage = GetImplAs<Buffer11>(uniformBuffer.get());
ID3D11Buffer *constantBuffer;
ID3D11Buffer *constantBuffer = nullptr;
if (mRenderer11DeviceCaps.supportsConstantBufferOffsets)
{
auto bufferOrError = bufferStorage->getBuffer(BUFFER_USAGE_UNIFORM);
if (bufferOrError.isError())
{
return bufferOrError.getError();
}
constantBuffer = bufferOrError.getResult();
}
else
{
auto bufferOrError =
bufferStorage->getConstantBufferRange(uniformBufferOffset, uniformBufferSize);
if (bufferOrError.isError())
{
return bufferOrError.getError();
}
constantBuffer = bufferOrError.getResult();
}
ANGLE_TRY_RESULT(
bufferStorage->getConstantBufferRange(uniformBufferOffset, uniformBufferSize),
constantBuffer);
if (!constantBuffer)
{
return gl::Error(GL_OUT_OF_MEMORY);
return gl::Error(GL_OUT_OF_MEMORY, "Error retrieving constant buffer");
}
if (mCurrentConstantBufferVS[uniformBufferIndex] != bufferStorage->getSerial() ||
......@@ -1414,7 +1401,8 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data,
if (mRenderer11DeviceCaps.supportsConstantBufferOffsets && uniformBufferSize != 0)
{
UINT firstConstant = 0, numConstants = 0;
CalculateConstantBufferParams(uniformBufferOffset, uniformBufferSize, &firstConstant, &numConstants);
CalculateConstantBufferParams(uniformBufferOffset, uniformBufferSize,
&firstConstant, &numConstants);
mDeviceContext1->VSSetConstantBuffers1(
getReservedVertexUniformBuffers() +
static_cast<unsigned int>(uniformBufferIndex),
......@@ -1433,7 +1421,6 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data,
mCurrentConstantBufferVSSize[uniformBufferIndex] = uniformBufferSize;
}
}
}
for (size_t uniformBufferIndex = 0; uniformBufferIndex < fragmentUniformBuffers.size(); uniformBufferIndex++)
{
......@@ -1449,34 +1436,21 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data,
GLintptr uniformBufferOffset = uniformBuffer.getOffset();
GLsizeiptr uniformBufferSize = uniformBuffer.getSize();
if (uniformBuffer.get() != nullptr)
if (uniformBuffer.get() == nullptr)
{
continue;
}
Buffer11 *bufferStorage = GetImplAs<Buffer11>(uniformBuffer.get());
ID3D11Buffer *constantBuffer;
ID3D11Buffer *constantBuffer = nullptr;
if (mRenderer11DeviceCaps.supportsConstantBufferOffsets)
{
auto bufferOrError = bufferStorage->getBuffer(BUFFER_USAGE_UNIFORM);
if (bufferOrError.isError())
{
return bufferOrError.getError();
}
constantBuffer = bufferOrError.getResult();
}
else
{
auto bufferOrError =
bufferStorage->getConstantBufferRange(uniformBufferOffset, uniformBufferSize);
if (bufferOrError.isError())
{
return bufferOrError.getError();
}
constantBuffer = bufferOrError.getResult();
}
ANGLE_TRY_RESULT(
bufferStorage->getConstantBufferRange(uniformBufferOffset, uniformBufferSize),
constantBuffer);
if (!constantBuffer)
{
return gl::Error(GL_OUT_OF_MEMORY);
return gl::Error(GL_OUT_OF_MEMORY, "Error retrieving constant buffer");
}
if (mCurrentConstantBufferPS[uniformBufferIndex] != bufferStorage->getSerial() ||
......@@ -1486,7 +1460,8 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data,
if (mRenderer11DeviceCaps.supportsConstantBufferOffsets && uniformBufferSize != 0)
{
UINT firstConstant = 0, numConstants = 0;
CalculateConstantBufferParams(uniformBufferOffset, uniformBufferSize, &firstConstant, &numConstants);
CalculateConstantBufferParams(uniformBufferOffset, uniformBufferSize,
&firstConstant, &numConstants);
mDeviceContext1->PSSetConstantBuffers1(
getReservedFragmentUniformBuffers() +
static_cast<unsigned int>(uniformBufferIndex),
......@@ -1505,9 +1480,8 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data,
mCurrentConstantBufferPSSize[uniformBufferIndex] = uniformBufferSize;
}
}
}
return gl::Error(GL_NO_ERROR);
return gl::NoError();
}
gl::Error Renderer11::updateState(const gl::ContextState &data, GLenum drawMode)
......
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