native_wayland.h revision d72e7f0dd95fdf28cf64c0b5b6d42c16f087008a
1ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov/* 2ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * Mesa 3-D graphics library 3ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * Version: 7.11 4ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * 5ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * Copyright (C) 2011 Benjamin Franzke <benjaminfranzke@googlemail.com> 6ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * 7ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * Permission is hereby granted, free of charge, to any person obtaining a 8ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * copy of this software and associated documentation files (the "Software"), 9ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * to deal in the Software without restriction, including without limitation 10ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * the rights to use, copy, modify, merge, publish, distribute, sublicense, 11ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * and/or sell copies of the Software, and to permit persons to whom the 12ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * Software is furnished to do so, subject to the following conditions: 13ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * 14ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * The above copyright notice and this permission notice shall be included 15ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * in all copies or substantial portions of the Software. 16ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * 17ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1839dd5aafb0a92536a8872ac4a9c39a56442c8023Alexey Samsonov * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov * DEALINGS IN THE SOFTWARE. 24ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov */ 25ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 26ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov#ifndef _NATIVE_WAYLAND_H_ 27a0bd5df0867e054b9740bc734325cdeabfe3825aAlexey Samsonov#define _NATIVE_WAYLAND_H_ 28ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 29ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov#include "pipe/p_compiler.h" 30ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov#include "pipe/p_format.h" 31ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 32ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov#include "common/native.h" 33ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov#include "common/native_helper.h" 34ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 35ab4d569f2841beaf6152179b1f4da6b7e0f3530eHans Wennborg#include "wayland-egl-priv.h" 36ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 37ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovstruct wayland_surface; 38ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 39ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovstruct wayland_display { 40ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov struct native_display base; 41ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 42ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov struct wayland_config *config; 43ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov struct wl_display *dpy; 44ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 45ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov struct wl_buffer *(*create_buffer)(struct wayland_display *display, 46ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov struct wayland_surface *surface, 47ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov enum native_attachment attachment); 48ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov}; 49ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 50ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovenum wayland_buffer_type { 51ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov WL_BUFFER_FRONT, 52ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov WL_BUFFER_BACK, 53ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov WL_BUFFER_COUNT 54ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov}; 55ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 56ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovenum wayland_surface_type { 57ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov WL_WINDOW_SURFACE, 58ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov WL_PIXMAP_SURFACE, 5939dd5aafb0a92536a8872ac4a9c39a56442c8023Alexey Samsonov WL_PBUFFER_SURFACE 60ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov}; 61ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 6239dd5aafb0a92536a8872ac4a9c39a56442c8023Alexey Samsonovstruct wayland_surface { 63a1aabcd98714737f1b1c30c889f5943f1770752bAlexey Samsonov struct native_surface base; 6439dd5aafb0a92536a8872ac4a9c39a56442c8023Alexey Samsonov struct wayland_display *display; 65ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 66ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov struct wl_egl_window *win; 67ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov struct wl_egl_pixmap *pix; 68ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov enum wayland_surface_type type; 69ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov int dx, dy; 70ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov struct resource_surface *rsurf; 71ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov struct pipe_resource *pending_resource; 72ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov enum pipe_format color_format; 73ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 74ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov unsigned int sequence_number; 7539dd5aafb0a92536a8872ac4a9c39a56442c8023Alexey Samsonov struct wl_buffer *buffer[WL_BUFFER_COUNT]; 76ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov unsigned int attachment_mask; 77ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 7839dd5aafb0a92536a8872ac4a9c39a56442c8023Alexey Samsonov boolean block_swap_buffers; 79a1aabcd98714737f1b1c30c889f5943f1770752bAlexey Samsonov}; 8039dd5aafb0a92536a8872ac4a9c39a56442c8023Alexey Samsonov 81ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovstruct wayland_config { 82ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov struct native_config base; 83ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov}; 84ef7aefc53bf24214f489bf9e4100bcff45f7b12aAlexey Samsonov 85ef7aefc53bf24214f489bf9e4100bcff45f7b12aAlexey Samsonovstatic INLINE struct wayland_display * 86ef7aefc53bf24214f489bf9e4100bcff45f7b12aAlexey Samsonovwayland_display(const struct native_display *ndpy) 87ef7aefc53bf24214f489bf9e4100bcff45f7b12aAlexey Samsonov{ 88ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov return (struct wayland_display *) ndpy; 89ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov} 90ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 91ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovstatic INLINE struct wayland_surface * 92ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovwayland_surface(const struct native_surface *nsurf) 93ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov{ 94ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov return (struct wayland_surface *) nsurf; 95ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov} 96ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 97ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovstatic INLINE struct wayland_config * 98ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovwayland_config(const struct native_config *nconf) 99ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov{ 100ef7aefc53bf24214f489bf9e4100bcff45f7b12aAlexey Samsonov return (struct wayland_config *) nconf; 101ef7aefc53bf24214f489bf9e4100bcff45f7b12aAlexey Samsonov} 102ef7aefc53bf24214f489bf9e4100bcff45f7b12aAlexey Samsonov 103ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovstruct wayland_display * 104ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovwayland_create_shm_display(struct wl_display *display, 105 struct native_event_handler *event_handler, 106 void *user_data); 107struct wayland_display * 108wayland_create_drm_display(struct wl_display *display, 109 struct native_event_handler *event_handler, 110 void *user_data); 111 112#endif /* _NATIVE_WAYLAND_H_ */ 113