p_screen.h revision aa59a937ccf41609081d3f9a4973df5478979785
1aa59a937ccf41609081d3f9a4973df5478979785Brian/**************************************************************************
2aa59a937ccf41609081d3f9a4973df5478979785Brian *
3aa59a937ccf41609081d3f9a4973df5478979785Brian * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
4aa59a937ccf41609081d3f9a4973df5478979785Brian * All Rights Reserved.
5aa59a937ccf41609081d3f9a4973df5478979785Brian *
6aa59a937ccf41609081d3f9a4973df5478979785Brian * Permission is hereby granted, free of charge, to any person obtaining a
7aa59a937ccf41609081d3f9a4973df5478979785Brian * copy of this software and associated documentation files (the
8aa59a937ccf41609081d3f9a4973df5478979785Brian * "Software"), to deal in the Software without restriction, including
9aa59a937ccf41609081d3f9a4973df5478979785Brian * without limitation the rights to use, copy, modify, merge, publish,
10aa59a937ccf41609081d3f9a4973df5478979785Brian * distribute, sub license, and/or sell copies of the Software, and to
11aa59a937ccf41609081d3f9a4973df5478979785Brian * permit persons to whom the Software is furnished to do so, subject to
12aa59a937ccf41609081d3f9a4973df5478979785Brian * the following conditions:
13aa59a937ccf41609081d3f9a4973df5478979785Brian *
14aa59a937ccf41609081d3f9a4973df5478979785Brian * The above copyright notice and this permission notice (including the
15aa59a937ccf41609081d3f9a4973df5478979785Brian * next paragraph) shall be included in all copies or substantial portions
16aa59a937ccf41609081d3f9a4973df5478979785Brian * of the Software.
17aa59a937ccf41609081d3f9a4973df5478979785Brian *
18aa59a937ccf41609081d3f9a4973df5478979785Brian * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19aa59a937ccf41609081d3f9a4973df5478979785Brian * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20aa59a937ccf41609081d3f9a4973df5478979785Brian * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21aa59a937ccf41609081d3f9a4973df5478979785Brian * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22aa59a937ccf41609081d3f9a4973df5478979785Brian * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23aa59a937ccf41609081d3f9a4973df5478979785Brian * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24aa59a937ccf41609081d3f9a4973df5478979785Brian * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25aa59a937ccf41609081d3f9a4973df5478979785Brian *
26aa59a937ccf41609081d3f9a4973df5478979785Brian **************************************************************************/
27aa59a937ccf41609081d3f9a4973df5478979785Brian
28aa59a937ccf41609081d3f9a4973df5478979785Brian/**
29aa59a937ccf41609081d3f9a4973df5478979785Brian * Screen, Adapter or GPU
30aa59a937ccf41609081d3f9a4973df5478979785Brian *
31aa59a937ccf41609081d3f9a4973df5478979785Brian * These are driver functions/facilities that are context independent.
32aa59a937ccf41609081d3f9a4973df5478979785Brian */
33aa59a937ccf41609081d3f9a4973df5478979785Brian
34aa59a937ccf41609081d3f9a4973df5478979785Brian
35aa59a937ccf41609081d3f9a4973df5478979785Brian#ifndef P_SCREEN_H
36aa59a937ccf41609081d3f9a4973df5478979785Brian#define P_SCREEN_H
37aa59a937ccf41609081d3f9a4973df5478979785Brian
38aa59a937ccf41609081d3f9a4973df5478979785Brian
39aa59a937ccf41609081d3f9a4973df5478979785Brian#include "pipe/p_compiler.h"
40aa59a937ccf41609081d3f9a4973df5478979785Brian#include "pipe/p_state.h"
41aa59a937ccf41609081d3f9a4973df5478979785Brian
42aa59a937ccf41609081d3f9a4973df5478979785Brian
43aa59a937ccf41609081d3f9a4973df5478979785Brian
44aa59a937ccf41609081d3f9a4973df5478979785Brian#ifdef __cplusplus
45aa59a937ccf41609081d3f9a4973df5478979785Brianextern "C" {
46aa59a937ccf41609081d3f9a4973df5478979785Brian#endif
47aa59a937ccf41609081d3f9a4973df5478979785Brian
48aa59a937ccf41609081d3f9a4973df5478979785Brian
49aa59a937ccf41609081d3f9a4973df5478979785Brian
50aa59a937ccf41609081d3f9a4973df5478979785Brian/**
51aa59a937ccf41609081d3f9a4973df5478979785Brian * Gallium screen/adapter context.  Basically everything
52aa59a937ccf41609081d3f9a4973df5478979785Brian * hardware-specific that doesn't actually require a rendering
53aa59a937ccf41609081d3f9a4973df5478979785Brian * context.
54aa59a937ccf41609081d3f9a4973df5478979785Brian */
55aa59a937ccf41609081d3f9a4973df5478979785Brianstruct pipe_screen {
56aa59a937ccf41609081d3f9a4973df5478979785Brian   struct pipe_winsys *winsys;
57aa59a937ccf41609081d3f9a4973df5478979785Brian
58aa59a937ccf41609081d3f9a4973df5478979785Brian   void (*destroy)( struct pipe_screen * );
59aa59a937ccf41609081d3f9a4973df5478979785Brian
60aa59a937ccf41609081d3f9a4973df5478979785Brian
61aa59a937ccf41609081d3f9a4973df5478979785Brian   /*
62aa59a937ccf41609081d3f9a4973df5478979785Brian    * Capability queries
63aa59a937ccf41609081d3f9a4973df5478979785Brian    */
64aa59a937ccf41609081d3f9a4973df5478979785Brian   const char *(*get_name)( struct pipe_screen * );
65aa59a937ccf41609081d3f9a4973df5478979785Brian
66aa59a937ccf41609081d3f9a4973df5478979785Brian   const char *(*get_vendor)( struct pipe_screen * );
67aa59a937ccf41609081d3f9a4973df5478979785Brian
68aa59a937ccf41609081d3f9a4973df5478979785Brian   int (*get_param)( struct pipe_screen *, int param );
69aa59a937ccf41609081d3f9a4973df5478979785Brian
70aa59a937ccf41609081d3f9a4973df5478979785Brian   float (*get_paramf)( struct pipe_screen *, int param );
71aa59a937ccf41609081d3f9a4973df5478979785Brian
72aa59a937ccf41609081d3f9a4973df5478979785Brian   boolean (*is_format_supported)( struct pipe_screen *,
73aa59a937ccf41609081d3f9a4973df5478979785Brian                                   enum pipe_format format,
74aa59a937ccf41609081d3f9a4973df5478979785Brian                                   uint type );
75aa59a937ccf41609081d3f9a4973df5478979785Brian
76aa59a937ccf41609081d3f9a4973df5478979785Brian
77aa59a937ccf41609081d3f9a4973df5478979785Brian   /*
78aa59a937ccf41609081d3f9a4973df5478979785Brian    * Texture functions
79aa59a937ccf41609081d3f9a4973df5478979785Brian    */
80aa59a937ccf41609081d3f9a4973df5478979785Brian   struct pipe_texture * (*texture_create)(struct pipe_screen *,
81aa59a937ccf41609081d3f9a4973df5478979785Brian                                           const struct pipe_texture *templat);
82aa59a937ccf41609081d3f9a4973df5478979785Brian
83aa59a937ccf41609081d3f9a4973df5478979785Brian   void (*texture_release)(struct pipe_screen *,
84aa59a937ccf41609081d3f9a4973df5478979785Brian                           struct pipe_texture **pt);
85aa59a937ccf41609081d3f9a4973df5478979785Brian
86aa59a937ccf41609081d3f9a4973df5478979785Brian   /** Get a surface which is a "view" into a texture */
87aa59a937ccf41609081d3f9a4973df5478979785Brian   struct pipe_surface *(*get_tex_surface)(struct pipe_screen *,
88aa59a937ccf41609081d3f9a4973df5478979785Brian                                           struct pipe_texture *texture,
89aa59a937ccf41609081d3f9a4973df5478979785Brian                                           unsigned face, unsigned level,
90aa59a937ccf41609081d3f9a4973df5478979785Brian                                           unsigned zslice);
91aa59a937ccf41609081d3f9a4973df5478979785Brian};
92aa59a937ccf41609081d3f9a4973df5478979785Brian
93aa59a937ccf41609081d3f9a4973df5478979785Brian
94aa59a937ccf41609081d3f9a4973df5478979785Brian#ifdef __cplusplus
95aa59a937ccf41609081d3f9a4973df5478979785Brian}
96aa59a937ccf41609081d3f9a4973df5478979785Brian#endif
97aa59a937ccf41609081d3f9a4973df5478979785Brian
98aa59a937ccf41609081d3f9a4973df5478979785Brian#endif /* P_SCREEN_H */
99