Add renderer scissor state contract

This commit is contained in:
2026-06-02 15:46:03 +02:00
parent 5226746c1a
commit 9a7e1c4def
9 changed files with 215 additions and 65 deletions

View File

@@ -122,6 +122,24 @@ pp::foundation::Status RecordingCommandContext::set_viewport(Viewport viewport)
return pp::foundation::Status::success();
}
pp::foundation::Status RecordingCommandContext::set_scissor(ScissorRect scissor) noexcept
{
if (!in_render_pass_) {
return pp::foundation::Status::invalid_argument("render pass has not begun");
}
const auto status = validate_scissor(scissor, active_target_.extent);
if (!status.ok()) {
return status;
}
push_command(commands_, RecordedRenderCommand {
.kind = RecordedRenderCommandKind::set_scissor,
.scissor = scissor,
});
return pp::foundation::Status::success();
}
pp::foundation::Status RecordingCommandContext::set_blend_state(BlendState state) noexcept
{
if (!in_render_pass_) {
@@ -418,6 +436,8 @@ const char* recorded_render_command_kind_name(RecordedRenderCommandKind kind) no
return "begin_render_pass";
case RecordedRenderCommandKind::set_viewport:
return "set_viewport";
case RecordedRenderCommandKind::set_scissor:
return "set_scissor";
case RecordedRenderCommandKind::set_blend_state:
return "set_blend_state";
case RecordedRenderCommandKind::bind_shader: