Subversion Repositories Kolibri OS

Rev

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

  1. /*
  2.  * Copyright (C) 2009 Francisco Jerez.
  3.  * All Rights Reserved.
  4.  *
  5.  * Permission is hereby granted, free of charge, to any person obtaining
  6.  * a copy of this software and associated documentation files (the
  7.  * "Software"), to deal in the Software without restriction, including
  8.  * without limitation the rights to use, copy, modify, merge, publish,
  9.  * distribute, sublicense, and/or sell copies of the Software, and to
  10.  * permit persons to whom the Software is furnished to do so, subject to
  11.  * the following conditions:
  12.  *
  13.  * The above copyright notice and this permission notice (including the
  14.  * next paragraph) shall be included in all copies or substantial
  15.  * portions of the Software.
  16.  *
  17.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  18.  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  19.  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  20.  * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
  21.  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  22.  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  23.  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  24.  *
  25.  */
  26.  
  27. #ifndef __NOUVEAU_DRIVER_H__
  28. #define __NOUVEAU_DRIVER_H__
  29.  
  30. #include "main/imports.h"
  31. #include "main/mtypes.h"
  32. #include "main/macros.h"
  33. #include "main/formats.h"
  34. #include "main/state.h"
  35. #include "utils.h"
  36. #include "dri_util.h"
  37.  
  38. #undef NDEBUG
  39. #include <assert.h>
  40.  
  41. #include <libdrm/nouveau.h>
  42. #include "nouveau_screen.h"
  43. #include "nouveau_state.h"
  44. #include "nouveau_surface.h"
  45. #include "nouveau_local.h"
  46.  
  47. #define DRIVER_AUTHOR   "Nouveau"
  48.  
  49. struct nouveau_driver {
  50.         struct gl_context *(*context_create)(struct nouveau_screen *screen,
  51.                                      const struct gl_config *visual,
  52.                                      struct gl_context *share_ctx);
  53.         void (*context_destroy)(struct gl_context *ctx);
  54.  
  55.         void (*surface_copy)(struct gl_context *ctx,
  56.                              struct nouveau_surface *dst,
  57.                              struct nouveau_surface *src,
  58.                              int dx, int dy, int sx, int sy, int w, int h);
  59.         void (*surface_fill)(struct gl_context *ctx,
  60.                              struct nouveau_surface *dst,
  61.                              unsigned mask, unsigned value,
  62.                              int dx, int dy, int w, int h);
  63.  
  64.         nouveau_state_func *emit;
  65.         int num_emit;
  66. };
  67.  
  68. #define nouveau_error(format, ...) \
  69.         fprintf(stderr, "%s: " format, __func__, ## __VA_ARGS__)
  70.  
  71. void
  72. nouveau_clear(struct gl_context *ctx, GLbitfield buffers);
  73.  
  74. void
  75. nouveau_span_functions_init(struct gl_context *ctx);
  76.  
  77. void
  78. nouveau_driver_functions_init(struct dd_function_table *functions);
  79.  
  80. void
  81. nouveau_texture_functions_init(struct dd_function_table *functions);
  82.  
  83. #endif
  84.