native.h revision af977b53826695afcdcfe900816a93671aec00f5
149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu/* 249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * Mesa 3-D graphics library 349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * Version: 7.8 449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * 549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * Copyright (C) 2009-2010 Chia-I Wu <olv@0xlab.org> 649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * 749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * Permission is hereby granted, free of charge, to any person obtaining a 849381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * copy of this software and associated documentation files (the "Software"), 949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * to deal in the Software without restriction, including without limitation 1049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * the rights to use, copy, modify, merge, publish, distribute, sublicense, 1149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * and/or sell copies of the Software, and to permit persons to whom the 1249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * Software is furnished to do so, subject to the following conditions: 1349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * 1449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * The above copyright notice and this permission notice shall be included 1549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * in all copies or substantial portions of the Software. 1649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * 17ba81b0743efd978509b1931d7b4b93f37e8aeb5eChia-I Wu * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18ba81b0743efd978509b1931d7b4b93f37e8aeb5eChia-I Wu * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20ba81b0743efd978509b1931d7b4b93f37e8aeb5eChia-I Wu * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21ba81b0743efd978509b1931d7b4b93f37e8aeb5eChia-I Wu * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22ba81b0743efd978509b1931d7b4b93f37e8aeb5eChia-I Wu * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23ba81b0743efd978509b1931d7b4b93f37e8aeb5eChia-I Wu * DEALINGS IN THE SOFTWARE. 2449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu */ 2549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 2649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#ifndef _NATIVE_H_ 2749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#define _NATIVE_H_ 2849381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 2949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "EGL/egl.h" /* for EGL native types */ 3049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 3149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "pipe/p_compiler.h" 3249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "pipe/p_screen.h" 3349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "pipe/p_context.h" 3449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "pipe/p_state.h" 35d5ab243d5a5bacbd2ba615d40f13c8ab37364745Chia-I Wu#include "state_tracker/sw_winsys.h" 3649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 37a5f4338fc4f9b4500c5754de237f77549b3cedf8Chia-I Wu#ifdef __cplusplus 38a5f4338fc4f9b4500c5754de237f77549b3cedf8Chia-I Wuextern "C" { 39a5f4338fc4f9b4500c5754de237f77549b3cedf8Chia-I Wu#endif 40a5f4338fc4f9b4500c5754de237f77549b3cedf8Chia-I Wu 41af977b53826695afcdcfe900816a93671aec00f5Chia-I Wu#include "native_buffer.h" 4289a75b763467d83d4d402c91db55548682be14f0Chia-I Wu#include "native_modeset.h" 4389a75b763467d83d4d402c91db55548682be14f0Chia-I Wu 4449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu/** 4549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * Only color buffers are listed. The others are allocated privately through, 4649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * for example, st_renderbuffer_alloc_storage(). 4749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu */ 4849381d63e61c724b156b76068058df1c01a906c2Chia-I Wuenum native_attachment { 4949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu NATIVE_ATTACHMENT_FRONT_LEFT, 5049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu NATIVE_ATTACHMENT_BACK_LEFT, 5149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu NATIVE_ATTACHMENT_FRONT_RIGHT, 5249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu NATIVE_ATTACHMENT_BACK_RIGHT, 5349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 5449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu NUM_NATIVE_ATTACHMENTS 5549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu}; 5649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 57fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wuenum native_param_type { 58fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu /* 59fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu * Return TRUE if window/pixmap surfaces use the buffers of the native 60fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu * types. 61fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu */ 6294bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu NATIVE_PARAM_USE_NATIVE_BUFFER, 6394bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu 6494bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu /** 6594bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu * Return TRUE if native_surface::present can preserve the buffer. 6694bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu */ 6794bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu NATIVE_PARAM_PRESERVE_BUFFER, 6894bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu 6994bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu /** 7094bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu * Return the maximum supported swap interval. 7194bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu */ 7294bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu NATIVE_PARAM_MAX_SWAP_INTERVAL 73fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu}; 74fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu 7549381d63e61c724b156b76068058df1c01a906c2Chia-I Wustruct native_surface { 76e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu /** 77e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu * Available for caller's use. 78e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu */ 79e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu void *user_data; 80e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu 8149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu void (*destroy)(struct native_surface *nsurf); 8249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 8349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu /** 8494bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu * Present the given buffer to the native engine. 8594bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu */ 8694bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu boolean (*present)(struct native_surface *nsurf, 8794bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu enum native_attachment natt, 8894bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu boolean preserve, 8994bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu uint swap_interval); 9094bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu 9194bf657b2390a1cb72d748047e5c7014e4bc1752Chia-I Wu /** 92fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu * Validate the buffers of the surface. textures, if not NULL, points to an 93fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu * array of size NUM_NATIVE_ATTACHMENTS and the returned textures are owned 94fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu * by the caller. A sequence number is also returned. The caller can use 95fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu * it to check if anything has changed since the last call. Any of the 96fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu * pointers may be NULL and it indicates the caller has no interest in those 97fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu * values. 981c1015bd53843a840a1fda6d2eb58d45da3e9fd0Chia-I Wu * 99fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu * If this function is called multiple times with different attachment 100fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu * masks, those not listed in the latest call might be destroyed. This 101fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu * behavior might change in the future. 10249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu */ 103fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu boolean (*validate)(struct native_surface *nsurf, uint attachment_mask, 104287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell unsigned int *seq_num, struct pipe_resource **textures, 10549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu int *width, int *height); 10649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 10749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu /** 10849381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * Wait until all native commands affecting the surface has been executed. 10949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu */ 11049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu void (*wait)(struct native_surface *nsurf); 11149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu}; 11249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 113f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu/** 114f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu * Describe a native display config. 115f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu */ 11649381d63e61c724b156b76068058df1c01a906c2Chia-I Wustruct native_config { 117f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu /* available buffers and their format */ 118f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu uint buffer_mask; 11949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu enum pipe_format color_format; 120c67ad0eee8f75e1fd65e8ab2fdd660dc132764eeChia-I Wu 121f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu /* supported surface types */ 122f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu boolean window_bit; 123f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu boolean pixmap_bit; 124c67ad0eee8f75e1fd65e8ab2fdd660dc132764eeChia-I Wu boolean scanout_bit; 125f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu 126f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu int native_visual_id; 127f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu int native_visual_type; 128f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu int level; 129f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu int samples; 130f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu boolean slow_config; 131f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu boolean transparent_rgb; 132f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu int transparent_rgb_values[3]; 133c67ad0eee8f75e1fd65e8ab2fdd660dc132764eeChia-I Wu}; 134c67ad0eee8f75e1fd65e8ab2fdd660dc132764eeChia-I Wu 13549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu/** 13649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * A pipe winsys abstracts the OS. A pipe screen abstracts the graphcis 13749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * hardware. A native display consists of a pipe winsys, a pipe screen, and 13849381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * the native display server. 13949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu */ 14049381d63e61c724b156b76068058df1c01a906c2Chia-I Wustruct native_display { 14151b00574a2ef81629548b079ef70c016bdd4251dChia-I Wu /** 14251b00574a2ef81629548b079ef70c016bdd4251dChia-I Wu * The pipe screen of the native display. 14351b00574a2ef81629548b079ef70c016bdd4251dChia-I Wu */ 14449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu struct pipe_screen *screen; 14551b00574a2ef81629548b079ef70c016bdd4251dChia-I Wu 146e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu /** 147e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu * Available for caller's use. 148e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu */ 149e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu void *user_data; 150e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu 15149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu void (*destroy)(struct native_display *ndpy); 15249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 15349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu /** 154fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu * Query the parameters of the native display. 155fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu * 156fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu * The return value is defined by the parameter. 157fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu */ 158fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu int (*get_param)(struct native_display *ndpy, 159fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu enum native_param_type param); 160fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu 161fade8a6eb639d633cfdbba4a3ba3aa3cc5c04fa6Chia-I Wu /** 16249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu * Get the supported configs. The configs are owned by the display, but 163870a9d643b1f256e6a379d96a325284dd2f7eeeaChia-I Wu * the returned array should be FREE()ed. 16449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu */ 16549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu const struct native_config **(*get_configs)(struct native_display *ndpy, 16649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu int *num_configs); 16749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 16849381d63e61c724b156b76068058df1c01a906c2Chia-I Wu /** 169f8244e294646c1b5127a2bf3e92811300b0e3b9eChia-I Wu * Test if a pixmap is supported by the given config. Required unless no 170f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu * config has pixmap_bit set. 171f8244e294646c1b5127a2bf3e92811300b0e3b9eChia-I Wu * 172f8244e294646c1b5127a2bf3e92811300b0e3b9eChia-I Wu * This function is usually called to find a config that supports a given 173f8244e294646c1b5127a2bf3e92811300b0e3b9eChia-I Wu * pixmap. Thus, it is usually called with the same pixmap in a row. 174f8244e294646c1b5127a2bf3e92811300b0e3b9eChia-I Wu */ 175f8244e294646c1b5127a2bf3e92811300b0e3b9eChia-I Wu boolean (*is_pixmap_supported)(struct native_display *ndpy, 176f8244e294646c1b5127a2bf3e92811300b0e3b9eChia-I Wu EGLNativePixmapType pix, 177f8244e294646c1b5127a2bf3e92811300b0e3b9eChia-I Wu const struct native_config *nconf); 178f8244e294646c1b5127a2bf3e92811300b0e3b9eChia-I Wu 17949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 18049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu /** 181f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu * Create a window surface. Required unless no config has window_bit set. 18249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu */ 18349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu struct native_surface *(*create_window_surface)(struct native_display *ndpy, 18449381d63e61c724b156b76068058df1c01a906c2Chia-I Wu EGLNativeWindowType win, 18549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu const struct native_config *nconf); 18649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 18749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu /** 188f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu * Create a pixmap surface. Required unless no config has pixmap_bit set. 18949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu */ 19049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu struct native_surface *(*create_pixmap_surface)(struct native_display *ndpy, 19149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu EGLNativePixmapType pix, 19249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu const struct native_config *nconf); 19349381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 194af977b53826695afcdcfe900816a93671aec00f5Chia-I Wu const struct native_display_buffer *buffer; 195c67ad0eee8f75e1fd65e8ab2fdd660dc132764eeChia-I Wu const struct native_display_modeset *modeset; 196c67ad0eee8f75e1fd65e8ab2fdd660dc132764eeChia-I Wu}; 19749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 198c67ad0eee8f75e1fd65e8ab2fdd660dc132764eeChia-I Wu/** 199e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu * The handler for events that a native display may generate. The events are 200e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu * generated asynchronously and the handler may be called by any thread at any 201e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu * time. 202c67ad0eee8f75e1fd65e8ab2fdd660dc132764eeChia-I Wu */ 203e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wustruct native_event_handler { 204c67ad0eee8f75e1fd65e8ab2fdd660dc132764eeChia-I Wu /** 205e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu * This function is called when a surface needs to be validated. 206c67ad0eee8f75e1fd65e8ab2fdd660dc132764eeChia-I Wu */ 207e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu void (*invalid_surface)(struct native_display *ndpy, 208e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu struct native_surface *nsurf, 209e38f28ddedd6d4902ae18b1bf243e67d4b16decbChia-I Wu unsigned int seq_num); 210d5ab243d5a5bacbd2ba615d40f13c8ab37364745Chia-I Wu 211d5ab243d5a5bacbd2ba615d40f13c8ab37364745Chia-I Wu struct pipe_screen *(*new_drm_screen)(struct native_display *ndpy, 212d5ab243d5a5bacbd2ba615d40f13c8ab37364745Chia-I Wu const char *name, int fd); 213d5ab243d5a5bacbd2ba615d40f13c8ab37364745Chia-I Wu struct pipe_screen *(*new_sw_screen)(struct native_display *ndpy, 214d5ab243d5a5bacbd2ba615d40f13c8ab37364745Chia-I Wu struct sw_winsys *ws); 215c67ad0eee8f75e1fd65e8ab2fdd660dc132764eeChia-I Wu}; 21649381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 217fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu/** 218fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu * Test whether an attachment is set in the mask. 219fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu */ 220fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wustatic INLINE boolean 221fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wunative_attachment_mask_test(uint mask, enum native_attachment att) 222fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu{ 223fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu return !!(mask & (1 << att)); 224fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu} 225fda897ad71738dd76a218280fd2e635d5dcdcee1Chia-I Wu 226f66a4e20c19d55005854bbee312947ec16e287e3Chia-I Wustruct native_platform { 227f66a4e20c19d55005854bbee312947ec16e287e3Chia-I Wu const char *name; 22849381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 229f66a4e20c19d55005854bbee312947ec16e287e3Chia-I Wu struct native_display *(*create_display)(void *dpy, 230d5ab243d5a5bacbd2ba615d40f13c8ab37364745Chia-I Wu struct native_event_handler *handler, 231d5ab243d5a5bacbd2ba615d40f13c8ab37364745Chia-I Wu void *user_data); 232f66a4e20c19d55005854bbee312947ec16e287e3Chia-I Wu}; 233f66a4e20c19d55005854bbee312947ec16e287e3Chia-I Wu 234f66a4e20c19d55005854bbee312947ec16e287e3Chia-I Wuconst struct native_platform * 235ea05299ce54ea0463626277907cab8e849884740Chia-I Wunative_get_gdi_platform(void); 236ea05299ce54ea0463626277907cab8e849884740Chia-I Wu 237ea05299ce54ea0463626277907cab8e849884740Chia-I Wuconst struct native_platform * 238ea05299ce54ea0463626277907cab8e849884740Chia-I Wunative_get_x11_platform(void); 239ea05299ce54ea0463626277907cab8e849884740Chia-I Wu 240ea05299ce54ea0463626277907cab8e849884740Chia-I Wuconst struct native_platform * 241e7424d72405a1cb1fb5ac625b340043aaa9f88beChia-I Wunative_get_drm_platform(void); 242ea05299ce54ea0463626277907cab8e849884740Chia-I Wu 243ea05299ce54ea0463626277907cab8e849884740Chia-I Wuconst struct native_platform * 244ea05299ce54ea0463626277907cab8e849884740Chia-I Wunative_get_fbdev_platform(void); 24549381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 246a5f4338fc4f9b4500c5754de237f77549b3cedf8Chia-I Wu#ifdef __cplusplus 247a5f4338fc4f9b4500c5754de237f77549b3cedf8Chia-I Wu} 248a5f4338fc4f9b4500c5754de237f77549b3cedf8Chia-I Wu#endif 249a5f4338fc4f9b4500c5754de237f77549b3cedf8Chia-I Wu 25049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#endif /* _NATIVE_H_ */ 251