189a75b763467d83d4d402c91db55548682be14f0Chia-I Wu/* 289a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * Mesa 3-D graphics library 389a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * Version: 7.8 489a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * 589a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * Copyright (C) 2009-2010 Chia-I Wu <olv@0xlab.org> 689a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * 789a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * Permission is hereby granted, free of charge, to any person obtaining a 889a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * copy of this software and associated documentation files (the "Software"), 989a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * to deal in the Software without restriction, including without limitation 1089a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * the rights to use, copy, modify, merge, publish, distribute, sublicense, 1189a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * and/or sell copies of the Software, and to permit persons to whom the 1289a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * Software is furnished to do so, subject to the following conditions: 1389a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * 1489a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * The above copyright notice and this permission notice shall be included 1589a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * in all copies or substantial portions of the Software. 1689a75b763467d83d4d402c91db55548682be14f0Chia-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, 1989a75b763467d83d4d402c91db55548682be14f0Chia-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. 2489a75b763467d83d4d402c91db55548682be14f0Chia-I Wu */ 2589a75b763467d83d4d402c91db55548682be14f0Chia-I Wu 2689a75b763467d83d4d402c91db55548682be14f0Chia-I Wu#ifndef _NATIVE_MODESET_H_ 2789a75b763467d83d4d402c91db55548682be14f0Chia-I Wu#define _NATIVE_MODESET_H_ 2889a75b763467d83d4d402c91db55548682be14f0Chia-I Wu 2989a75b763467d83d4d402c91db55548682be14f0Chia-I Wu#include "pipe/p_compiler.h" 3089a75b763467d83d4d402c91db55548682be14f0Chia-I Wu 3189a75b763467d83d4d402c91db55548682be14f0Chia-I Wustruct native_display; 3289a75b763467d83d4d402c91db55548682be14f0Chia-I Wustruct native_surface; 3389a75b763467d83d4d402c91db55548682be14f0Chia-I Wustruct native_config; 3489a75b763467d83d4d402c91db55548682be14f0Chia-I Wu 3589a75b763467d83d4d402c91db55548682be14f0Chia-I Wustruct native_connector { 3689a75b763467d83d4d402c91db55548682be14f0Chia-I Wu int dummy; 3789a75b763467d83d4d402c91db55548682be14f0Chia-I Wu}; 3889a75b763467d83d4d402c91db55548682be14f0Chia-I Wu 3989a75b763467d83d4d402c91db55548682be14f0Chia-I Wustruct native_mode { 4089a75b763467d83d4d402c91db55548682be14f0Chia-I Wu const char *desc; 4189a75b763467d83d4d402c91db55548682be14f0Chia-I Wu int width, height; 42662e098b560c6983f5ac320cc5ff7a82ecdc5f8aChia-I Wu int refresh_rate; /* HZ * 1000 */ 4389a75b763467d83d4d402c91db55548682be14f0Chia-I Wu}; 4489a75b763467d83d4d402c91db55548682be14f0Chia-I Wu 4589a75b763467d83d4d402c91db55548682be14f0Chia-I Wu/** 4689a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * Mode setting interface of the native display. It exposes the mode setting 4789a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * capabilities of the underlying graphics hardware. 4889a75b763467d83d4d402c91db55548682be14f0Chia-I Wu */ 4989a75b763467d83d4d402c91db55548682be14f0Chia-I Wustruct native_display_modeset { 5089a75b763467d83d4d402c91db55548682be14f0Chia-I Wu /** 5189a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * Get the available physical connectors and the number of CRTCs. 5289a75b763467d83d4d402c91db55548682be14f0Chia-I Wu */ 5389a75b763467d83d4d402c91db55548682be14f0Chia-I Wu const struct native_connector **(*get_connectors)(struct native_display *ndpy, 5489a75b763467d83d4d402c91db55548682be14f0Chia-I Wu int *num_connectors, 5589a75b763467d83d4d402c91db55548682be14f0Chia-I Wu int *num_crtcs); 5689a75b763467d83d4d402c91db55548682be14f0Chia-I Wu 5789a75b763467d83d4d402c91db55548682be14f0Chia-I Wu /** 5889a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * Get the current supported modes of a connector. The returned modes may 5989a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * change every time this function is called and those from previous calls 6089a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * might become invalid. 6189a75b763467d83d4d402c91db55548682be14f0Chia-I Wu */ 6289a75b763467d83d4d402c91db55548682be14f0Chia-I Wu const struct native_mode **(*get_modes)(struct native_display *ndpy, 6389a75b763467d83d4d402c91db55548682be14f0Chia-I Wu const struct native_connector *nconn, 6489a75b763467d83d4d402c91db55548682be14f0Chia-I Wu int *num_modes); 6589a75b763467d83d4d402c91db55548682be14f0Chia-I Wu 6689a75b763467d83d4d402c91db55548682be14f0Chia-I Wu /** 67f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu * Create a scan-out surface. Required unless no config has scanout_bit 68f7730c0740cc8a43c3573dcdbf43e76630d957f6Chia-I Wu * set. 6989a75b763467d83d4d402c91db55548682be14f0Chia-I Wu */ 7089a75b763467d83d4d402c91db55548682be14f0Chia-I Wu struct native_surface *(*create_scanout_surface)(struct native_display *ndpy, 7189a75b763467d83d4d402c91db55548682be14f0Chia-I Wu const struct native_config *nconf, 7289a75b763467d83d4d402c91db55548682be14f0Chia-I Wu uint width, uint height); 7389a75b763467d83d4d402c91db55548682be14f0Chia-I Wu 7489a75b763467d83d4d402c91db55548682be14f0Chia-I Wu /** 7589a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * Program the CRTC to output the surface to the given connectors with the 7689a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * given mode. When surface is not given, the CRTC is disabled. 7789a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * 7889a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * This interface does not export a way to query capabilities of the CRTCs. 7989a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * The native display usually needs to dynamically map the index to a CRTC 8089a75b763467d83d4d402c91db55548682be14f0Chia-I Wu * that supports the given connectors. 8189a75b763467d83d4d402c91db55548682be14f0Chia-I Wu */ 8289a75b763467d83d4d402c91db55548682be14f0Chia-I Wu boolean (*program)(struct native_display *ndpy, int crtc_idx, 8389a75b763467d83d4d402c91db55548682be14f0Chia-I Wu struct native_surface *nsurf, uint x, uint y, 8489a75b763467d83d4d402c91db55548682be14f0Chia-I Wu const struct native_connector **nconns, int num_nconns, 8589a75b763467d83d4d402c91db55548682be14f0Chia-I Wu const struct native_mode *nmode); 8689a75b763467d83d4d402c91db55548682be14f0Chia-I Wu}; 8789a75b763467d83d4d402c91db55548682be14f0Chia-I Wu 8889a75b763467d83d4d402c91db55548682be14f0Chia-I Wu#endif /* _NATIVE_MODESET_H_ */ 89