| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_GRAPHICS_LIB_COMPUTE_SPINEL_PLATFORMS_VK_INCLUDE_SPINEL_PLATFORMS_VK_SPINEL_VK_H_ |
| #define SRC_GRAPHICS_LIB_COMPUTE_SPINEL_PLATFORMS_VK_INCLUDE_SPINEL_PLATFORMS_VK_SPINEL_VK_H_ |
| |
| // |
| // |
| // |
| |
| #include "spinel/spinel.h" |
| #include "spinel_vk_types.h" |
| |
| // |
| // |
| // |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| // |
| // SPINEL REQUIREMENTS |
| // |
| // Get a Spinel target's Vulkan requirements. |
| // |
| // A Spinel target is a binary image containing configuration parameters and a |
| // bundle of SPIR-V modules. |
| // |
| // Targets are prebuilt and specific to a particular device vendor, architecture |
| // and key-val configuration. |
| // |
| // A Spinel context can only be created with a VkDevice that is initialized with |
| // all of the target's required extensions and features. |
| // |
| // The `spinel_vk_target_get_requirements()` function yields the extensions and |
| // initialized feature flags required by a Spinel target. |
| // |
| // These requirements can be merged with other Vulkan library requirements |
| // before VkDevice creation. |
| // |
| // If the `.ext_names` member is NULL, the `.ext_name_count` member will be |
| // initialized. |
| // |
| // Returns `false` if: |
| // |
| // * The .ext_names field is NULL and the number of required extensions is |
| // greater than zero. |
| // * The .ext_name_count is less than the number of required extensions is |
| // greater than zero. |
| // * Any of the .pdf, .pdf11 or .pdf12 members are NULL. |
| // |
| // Otherwise, returns true. |
| // |
| bool |
| spinel_vk_target_get_requirements(spinel_vk_target_t const * target, |
| spinel_vk_target_requirements_t * requirements); |
| |
| // |
| // SPINEL CONTEXT CREATION |
| // |
| // Every value in the `spinel_vk_context_create_info_t` structure must be |
| // initialized. |
| // |
| // Returns NULL upon failure. |
| // |
| spinel_context_t |
| spinel_vk_context_create(struct spinel_vk_context_create_info const * create_info); |
| |
| // |
| // |
| // |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| // |
| // |
| // |
| |
| #endif // SRC_GRAPHICS_LIB_COMPUTE_SPINEL_PLATFORMS_VK_INCLUDE_SPINEL_PLATFORMS_VK_SPINEL_VK_H_ |