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