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 ...@@ -550,7 +550,7 @@ gl::ErrorOrResult<ID3D11Buffer *> Buffer11::getConstantBufferRange(GLintptr offs
BufferStorage *bufferStorage = nullptr; BufferStorage *bufferStorage = nullptr;
if (offset == 0) if (offset == 0 || mRenderer->getRenderer11DeviceCaps().supportsConstantBufferOffsets)
{ {
ANGLE_TRY_RESULT(getBufferStorage(BUFFER_USAGE_UNIFORM), bufferStorage); ANGLE_TRY_RESULT(getBufferStorage(BUFFER_USAGE_UNIFORM), bufferStorage);
} }
......
...@@ -1377,34 +1377,21 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data, ...@@ -1377,34 +1377,21 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data,
GLintptr uniformBufferOffset = uniformBuffer.getOffset(); GLintptr uniformBufferOffset = uniformBuffer.getOffset();
GLsizeiptr uniformBufferSize = uniformBuffer.getSize(); GLsizeiptr uniformBufferSize = uniformBuffer.getSize();
if (uniformBuffer.get() != nullptr) if (uniformBuffer.get() == nullptr)
{ {
continue;
}
Buffer11 *bufferStorage = GetImplAs<Buffer11>(uniformBuffer.get()); Buffer11 *bufferStorage = GetImplAs<Buffer11>(uniformBuffer.get());
ID3D11Buffer *constantBuffer; ID3D11Buffer *constantBuffer = nullptr;
if (mRenderer11DeviceCaps.supportsConstantBufferOffsets) ANGLE_TRY_RESULT(
{ bufferStorage->getConstantBufferRange(uniformBufferOffset, uniformBufferSize),
auto bufferOrError = bufferStorage->getBuffer(BUFFER_USAGE_UNIFORM); constantBuffer);
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();
}
if (!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() || if (mCurrentConstantBufferVS[uniformBufferIndex] != bufferStorage->getSerial() ||
...@@ -1414,7 +1401,8 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data, ...@@ -1414,7 +1401,8 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data,
if (mRenderer11DeviceCaps.supportsConstantBufferOffsets && uniformBufferSize != 0) if (mRenderer11DeviceCaps.supportsConstantBufferOffsets && uniformBufferSize != 0)
{ {
UINT firstConstant = 0, numConstants = 0; UINT firstConstant = 0, numConstants = 0;
CalculateConstantBufferParams(uniformBufferOffset, uniformBufferSize, &firstConstant, &numConstants); CalculateConstantBufferParams(uniformBufferOffset, uniformBufferSize,
&firstConstant, &numConstants);
mDeviceContext1->VSSetConstantBuffers1( mDeviceContext1->VSSetConstantBuffers1(
getReservedVertexUniformBuffers() + getReservedVertexUniformBuffers() +
static_cast<unsigned int>(uniformBufferIndex), static_cast<unsigned int>(uniformBufferIndex),
...@@ -1433,7 +1421,6 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data, ...@@ -1433,7 +1421,6 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data,
mCurrentConstantBufferVSSize[uniformBufferIndex] = uniformBufferSize; mCurrentConstantBufferVSSize[uniformBufferIndex] = uniformBufferSize;
} }
} }
}
for (size_t uniformBufferIndex = 0; uniformBufferIndex < fragmentUniformBuffers.size(); uniformBufferIndex++) for (size_t uniformBufferIndex = 0; uniformBufferIndex < fragmentUniformBuffers.size(); uniformBufferIndex++)
{ {
...@@ -1449,34 +1436,21 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data, ...@@ -1449,34 +1436,21 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data,
GLintptr uniformBufferOffset = uniformBuffer.getOffset(); GLintptr uniformBufferOffset = uniformBuffer.getOffset();
GLsizeiptr uniformBufferSize = uniformBuffer.getSize(); GLsizeiptr uniformBufferSize = uniformBuffer.getSize();
if (uniformBuffer.get() != nullptr) if (uniformBuffer.get() == nullptr)
{ {
continue;
}
Buffer11 *bufferStorage = GetImplAs<Buffer11>(uniformBuffer.get()); Buffer11 *bufferStorage = GetImplAs<Buffer11>(uniformBuffer.get());
ID3D11Buffer *constantBuffer; ID3D11Buffer *constantBuffer = nullptr;
if (mRenderer11DeviceCaps.supportsConstantBufferOffsets) ANGLE_TRY_RESULT(
{ bufferStorage->getConstantBufferRange(uniformBufferOffset, uniformBufferSize),
auto bufferOrError = bufferStorage->getBuffer(BUFFER_USAGE_UNIFORM); constantBuffer);
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();
}
if (!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() || if (mCurrentConstantBufferPS[uniformBufferIndex] != bufferStorage->getSerial() ||
...@@ -1486,7 +1460,8 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data, ...@@ -1486,7 +1460,8 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data,
if (mRenderer11DeviceCaps.supportsConstantBufferOffsets && uniformBufferSize != 0) if (mRenderer11DeviceCaps.supportsConstantBufferOffsets && uniformBufferSize != 0)
{ {
UINT firstConstant = 0, numConstants = 0; UINT firstConstant = 0, numConstants = 0;
CalculateConstantBufferParams(uniformBufferOffset, uniformBufferSize, &firstConstant, &numConstants); CalculateConstantBufferParams(uniformBufferOffset, uniformBufferSize,
&firstConstant, &numConstants);
mDeviceContext1->PSSetConstantBuffers1( mDeviceContext1->PSSetConstantBuffers1(
getReservedFragmentUniformBuffers() + getReservedFragmentUniformBuffers() +
static_cast<unsigned int>(uniformBufferIndex), static_cast<unsigned int>(uniformBufferIndex),
...@@ -1505,9 +1480,8 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data, ...@@ -1505,9 +1480,8 @@ gl::Error Renderer11::setUniformBuffers(const gl::ContextState &data,
mCurrentConstantBufferPSSize[uniformBufferIndex] = uniformBufferSize; mCurrentConstantBufferPSSize[uniformBufferIndex] = uniformBufferSize;
} }
} }
}
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error Renderer11::updateState(const gl::ContextState &data, GLenum drawMode) 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