Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /**********************************************************
  2.  * Copyright 2008-2009 VMware, Inc.  All rights reserved.
  3.  *
  4.  * Permission is hereby granted, free of charge, to any person
  5.  * obtaining a copy of this software and associated documentation
  6.  * files (the "Software"), to deal in the Software without
  7.  * restriction, including without limitation the rights to use, copy,
  8.  * modify, merge, publish, distribute, sublicense, and/or sell copies
  9.  * of the Software, and to permit persons to whom the Software is
  10.  * furnished to do so, subject to the following conditions:
  11.  *
  12.  * The above copyright notice and this permission notice shall be
  13.  * included in all copies or substantial portions of the Software.
  14.  *
  15.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  16.  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  17.  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  18.  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  19.  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  20.  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  21.  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  22.  * SOFTWARE.
  23.  *
  24.  **********************************************************/
  25.  
  26. #ifndef SVGA_STATE_H
  27. #define SVGA_STATE_H
  28.  
  29.  
  30. #include "pipe/p_compiler.h"
  31. #include "pipe/p_defines.h"
  32.  
  33. struct svga_context;
  34.  
  35.  
  36. void svga_init_state( struct svga_context *svga );
  37. void svga_destroy_state( struct svga_context *svga );
  38.  
  39.  
  40. struct svga_tracked_state {
  41.    const char *name;
  42.    unsigned dirty;
  43.    enum pipe_error (*update)( struct svga_context *svga, unsigned dirty );
  44. };
  45.  
  46. /* NEED_SWTNL
  47.  */
  48. extern struct svga_tracked_state svga_update_need_swvfetch;
  49. extern struct svga_tracked_state svga_update_need_pipeline;
  50. extern struct svga_tracked_state svga_update_need_swtnl;
  51.  
  52. /* HW_CLEAR
  53.  */
  54. extern struct svga_tracked_state svga_hw_viewport;
  55. extern struct svga_tracked_state svga_hw_scissor;
  56. extern struct svga_tracked_state svga_hw_framebuffer;
  57.  
  58. /* HW_DRAW
  59.  */
  60. extern struct svga_tracked_state svga_hw_vs;
  61. extern struct svga_tracked_state svga_hw_fs;
  62. extern struct svga_tracked_state svga_hw_rss;
  63. extern struct svga_tracked_state svga_hw_tss;
  64. extern struct svga_tracked_state svga_hw_tss_binding;
  65. extern struct svga_tracked_state svga_hw_clip_planes;
  66. extern struct svga_tracked_state svga_hw_vdecl;
  67. extern struct svga_tracked_state svga_hw_fs_constants;
  68. extern struct svga_tracked_state svga_hw_vs_constants;
  69.  
  70. /* SWTNL_DRAW
  71.  */
  72. extern struct svga_tracked_state svga_update_swtnl_draw;
  73. extern struct svga_tracked_state svga_update_swtnl_vdecl;
  74.  
  75. /* Bring the hardware fully up-to-date so that we can emit draw
  76.  * commands.
  77.  */
  78. #define SVGA_STATE_NEED_SWTNL        0
  79. #define SVGA_STATE_HW_CLEAR          1
  80. #define SVGA_STATE_HW_DRAW           2
  81. #define SVGA_STATE_SWTNL_DRAW        3
  82. #define SVGA_STATE_MAX               4
  83.  
  84.  
  85. enum pipe_error svga_update_state( struct svga_context *svga,
  86.                                    unsigned level );
  87.  
  88. void svga_update_state_retry( struct svga_context *svga,
  89.                               unsigned level );
  90.  
  91.  
  92. enum pipe_error svga_emit_initial_state( struct svga_context *svga );
  93.  
  94. enum pipe_error svga_reemit_framebuffer_bindings( struct svga_context *svga );
  95.  
  96. enum pipe_error svga_reemit_tss_bindings( struct svga_context *svga );
  97.  
  98. #endif
  99.