Add renderer blit command contract
This commit is contained in:
@@ -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";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user