- for (i = 0; i < ARRAY_SIZE(backend_list); i++)
- if (!strcmp(drm_version->name, backend_list[i]->name)) {
+ for (i = 0; i < ARRAY_SIZE(backend_list); i++) {
+ const struct backend *b = backend_list[i];
+ // Exactly one of the main create functions must be defined.
+ assert((b->bo_create != NULL) ^ (b->bo_create_from_metadata != NULL));
+ // Either both or neither must be implemented.
+ assert((b->bo_compute_metadata != NULL) == (b->bo_create_from_metadata != NULL));
+ // Both can't be defined, but it's okay for neither to be (i.e. only bo_create).
+ assert((b->bo_create_with_modifiers == NULL) ||
+ (b->bo_create_from_metadata == NULL));
+
+ if (!strcmp(drm_version->name, b->name)) {