Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Mesa 3-D graphics library
  3.  *
  4.  * Copyright (C) 2009-2010 Chia-I Wu <olv@0xlab.org>
  5.  *
  6.  * Permission is hereby granted, free of charge, to any person obtaining a
  7.  * copy of this software and associated documentation files (the "Software"),
  8.  * to deal in the Software without restriction, including without limitation
  9.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  10.  * and/or sell copies of the Software, and to permit persons to whom the
  11.  * Software is furnished to do so, subject to the following conditions:
  12.  *
  13.  * The above copyright notice and this permission notice shall be included
  14.  * in all copies or substantial portions of the Software.
  15.  *
  16.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17.  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  19.  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20.  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  21.  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  22.  * DEALINGS IN THE SOFTWARE.
  23.  */
  24.  
  25. #ifndef _NATIVE_MODESET_H_
  26. #define _NATIVE_MODESET_H_
  27.  
  28. #include "pipe/p_compiler.h"
  29.  
  30. struct native_display;
  31. struct native_surface;
  32. struct native_config;
  33.  
  34. struct native_connector {
  35.    int dummy;
  36. };
  37.  
  38. struct native_mode {
  39.    const char *desc;
  40.    int width, height;
  41.    int refresh_rate; /* HZ * 1000 */
  42. };
  43.  
  44. /**
  45.  * Mode setting interface of the native display.  It exposes the mode setting
  46.  * capabilities of the underlying graphics hardware.
  47.  */
  48. struct native_display_modeset {
  49.    /**
  50.     * Get the available physical connectors and the number of CRTCs.
  51.     */
  52.    const struct native_connector **(*get_connectors)(struct native_display *ndpy,
  53.                                                      int *num_connectors,
  54.                                                      int *num_crtcs);
  55.  
  56.    /**
  57.     * Get the current supported modes of a connector.  The returned modes may
  58.     * change every time this function is called and those from previous calls
  59.     * might become invalid.
  60.     */
  61.    const struct native_mode **(*get_modes)(struct native_display *ndpy,
  62.                                            const struct native_connector *nconn,
  63.                                            int *num_modes);
  64.  
  65.    /**
  66.     * Create a scan-out surface.  Required unless no config has scanout_bit
  67.     * set.
  68.     */
  69.    struct native_surface *(*create_scanout_surface)(struct native_display *ndpy,
  70.                                                     const struct native_config *nconf,
  71.                                                     uint width, uint height);
  72.  
  73.    /**
  74.     * Program the CRTC to output the surface to the given connectors with the
  75.     * given mode.  When surface is not given, the CRTC is disabled.
  76.     *
  77.     * This interface does not export a way to query capabilities of the CRTCs.
  78.     * The native display usually needs to dynamically map the index to a CRTC
  79.     * that supports the given connectors.
  80.     */
  81.    boolean (*program)(struct native_display *ndpy, int crtc_idx,
  82.                       struct native_surface *nsurf, uint x, uint y,
  83.                       const struct native_connector **nconns, int num_nconns,
  84.                       const struct native_mode *nmode);
  85. };
  86.  
  87. #endif /* _NATIVE_MODESET_H_ */
  88.