Commit 8af6c6f5 by Shahbaz Youssefi Committed by Commit Bot

Vulkan: Minor cleanup of Transform Feedback validation

By using the helper isTransformFeedbackActive* functions. Bug: angleproject:3205 Change-Id: I50b3e9db427da9f65c3e2b50d7847464e8c28202 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1665353 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarJonah Ryan-Davis <jonahr@google.com>
parent 8b227a3b
......@@ -298,6 +298,11 @@ class State : angle::NonCopyable
void setTransformFeedbackBinding(const Context *context, TransformFeedback *transformFeedback);
TransformFeedback *getCurrentTransformFeedback() const { return mTransformFeedback.get(); }
ANGLE_INLINE bool isTransformFeedbackActive() const
{
TransformFeedback *curTransformFeedback = mTransformFeedback.get();
return curTransformFeedback && curTransformFeedback->isActive();
}
ANGLE_INLINE bool isTransformFeedbackActiveUnpaused() const
{
TransformFeedback *curTransformFeedback = mTransformFeedback.get();
......
......@@ -2714,9 +2714,7 @@ const char *ValidateDrawStates(Context *context)
return kMultiviewMismatch;
}
const TransformFeedback *transformFeedbackObject = state.getCurrentTransformFeedback();
if (transformFeedbackObject != nullptr && transformFeedbackObject->isActive() &&
!transformFeedbackObject->isPaused() && framebufferNumViews > 1)
if (state.isTransformFeedbackActiveUnpaused() && framebufferNumViews > 1)
{
return kMultiviewTransformFeedback;
}
......@@ -2766,7 +2764,7 @@ const char *ValidateDrawStates(Context *context)
}
const TransformFeedback *transformFeedbackObject = state.getCurrentTransformFeedback();
if (transformFeedbackObject != nullptr && transformFeedbackObject->isActive() &&
if (state.isTransformFeedbackActive() &&
transformFeedbackObject->buffersBoundForOtherUse())
{
return kTransformFeedbackBufferDoubleBound;
......@@ -2815,8 +2813,7 @@ void RecordDrawModeError(Context *context, PrimitiveMode mode)
{
const State &state = context->getState();
TransformFeedback *curTransformFeedback = state.getCurrentTransformFeedback();
if (curTransformFeedback && curTransformFeedback->isActive() &&
!curTransformFeedback->isPaused())
if (state.isTransformFeedbackActiveUnpaused())
{
if (!ValidateTransformFeedbackPrimitiveMode(context,
curTransformFeedback->getPrimitiveMode(), mode))
......
......@@ -3453,9 +3453,9 @@ bool ValidateMapBufferBase(Context *context, BufferBinding target)
ASSERT(buffer != nullptr);
// Check if this buffer is currently being used as a transform feedback output buffer
TransformFeedback *transformFeedback = context->getState().getCurrentTransformFeedback();
if (transformFeedback != nullptr && transformFeedback->isActive())
if (context->getState().isTransformFeedbackActive())
{
TransformFeedback *transformFeedback = context->getState().getCurrentTransformFeedback();
for (size_t i = 0; i < transformFeedback->getIndexedBufferCount(); i++)
{
const auto &transformFeedbackBuffer = transformFeedback->getIndexedBuffer(i);
......
......@@ -1662,9 +1662,7 @@ static bool ValidateBindBufferCommon(Context *context,
return false;
}
TransformFeedback *curTransformFeedback =
context->getState().getCurrentTransformFeedback();
if (curTransformFeedback && curTransformFeedback->isActive())
if (context->getState().isTransformFeedbackActive())
{
context->validationError(GL_INVALID_OPERATION, kTransformFeedbackTargetActive);
return false;
......@@ -3462,10 +3460,7 @@ bool ValidateBindTransformFeedback(Context *context, GLenum target, GLuint id)
{
// Cannot bind a transform feedback object if the current one is started and not
// paused (3.0.2 pg 85 section 2.14.1)
TransformFeedback *curTransformFeedback =
context->getState().getCurrentTransformFeedback();
if (curTransformFeedback && curTransformFeedback->isActive() &&
!curTransformFeedback->isPaused())
if (context->getState().isTransformFeedbackActiveUnpaused())
{
context->validationError(GL_INVALID_OPERATION, kTransformFeedbackNotPaused);
return false;
......
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