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#include "util/u_debug.h" 2711f4360f2e915f236558da22efe5bdabd81446f3Chia-I Wu#include "util/u_memory.h" 28870a9d643b1f256e6a379d96a325284dd2f7eeeaChia-I Wu#include "util/u_string.h" 2949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "egllog.h" 3049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 3149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu#include "native_x11.h" 3249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 3373df31eedd0f33c8a9907855cb247c8f87964c48Chia-I Wustatic const struct native_event_handler *x11_event_handler; 34a22a332fc7cc54d4d0973dcd21a90159cc51de1aChia-I Wu 35f66a4e20c19d55005854bbee312947ec16e287e3Chia-I Wustatic struct native_display * 3673df31eedd0f33c8a9907855cb247c8f87964c48Chia-I Wunative_create_display(void *dpy, boolean use_sw) 3749381d63e61c724b156b76068058df1c01a906c2Chia-I Wu{ 3849381d63e61c724b156b76068058df1c01a906c2Chia-I Wu struct native_display *ndpy = NULL; 3949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu boolean force_sw; 4049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 4149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu force_sw = debug_get_bool_option("EGL_SOFTWARE", FALSE); 4295c5c69b505f562b61e23fa7dd500dbdd432a70dChia-I Wu 43a22a332fc7cc54d4d0973dcd21a90159cc51de1aChia-I Wu if (force_sw || use_sw) { 44a22a332fc7cc54d4d0973dcd21a90159cc51de1aChia-I Wu _eglLog(_EGL_INFO, "use software fallback"); 4573df31eedd0f33c8a9907855cb247c8f87964c48Chia-I Wu ndpy = x11_create_ximage_display((Display *) dpy, x11_event_handler); 46a22a332fc7cc54d4d0973dcd21a90159cc51de1aChia-I Wu } 47a22a332fc7cc54d4d0973dcd21a90159cc51de1aChia-I Wu else { 4873df31eedd0f33c8a9907855cb247c8f87964c48Chia-I Wu ndpy = x11_create_dri2_display((Display *) dpy, x11_event_handler); 4949381d63e61c724b156b76068058df1c01a906c2Chia-I Wu } 5049381d63e61c724b156b76068058df1c01a906c2Chia-I Wu 5149381d63e61c724b156b76068058df1c01a906c2Chia-I Wu return ndpy; 5249381d63e61c724b156b76068058df1c01a906c2Chia-I Wu} 53f66a4e20c19d55005854bbee312947ec16e287e3Chia-I Wu 54d5ab243d5a5bacbd2ba615d40f13c8ab37364745Chia-I Wustatic const struct native_platform x11_platform = { 55d5ab243d5a5bacbd2ba615d40f13c8ab37364745Chia-I Wu "X11", /* name */ 56d5ab243d5a5bacbd2ba615d40f13c8ab37364745Chia-I Wu native_create_display 57d5ab243d5a5bacbd2ba615d40f13c8ab37364745Chia-I Wu}; 58f66a4e20c19d55005854bbee312947ec16e287e3Chia-I Wu 59f66a4e20c19d55005854bbee312947ec16e287e3Chia-I Wuconst struct native_platform * 6073df31eedd0f33c8a9907855cb247c8f87964c48Chia-I Wunative_get_x11_platform(const struct native_event_handler *event_handler) 61f66a4e20c19d55005854bbee312947ec16e287e3Chia-I Wu{ 6273df31eedd0f33c8a9907855cb247c8f87964c48Chia-I Wu x11_event_handler = event_handler; 63f66a4e20c19d55005854bbee312947ec16e287e3Chia-I Wu return &x11_platform; 64f66a4e20c19d55005854bbee312947ec16e287e3Chia-I Wu} 65