diff options
author | Jason Ekstrand <jason.ekstrand@intel.com> | 2015-09-07 13:29:35 -0700 |
---|---|---|
committer | Jason Ekstrand <jason.ekstrand@intel.com> | 2015-09-08 10:57:25 -0700 |
commit | 6158bb2051f2602ca83b504be015bdbac8b2b49f (patch) | |
tree | 3aaade5f4814c1e9c94536a354ee9716d8960462 | |
parent | d6fddc76a7441591f6c6fc3f2f08b931852c743b (diff) |
weston: Add a Vulkan renderer header
-rw-r--r-- | src/vulkan-renderer.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/vulkan-renderer.h b/src/vulkan-renderer.h new file mode 100644 index 00000000..22533481 --- /dev/null +++ b/src/vulkan-renderer.h @@ -0,0 +1,83 @@ +/* + * Copyright © 2015 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "config.h" + +#include "compositor.h" + +#include <vulkan/vulkan.h> +#include <vulkan/vk_wsi_swapchain.h> + +enum vk_renderer_border_side { + VK_RENDERER_BORDER_TOP = 0, + VK_RENDERER_BORDER_LEFT = 1, + VK_RENDERER_BORDER_RIGHT = 2, + VK_RENDERER_BORDER_BOTTOM = 3, +}; + +struct vulkan_renderer_interface { + int (*create)(struct weston_compositor *ec, + VkPlatformWSI platform, + void *native_platform_handle); + + int (*output_create)(struct weston_output *output, + VkSurfaceDescriptionWindowWSI *window, + VkFormat *formats, const int n_formats); + + void (*output_destroy)(struct weston_output *output); + + /* Sets the output border. + * + * The side specifies the side for which we are setting the border. + * The width and height are the width and height of the border. + * The tex_width patemeter specifies the width of the actual + * texture; this may be larger than width if the data is not + * tightly packed. + * + * The top and bottom textures will extend over the sides to the + * full width of the bordered window. The right and left edges, + * however, will extend only to the top and bottom of the + * compositor surface. This is demonstrated by the picture below: + * + * +-----------------------+ + * | TOP | + * +-+-------------------+-+ + * | | | | + * |L| |R| + * |E| |I| + * |F| |G| + * |T| |H| + * | | |T| + * | | | | + * +-+-------------------+-+ + * | BOTTOM | + * +-----------------------+ + */ + void (*output_set_border)(struct weston_output *output, + enum vk_renderer_border_side side, + int32_t width, int32_t height, + int32_t tex_width, unsigned char *data); +}; + |