15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Mesa 3-D graphics library 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Version: 7.8 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (C) 2009-2010 Chia-I Wu <olv@0xlab.org> 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Permission is hereby granted, free of charge, to any person obtaining a 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * copy of this software and associated documentation files (the "Software"), 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to deal in the Software without restriction, including without limitation 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the rights to use, copy, modify, merge, publish, distribute, sublicense, 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * and/or sell copies of the Software, and to permit persons to whom the 1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * Software is furnished to do so, subject to the following conditions: 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The above copyright notice and this permission notice shall be included 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * in all copies or substantial portions of the Software. 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) * 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * DEALINGS IN THE SOFTWARE. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _NATIVE_MODESET_H_ 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _NATIVE_MODESET_H_ 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "pipe/p_compiler.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct native_display; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct native_surface; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct native_config; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct native_connector { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int dummy; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct native_mode { 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *desc; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int width, height; 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int refresh_rate; /* HZ * 1000 */ 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}; 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)/** 46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) * Mode setting interface of the native display. It exposes the mode setting 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) * capabilities of the underlying graphics hardware. 4868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) */ 4968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)struct native_display_modeset { 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) /** 51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) * Get the available physical connectors and the number of CRTCs. 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) */ 53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const struct native_connector **(*get_connectors)(struct native_display *ndpy, 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int *num_connectors, 55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int *num_crtcs); 56a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) /** 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Get the current supported modes of a connector. The returned modes may 59 * change every time this function is called and those from previous calls 60 * might become invalid. 61 */ 62 const struct native_mode **(*get_modes)(struct native_display *ndpy, 63 const struct native_connector *nconn, 64 int *num_modes); 65 66 /** 67 * Create a scan-out surface. Required unless no config has scanout_bit 68 * set. 69 */ 70 struct native_surface *(*create_scanout_surface)(struct native_display *ndpy, 71 const struct native_config *nconf, 72 uint width, uint height); 73 74 /** 75 * Program the CRTC to output the surface to the given connectors with the 76 * given mode. When surface is not given, the CRTC is disabled. 77 * 78 * This interface does not export a way to query capabilities of the CRTCs. 79 * The native display usually needs to dynamically map the index to a CRTC 80 * that supports the given connectors. 81 */ 82 boolean (*program)(struct native_display *ndpy, int crtc_idx, 83 struct native_surface *nsurf, uint x, uint y, 84 const struct native_connector **nconns, int num_nconns, 85 const struct native_mode *nmode); 86}; 87 88#endif /* _NATIVE_MODESET_H_ */ 89