Validate render subpass for SetBlendColor and SetStencilReference
diff --git a/src/backend/CommandBuffer.cpp b/src/backend/CommandBuffer.cpp
index 5159c2f..011daf1 100644
--- a/src/backend/CommandBuffer.cpp
+++ b/src/backend/CommandBuffer.cpp
@@ -573,8 +573,8 @@
case Command::SetStencilReference:
{
iterator.NextCommand<SetStencilReferenceCmd>();
- if (!state->HaveRenderPass()) {
- HandleError("Can't set stencil reference without an active render pass");
+ if (!state->HaveRenderSubpass()) {
+ HandleError("Can't set stencil reference without an active render subpass");
return false;
}
}
@@ -583,8 +583,8 @@
case Command::SetBlendColor:
{
iterator.NextCommand<SetBlendColorCmd>();
- if (!state->HaveRenderPass()) {
- HandleError("Can't set blend color without an active render pass");
+ if (!state->HaveRenderSubpass()) {
+ HandleError("Can't set blend color without an active render subpass");
return false;
}
}
diff --git a/src/backend/CommandBufferStateTracker.cpp b/src/backend/CommandBufferStateTracker.cpp
index 51087fc..e0bc4c6 100644
--- a/src/backend/CommandBufferStateTracker.cpp
+++ b/src/backend/CommandBufferStateTracker.cpp
@@ -37,6 +37,10 @@
return currentRenderPass != nullptr;
}
+ bool CommandBufferStateTracker::HaveRenderSubpass() const {
+ return aspects[VALIDATION_ASPECT_RENDER_SUBPASS];
+ }
+
bool CommandBufferStateTracker::ValidateCanCopy() const {
if (currentRenderPass) {
builder->HandleError("Copy cannot occur during a render pass");
diff --git a/src/backend/CommandBufferStateTracker.h b/src/backend/CommandBufferStateTracker.h
index aaa26ad..43edbb8 100644
--- a/src/backend/CommandBufferStateTracker.h
+++ b/src/backend/CommandBufferStateTracker.h
@@ -30,6 +30,7 @@
// Non-state-modifying validation functions
bool HaveRenderPass() const;
+ bool HaveRenderSubpass() const;
bool ValidateCanCopy() const;
bool ValidateCanUseBufferAs(BufferBase* buffer, nxt::BufferUsageBit usage) const;
bool ValidateCanUseTextureAs(TextureBase* texture, nxt::TextureUsageBit usage) const;