1debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell/************************************************************************** 22e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz * 3877128505431adaf817dc8069172ebe4a1cdf5d8José Fonseca * Copyright 2007 VMware, Inc. 4debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * All Rights Reserved. 52e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz * 6debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * Permission is hereby granted, free of charge, to any person obtaining a 7debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * copy of this software and associated documentation files (the 8debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * "Software"), to deal in the Software without restriction, including 9debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * without limitation the rights to use, copy, modify, merge, publish, 10debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * distribute, sub license, and/or sell copies of the Software, and to 11debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * permit persons to whom the Software is furnished to do so, subject to 12debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * the following conditions: 132e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz * 14debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * The above copyright notice and this permission notice (including the 15debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * next paragraph) shall be included in all copies or substantial portions 16debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * of the Software. 172e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz * 18debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21877128505431adaf817dc8069172ebe4a1cdf5d8José Fonseca * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 22debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 252e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz * 26debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell **************************************************************************/ 27debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell /* 28debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * Authors: 29877128505431adaf817dc8069172ebe4a1cdf5d8José Fonseca * Keith Whitwell <keithw@vmware.com> 30debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell */ 312e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz 32debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell#include "i915_state_inlines.h" 33debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell#include "i915_context.h" 34debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell#include "i915_state.h" 35debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell#include "i915_reg.h" 364f25420bdd834e81a3e22733304efc5261c2998aBrian Paul#include "util/u_memory.h" 37debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 38debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 39b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz/* Convinience function to check immediate state. 40b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz */ 41b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz 42a2a1a5805fd617e7f3cc8be44dd79b50da07ebb9Ilia Mirkinstatic inline void set_immediate(struct i915_context *i915, 43b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz unsigned offset, 44b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz const unsigned state) 45b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz{ 46b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz if (i915->current.immediate[offset] == state) 47b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz return; 48b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz 49b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz i915->current.immediate[offset] = state; 50b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz i915->immediate_dirty |= 1 << offset; 51b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz i915->hardware_dirty |= I915_HW_IMMEDIATE; 52b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz} 53b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz 54b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz 55debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 56debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell/*********************************************************************** 572e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz * S0,S1: Vertex buffer state. 58f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca */ 59f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonsecastatic void upload_S0S1(struct i915_context *i915) 60f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca{ 61f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca unsigned LIS0, LIS1; 62f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca 632e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz /* I915_NEW_VBO 642e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz */ 65cb5e05d99c40d4f7ab1ecbb42a6390caf3966ba4Jakob Bornecrantz LIS0 = i915->vbo_offset; 66f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca 67b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz /* Need to force this */ 68b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz if (i915->dirty & I915_NEW_VBO) { 69b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz i915->immediate_dirty |= 1 << I915_IMMEDIATE_S0; 70b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz i915->hardware_dirty |= I915_HW_IMMEDIATE; 71b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz } 72b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz 732e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz /* I915_NEW_VERTEX_SIZE 74f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca */ 75f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca { 76f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca unsigned vertex_size = i915->current.vertex_info.size; 77f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca 78f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca LIS1 = ((vertex_size << 24) | 792e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz (vertex_size << 16)); 80f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca } 81f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca 82b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz set_immediate(i915, I915_IMMEDIATE_S0, LIS0); 83b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz set_immediate(i915, I915_IMMEDIATE_S1, LIS1); 84f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca} 85f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca 86f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonsecaconst struct i915_tracked_state i915_upload_S0S1 = { 87e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz "imm S0 S1", 88e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz upload_S0S1, 89e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz I915_NEW_VBO | I915_NEW_VERTEX_FORMAT 90f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca}; 91f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca 92f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca 93f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca 94f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca/*********************************************************************** 95debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * S4: Vertex format, rasterization state 96debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell */ 97debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwellstatic void upload_S2S4(struct i915_context *i915) 98debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell{ 9940a86b20478024ca7c55400019c536cb5ff631d1Keith Whitwell unsigned LIS2, LIS4; 1006d88515190ed7500e201706cc14d30072ba42d6fBrian Paul 1012e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz /* I915_NEW_VERTEX_FORMAT 1022e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz */ 1036d88515190ed7500e201706cc14d30072ba42d6fBrian Paul { 1046d88515190ed7500e201706cc14d30072ba42d6fBrian Paul LIS2 = i915->current.vertex_info.hwfmt[1]; 1056d88515190ed7500e201706cc14d30072ba42d6fBrian Paul LIS4 = i915->current.vertex_info.hwfmt[0]; 1066d88515190ed7500e201706cc14d30072ba42d6fBrian Paul assert(LIS4); /* should never be zero? */ 1076d88515190ed7500e201706cc14d30072ba42d6fBrian Paul } 108debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 109cc2629f5912d1c608f830ab63f6c4e0875d2fcefZack Rusin LIS4 |= i915->rasterizer->LIS4; 110debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 111b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz set_immediate(i915, I915_IMMEDIATE_S2, LIS2); 112b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz set_immediate(i915, I915_IMMEDIATE_S4, LIS4); 113debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell} 114debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 115debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwellconst struct i915_tracked_state i915_upload_S2S4 = { 116e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz "imm S2 S4", 117e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz upload_S2S4, 118e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz I915_NEW_RASTERIZER | I915_NEW_VERTEX_FORMAT 119debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell}; 120debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 121debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 122debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 123debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell/*********************************************************************** 124debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell */ 1252e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantzstatic void upload_S5(struct i915_context *i915) 126debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell{ 12740a86b20478024ca7c55400019c536cb5ff631d1Keith Whitwell unsigned LIS5 = 0; 128debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 1292e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz /* I915_NEW_DEPTH_STENCIL 1302e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz */ 1311d8c31b47bd34a43e1f78a9f21a0c02c57c58479Zack Rusin LIS5 |= i915->depth_stencil->stencil_LIS5; 132388109c04dc92ed81d1dbe6209120c95bdbc83cdRoland Scheidegger /* hope it's safe to set stencil ref value even if stencil test is disabled? */ 133388109c04dc92ed81d1dbe6209120c95bdbc83cdRoland Scheidegger LIS5 |= i915->stencil_ref.ref_value[0] << S5_STENCIL_REF_SHIFT; 134debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 1352e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz /* I915_NEW_BLEND 1362e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz */ 137b6d50abd7d483029469a0faaa28e8e2f2f742c6dZack Rusin LIS5 |= i915->blend->LIS5; 138debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 139debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell#if 0 1402e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz /* I915_NEW_RASTERIZER 1412e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz */ 14269cfc16cb670804b272e88abac5ed3856bb70fa8Jakob Bornecrantz if (i915->rasterizer->LIS7) { 143debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell LIS5 |= S5_GLOBAL_DEPTH_OFFSET_ENABLE; 144debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell } 145debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell#endif 146debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 147b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz set_immediate(i915, I915_IMMEDIATE_S5, LIS5); 148debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell} 149debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 150debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwellconst struct i915_tracked_state i915_upload_S5 = { 151e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz "imm S5", 152e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz upload_S5, 153e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz I915_NEW_DEPTH_STENCIL | I915_NEW_BLEND | I915_NEW_RASTERIZER 154debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell}; 155debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 156debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 1572e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz 158debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell/*********************************************************************** 159debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell */ 1602e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantzstatic void upload_S6(struct i915_context *i915) 161debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell{ 162cfc23bc54c8cae2615d447bc199ff87ef7e9298eJakob Bornecrantz unsigned LIS6 = (2 << S6_TRISTRIP_PV_SHIFT); 163cfc23bc54c8cae2615d447bc199ff87ef7e9298eJakob Bornecrantz 164cfc23bc54c8cae2615d447bc199ff87ef7e9298eJakob Bornecrantz /* I915_NEW_FRAMEBUFFER 165cfc23bc54c8cae2615d447bc199ff87ef7e9298eJakob Bornecrantz */ 166cfc23bc54c8cae2615d447bc199ff87ef7e9298eJakob Bornecrantz if (i915->framebuffer.cbufs[0]) 167cfc23bc54c8cae2615d447bc199ff87ef7e9298eJakob Bornecrantz LIS6 |= S6_COLOR_WRITE_ENABLE; 168debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 169debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell /* I915_NEW_BLEND 170debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell */ 171b6d50abd7d483029469a0faaa28e8e2f2f742c6dZack Rusin LIS6 |= i915->blend->LIS6; 172debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 1731d8c31b47bd34a43e1f78a9f21a0c02c57c58479Zack Rusin /* I915_NEW_DEPTH 174debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell */ 1751d8c31b47bd34a43e1f78a9f21a0c02c57c58479Zack Rusin LIS6 |= i915->depth_stencil->depth_LIS6; 176debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 177b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz set_immediate(i915, I915_IMMEDIATE_S6, LIS6); 178debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell} 179debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 180debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwellconst struct i915_tracked_state i915_upload_S6 = { 18142b8b2be8553390f2e5f847759e886b910b550ccJakob Bornecrantz "imm S6", 182e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz upload_S6, 183e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz I915_NEW_BLEND | I915_NEW_DEPTH_STENCIL | I915_NEW_FRAMEBUFFER 184debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell}; 185debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 186debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 1872e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz 188debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell/*********************************************************************** 189debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell */ 1902e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantzstatic void upload_S7(struct i915_context *i915) 191debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell{ 1929f2c56fbd68826ba877afb6c10d239e6f52314f5Stéphane Marchesin#if 0 1935961732c1b59403b4e736fa354a64d4a0e5d8af2Michal Krol unsigned LIS7; 194debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 195294401814d1d89cc731de1c22c25333aa5d59374Zack Rusin /* I915_NEW_RASTERIZER 196debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell */ 1975961732c1b59403b4e736fa354a64d4a0e5d8af2Michal Krol LIS7 = i915->rasterizer->LIS7; 198debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 199b9baad2aff6ddc5145d91cbfb81d083a21990a80Jakob Bornecrantz set_immediate(i915, I915_IMMEDIATE_S7, LIS7); 20069cfc16cb670804b272e88abac5ed3856bb70fa8Jakob Bornecrantz#endif 201debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell} 202debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 203debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwellconst struct i915_tracked_state i915_upload_S7 = { 204e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz "imm S7", 205e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz upload_S7, 206e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz I915_NEW_RASTERIZER 207debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell}; 208debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 209debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 2102e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz 2112e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz/*********************************************************************** 2122e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz */ 213debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwellstatic const struct i915_tracked_state *atoms[] = { 214f39a520892259bc3ff13b47423fb86cd7714c70aJosé Fonseca &i915_upload_S0S1, 215debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell &i915_upload_S2S4, 216debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell &i915_upload_S5, 217debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell &i915_upload_S6, 218debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell &i915_upload_S7 219debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell}; 220debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 221e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantzstatic void update_immediate(struct i915_context *i915) 222debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell{ 223debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell int i; 224debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell 225951bf8b4a64c9793d10e963889e74fc1659ddb4bBrian Paul for (i = 0; i < ARRAY_SIZE(atoms); i++) 226debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell if (i915->dirty & atoms[i]->dirty) 2272e7a90546d42eb84d4b5b381dc2c709416d07186Jakob Bornecrantz atoms[i]->update(i915); 228debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell} 229e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz 230e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantzstruct i915_tracked_state i915_hw_immediate = { 231e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz "immediate", 232e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz update_immediate, 23305e7f7f4388bde882b7ce74124000a4d435affffZoë Blade ~0 /* all state atoms, because we do internal checking */ 234e694f3fd4865f7e85cf1d4c9fe5789fad399dbc6Jakob Bornecrantz}; 235