Add renderer resource label contract

This commit is contained in:
2026-06-02 17:01:10 +02:00
parent bbe3db1747
commit a5dbf05ab5
7 changed files with 132 additions and 14 deletions

View File

@@ -131,6 +131,19 @@ pp::foundation::Status validate_texture_usage(TextureUsage usage) noexcept
return pp::foundation::Status::success();
}
pp::foundation::Status validate_resource_label(const char* label) noexcept
{
if (label == nullptr) {
return pp::foundation::Status::invalid_argument("resource label must not be null");
}
if (bounded_c_string_length(label, max_resource_label_bytes) > max_resource_label_bytes) {
return pp::foundation::Status::out_of_range("resource label exceeds the configured limit");
}
return pp::foundation::Status::success();
}
pp::foundation::Status validate_texture_desc(TextureDesc desc) noexcept
{
const auto extent_status = validate_extent(desc.extent);
@@ -150,7 +163,12 @@ pp::foundation::Status validate_texture_desc(TextureDesc desc) noexcept
return pp::foundation::Status::out_of_range("texture mip level count exceeds the texture extent");
}
return validate_texture_usage(desc.usage);
const auto usage_status = validate_texture_usage(desc.usage);
if (!usage_status.ok()) {
return usage_status;
}
return validate_resource_label(desc.debug_name);
}
pp::foundation::Result<std::uint64_t> texture_byte_size(TextureDesc desc) noexcept
@@ -417,6 +435,11 @@ pp::foundation::Status validate_sampler_desc(SamplerDesc desc) noexcept
pp::foundation::Status validate_mesh_desc(MeshDesc desc) noexcept
{
const auto label_status = validate_resource_label(desc.debug_name);
if (!label_status.ok()) {
return label_status;
}
if (desc.vertex_count == 0) {
return pp::foundation::Status::invalid_argument("mesh must contain at least one vertex");
}