Browse Source

doc: expand Developers Guide with notes about Vulkan features.

pull/491/head
Vladimír Vondruš 5 years ago
parent
commit
3e2698cc0e
  1. 49
      doc/developers.dox

49
doc/developers.dox

@ -736,21 +736,23 @@ unless it doesn't affect public API at all.
3. Check @cb{.sh} git diff @ce for suspicious changes and whitespace-at-EOL 3. Check @cb{.sh} git diff @ce for suspicious changes and whitespace-at-EOL
4. For every new added function and `CreateInfo` structure, add an entry to 4. For every new added function and `CreateInfo` structure, add an entry to
`doc/vulkan-mapping.dox` `doc/vulkan-mapping.dox`
5. Add a table listing the new version and all new extensions in it to 5. For every new `*Feature` structure, expand the @ref Vk::DeviceFeatures
enum according to @ref developers-vk-features
6. Add a table listing the new version and all new extensions in it to
`doc/vulkan-support.dox` (take a list of them from the changelog in the `doc/vulkan-support.dox` (take a list of them from the changelog in the
official spec PDF). Some extensions might be already present in the general official spec PDF). Some extensions might be already present in the general
extension list, move them out of there. extension list, move them out of there.
6. Add a new `requires-vkXY` page with @c \@m_footernavigation to 7. Add a new `requires-vkXY` page with @c \@m_footernavigation to
`doc/vulkan-support.dox`, mention it as a @c \@subpage at a correct `doc/vulkan-support.dox`, mention it as a @c \@subpage at a correct
position in the list position in the list
7. Add a new `requires-vkXY` alias to `Doxyfile`, `Doxyfile-mcss` and 8. Add a new `requires-vkXY` alias to `Doxyfile`, `Doxyfile-mcss` and
`Doxyfile-public`, copypaste it from existing and change the numbers `Doxyfile-public`, copypaste it from existing and change the numbers
8. Add new version enum value: 9. Add new version enum value:
- to `src/Magnum/Vk/Version.h` - to `src/Magnum/Vk/Version.h`
- to the list in `src/Magnum/Vk/vk-info.cpp` - to the list in `src/Magnum/Vk/vk-info.cpp`
- to @ref Vk::InstanceExtension::extensions() and - to @ref Vk::InstanceExtension::extensions() and
@ref Vk::Extension::extensions() in `src/Magnum/Vk/Extensions.cpp` @ref Vk::Extension::extensions() in `src/Magnum/Vk/Extensions.cpp`
9. Add new extensions to `src/Magnum/Vk/Extensions.h` 10. Add new extensions to `src/Magnum/Vk/Extensions.h`
- there's a separate list for instance and device extensions, ensure each - there's a separate list for instance and device extensions, ensure each
in the right list in the right list
- order them by extension ID that is mentioned on every extension spec - order them by extension ID that is mentioned on every extension spec
@ -761,9 +763,9 @@ unless it doesn't affect public API at all.
@cpp Implementation::InstanceExtensionCount @ce / @cpp Implementation::InstanceExtensionCount @ce /
@cpp Implementation::DeviceExtensionCount @ce might needed to be @cpp Implementation::DeviceExtensionCount @ce might needed to be
increased increased
10. Add them alphabetically ordered to the correct list in 11. Add them alphabetically ordered to the correct list in
`src/Magnum/Vk/Extensions.cpp` `src/Magnum/Vk/Extensions.cpp`
11. Update existing extensions with version in which they become core (last 12. Update existing extensions with version in which they become core (last
parameter of the `_extension()` macro) parameter of the `_extension()` macro)
In order to remove Vulkan functionality, be sure to touch all places mentioned In order to remove Vulkan functionality, be sure to touch all places mentioned
@ -835,6 +837,39 @@ pointers on a class that needs them:
device creation as appropriate --- for example, if the extension is core in device creation as appropriate --- for example, if the extension is core in
1.2, the extension should be enabled only on 1.1 and below. 1.2, the extension should be enabled only on 1.1 and below.
@section developers-vk-features Checklist for adding Vulkan features
1. For every new `VkPhysicalDevice*Features` structure, add its boolean
members to the @ref Vk::DeviceFeature enum. There are headings referring
the full `VkPhysicalDevice*Features` structure name and either the version
or extension number, put the new members under a new heading at a correct
place.
2. Formulate the documentation to start with "Whether" and replace verbose
phrases like "the implementation supports ..." from the spec with "... is
supported".
3. Add a `@see` block, referencing related features if applicable,
crossreference the newly added value from the values it refers to as well
4. Reference the extension / version it was added in via `@requires_vkXY`
5. Add the new members to `Magnum/Vk/Implementation/deviceFeatureMapping.hpp`
to the correct place with a `_cver()` or `_cext()` macro as appropriate
6. If APIs depending on this feature are already exposed, reference the
feature from those
7. Extend `Magnum/Vk/Implementation/DeviceFeatures.h` with the new feature
struct, added to relatively the same place as in the enum header
8. Extend @ref Vk::DeviceProperties::features():
- connecting the new structure to the chain, insert to the correct place
again,
- expand the function docs to mention the new structure (again correct
order),
- verify that the features were fetched correctly (and especially that a
correct structure type was set) with @ref magnum-vk-info "magnum-vk-info"
--- (a subset) the new features should be shown as supported and
* *especially* everything after still looks the same as it looked
before. For some reason the Khronos validation layer doesn't check
`sType` fields in this query so it's easy to make a hard-to-discover
error
9. Add a link to the new Feature structure in `doc/vulkan-mapping.dox`
@section developers-dependency Checklist for adding, removing or updating a dependency @section developers-dependency Checklist for adding, removing or updating a dependency
1. Verify that there are no important clients stuck on the old version with no 1. Verify that there are no important clients stuck on the old version with no

Loading…
Cancel
Save