13192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz/********************************************************** 23192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * Copyright 2008-2009 VMware, Inc. All rights reserved. 33192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * 43192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * Permission is hereby granted, free of charge, to any person 53192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * obtaining a copy of this software and associated documentation 63192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * files (the "Software"), to deal in the Software without 73192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * restriction, including without limitation the rights to use, copy, 83192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * modify, merge, publish, distribute, sublicense, and/or sell copies 93192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * of the Software, and to permit persons to whom the Software is 103192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * furnished to do so, subject to the following conditions: 113192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * 123192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * The above copyright notice and this permission notice shall be 133192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * included in all copies or substantial portions of the Software. 143192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * 153192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 163192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 173192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 183192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 193192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 203192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 213192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 223192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * SOFTWARE. 233192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * 243192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz **********************************************************/ 253192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 263192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#ifndef SVGA_SCREEN_H 273192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#define SVGA_SCREEN_H 283192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 293192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 303192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#include "pipe/p_screen.h" 312aaca1df9df6980ec88180c8866c8987b31db91aJosé Fonseca#include "os/os_thread.h" 323192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 333192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#include "util/u_double_list.h" 343192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 353192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#include "svga_screen_cache.h" 363192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 373192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 383192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzstruct svga_winsys_screen; 393192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzstruct svga_winsys_context; 403192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzstruct SVGACmdMemory; 413192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 423192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz/** 433192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * Subclass of pipe_screen 443192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz */ 453192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzstruct svga_screen 463192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz{ 473192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz struct pipe_screen screen; 483192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz struct svga_winsys_screen *sws; 493192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 50830827229141c08411c521f81283d1ad62f37163José Fonseca SVGA3dHardwareVersion hw_version; 51830827229141c08411c521f81283d1ad62f37163José Fonseca 529773370eda1765b1014ba11a699d10244b88757cJosé Fonseca float maxPointSize; 539773370eda1765b1014ba11a699d10244b88757cJosé Fonseca 543192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz struct { 553192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz boolean force_level_surface_view; 563192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz boolean force_surface_view; 573192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz boolean no_surface_view; 583192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz boolean force_sampler_view; 593192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz boolean no_sampler_view; 603192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz } debug; 613192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 623192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz unsigned texture_timestamp; 633192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz pipe_mutex tex_mutex; 64b84590994c4261d85485357263146d5e3d8827ebJosé Fonseca 65b84590994c4261d85485357263146d5e3d8827ebJosé Fonseca pipe_mutex swc_mutex; /* Used for buffer uploads */ 66b84590994c4261d85485357263146d5e3d8827ebJosé Fonseca 674e0ae3e34f50d1f66a04337b563da22250c8b8d2Jakob Bornecrantz /* which formats to translate depth formats into */ 684e0ae3e34f50d1f66a04337b563da22250c8b8d2Jakob Bornecrantz struct { 694e0ae3e34f50d1f66a04337b563da22250c8b8d2Jakob Bornecrantz enum SVGA3dSurfaceFormat z16; 704e0ae3e34f50d1f66a04337b563da22250c8b8d2Jakob Bornecrantz /* note gallium order */ 714e0ae3e34f50d1f66a04337b563da22250c8b8d2Jakob Bornecrantz enum SVGA3dSurfaceFormat x8z24; 724e0ae3e34f50d1f66a04337b563da22250c8b8d2Jakob Bornecrantz enum SVGA3dSurfaceFormat s8z24; 734e0ae3e34f50d1f66a04337b563da22250c8b8d2Jakob Bornecrantz } depth; 744e0ae3e34f50d1f66a04337b563da22250c8b8d2Jakob Bornecrantz 753192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz struct svga_host_surface_cache cache; 763192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz}; 773192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 783192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#ifndef DEBUG 793192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz/** cast wrapper */ 803192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzstatic INLINE struct svga_screen * 813192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzsvga_screen(struct pipe_screen *pscreen) 823192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz{ 833192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz return (struct svga_screen *) pscreen; 843192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz} 853192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#else 863192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzstruct svga_screen * 873192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzsvga_screen(struct pipe_screen *screen); 883192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#endif 893192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz 903192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#endif /* SVGA_SCREEN_H */ 91