svga_state.h revision 2a5eeeaebe4f631e0f4e3dbe73f22d5f60a53db5
16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/********************************************************** 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright 2008-2009 VMware, Inc. All rights reserved. 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Permission is hereby granted, free of charge, to any person 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * obtaining a copy of this software and associated documentation 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * files (the "Software"), to deal in the Software without 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * restriction, including without limitation the rights to use, copy, 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * modify, merge, publish, distribute, sublicense, and/or sell copies 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * of the Software, and to permit persons to whom the Software is 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * furnished to do so, subject to the following conditions: 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The above copyright notice and this permission notice shall be 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * included in all copies or substantial portions of the Software. 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * SOFTWARE. 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org **********************************************************/ 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef SVGA_STATE_H 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define SVGA_STATE_H 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "pipe/p_compiler.h" 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "pipe/p_defines.h" 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstruct svga_context; 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid svga_init_state( struct svga_context *svga ); 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid svga_destroy_state( struct svga_context *svga ); 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstruct svga_tracked_state { 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *name; 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org unsigned dirty; 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org enum pipe_error (*update)( struct svga_context *svga, unsigned dirty ); 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* NEED_SWTNL 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_update_need_swvfetch; 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_update_need_pipeline; 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_update_need_swtnl; 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* HW_CLEAR 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_hw_viewport; 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_hw_scissor; 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_hw_framebuffer; 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* HW_DRAW 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_hw_vs; 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_hw_fs; 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_hw_rss; 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_hw_tss; 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_hw_tss_binding; 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_hw_clip_planes; 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_hw_vdecl; 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_hw_fs_constants; 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_hw_vs_constants; 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* SWTNL_DRAW 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_update_swtnl_draw; 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgextern struct svga_tracked_state svga_update_swtnl_vdecl; 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* Bring the hardware fully up-to-date so that we can emit draw 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * commands. 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define SVGA_STATE_NEED_SWTNL 0 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define SVGA_STATE_HW_CLEAR 1 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define SVGA_STATE_HW_DRAW 2 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define SVGA_STATE_SWTNL_DRAW 3 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define SVGA_STATE_MAX 4 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgenum pipe_error svga_update_state( struct svga_context *svga, 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org unsigned level ); 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid svga_update_state_retry( struct svga_context *svga, 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org unsigned level ); 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgenum pipe_error svga_emit_initial_state( struct svga_context *svga ); 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgenum pipe_error svga_reemit_framebuffer_bindings( struct svga_context *svga ); 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgenum pipe_error svga_reemit_tss_bindings( struct svga_context *svga ); 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org