Add renderer blit command contract

This commit is contained in:
2026-06-02 15:31:01 +02:00
parent 1c40602744
commit ee3fb36047
9 changed files with 338 additions and 16 deletions

View File

@@ -241,6 +241,40 @@ pp::foundation::Result<std::uint64_t> frame_capture_byte_size(TextureDesc desc)
return texture_byte_size(desc);
}
pp::foundation::Status validate_blit_filter(BlitFilter filter) noexcept
{
switch (filter) {
case BlitFilter::nearest:
case BlitFilter::linear:
return pp::foundation::Status::success();
}
return pp::foundation::Status::invalid_argument("blit filter is not supported");
}
pp::foundation::Status validate_blit_descs(TextureDesc source, TextureDesc destination) noexcept
{
if (!source.render_target || !destination.render_target) {
return pp::foundation::Status::invalid_argument("blit endpoints must be render targets");
}
if (source.format != destination.format) {
return pp::foundation::Status::invalid_argument("blit endpoints must use matching texture formats");
}
const auto source_status = texture_byte_size(source);
if (!source_status.ok()) {
return source_status.status();
}
const auto destination_status = texture_byte_size(destination);
if (!destination_status.ok()) {
return destination_status.status();
}
return pp::foundation::Status::success();
}
const char* texture_format_name(TextureFormat format) noexcept
{
switch (format) {
@@ -269,4 +303,16 @@ const char* primitive_topology_name(PrimitiveTopology topology) noexcept
return "unknown";
}
const char* blit_filter_name(BlitFilter filter) noexcept
{
switch (filter) {
case BlitFilter::nearest:
return "nearest";
case BlitFilter::linear:
return "linear";
}
return "unknown";
}
}