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