summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2015-09-07 13:29:35 -0700
committerJason Ekstrand <jason.ekstrand@intel.com>2015-09-08 10:57:25 -0700
commit6158bb2051f2602ca83b504be015bdbac8b2b49f (patch)
tree3aaade5f4814c1e9c94536a354ee9716d8960462
parentd6fddc76a7441591f6c6fc3f2f08b931852c743b (diff)
weston: Add a Vulkan renderer header
-rw-r--r--src/vulkan-renderer.h83
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);
+};
+