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