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 ...@@ -298,6 +298,11 @@ class State : angle::NonCopyable
void setTransformFeedbackBinding(const Context *context, TransformFeedback *transformFeedback); void setTransformFeedbackBinding(const Context *context, TransformFeedback *transformFeedback);
TransformFeedback *getCurrentTransformFeedback() const { return mTransformFeedback.get(); } TransformFeedback *getCurrentTransformFeedback() const { return mTransformFeedback.get(); }
ANGLE_INLINE bool isTransformFeedbackActive() const
{
TransformFeedback *curTransformFeedback = mTransformFeedback.get();
return curTransformFeedback && curTransformFeedback->isActive();
}
ANGLE_INLINE bool isTransformFeedbackActiveUnpaused() const ANGLE_INLINE bool isTransformFeedbackActiveUnpaused() const
{ {
TransformFeedback *curTransformFeedback = mTransformFeedback.get(); TransformFeedback *curTransformFeedback = mTransformFeedback.get();
......
...@@ -2714,9 +2714,7 @@ const char *ValidateDrawStates(Context *context) ...@@ -2714,9 +2714,7 @@ const char *ValidateDrawStates(Context *context)
return kMultiviewMismatch; return kMultiviewMismatch;
} }
const TransformFeedback *transformFeedbackObject = state.getCurrentTransformFeedback(); if (state.isTransformFeedbackActiveUnpaused() && framebufferNumViews > 1)
if (transformFeedbackObject != nullptr && transformFeedbackObject->isActive() &&
!transformFeedbackObject->isPaused() && framebufferNumViews > 1)
{ {
return kMultiviewTransformFeedback; return kMultiviewTransformFeedback;
} }
...@@ -2766,7 +2764,7 @@ const char *ValidateDrawStates(Context *context) ...@@ -2766,7 +2764,7 @@ const char *ValidateDrawStates(Context *context)
} }
const TransformFeedback *transformFeedbackObject = state.getCurrentTransformFeedback(); const TransformFeedback *transformFeedbackObject = state.getCurrentTransformFeedback();
if (transformFeedbackObject != nullptr && transformFeedbackObject->isActive() && if (state.isTransformFeedbackActive() &&
transformFeedbackObject->buffersBoundForOtherUse()) transformFeedbackObject->buffersBoundForOtherUse())
{ {
return kTransformFeedbackBufferDoubleBound; return kTransformFeedbackBufferDoubleBound;
...@@ -2815,8 +2813,7 @@ void RecordDrawModeError(Context *context, PrimitiveMode mode) ...@@ -2815,8 +2813,7 @@ void RecordDrawModeError(Context *context, PrimitiveMode mode)
{ {
const State &state = context->getState(); const State &state = context->getState();
TransformFeedback *curTransformFeedback = state.getCurrentTransformFeedback(); TransformFeedback *curTransformFeedback = state.getCurrentTransformFeedback();
if (curTransformFeedback && curTransformFeedback->isActive() && if (state.isTransformFeedbackActiveUnpaused())
!curTransformFeedback->isPaused())
{ {
if (!ValidateTransformFeedbackPrimitiveMode(context, if (!ValidateTransformFeedbackPrimitiveMode(context,
curTransformFeedback->getPrimitiveMode(), mode)) curTransformFeedback->getPrimitiveMode(), mode))
......
...@@ -3453,9 +3453,9 @@ bool ValidateMapBufferBase(Context *context, BufferBinding target) ...@@ -3453,9 +3453,9 @@ bool ValidateMapBufferBase(Context *context, BufferBinding target)
ASSERT(buffer != nullptr); ASSERT(buffer != nullptr);
// Check if this buffer is currently being used as a transform feedback output buffer // Check if this buffer is currently being used as a transform feedback output buffer
TransformFeedback *transformFeedback = context->getState().getCurrentTransformFeedback(); if (context->getState().isTransformFeedbackActive())
if (transformFeedback != nullptr && transformFeedback->isActive())
{ {
TransformFeedback *transformFeedback = context->getState().getCurrentTransformFeedback();
for (size_t i = 0; i < transformFeedback->getIndexedBufferCount(); i++) for (size_t i = 0; i < transformFeedback->getIndexedBufferCount(); i++)
{ {
const auto &transformFeedbackBuffer = transformFeedback->getIndexedBuffer(i); const auto &transformFeedbackBuffer = transformFeedback->getIndexedBuffer(i);
......
...@@ -1662,9 +1662,7 @@ static bool ValidateBindBufferCommon(Context *context, ...@@ -1662,9 +1662,7 @@ static bool ValidateBindBufferCommon(Context *context,
return false; return false;
} }
TransformFeedback *curTransformFeedback = if (context->getState().isTransformFeedbackActive())
context->getState().getCurrentTransformFeedback();
if (curTransformFeedback && curTransformFeedback->isActive())
{ {
context->validationError(GL_INVALID_OPERATION, kTransformFeedbackTargetActive); context->validationError(GL_INVALID_OPERATION, kTransformFeedbackTargetActive);
return false; return false;
...@@ -3462,10 +3460,7 @@ bool ValidateBindTransformFeedback(Context *context, GLenum target, GLuint id) ...@@ -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 // Cannot bind a transform feedback object if the current one is started and not
// paused (3.0.2 pg 85 section 2.14.1) // paused (3.0.2 pg 85 section 2.14.1)
TransformFeedback *curTransformFeedback = if (context->getState().isTransformFeedbackActiveUnpaused())
context->getState().getCurrentTransformFeedback();
if (curTransformFeedback && curTransformFeedback->isActive() &&
!curTransformFeedback->isPaused())
{ {
context->validationError(GL_INVALID_OPERATION, kTransformFeedbackNotPaused); context->validationError(GL_INVALID_OPERATION, kTransformFeedbackNotPaused);
return false; 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