1fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse/* 2fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * Copyright 2010 Jerome Glisse <glisse@freedesktop.org> 3fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * 4fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * Permission is hereby granted, free of charge, to any person obtaining a 5fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * copy of this software and associated documentation files (the "Software"), 6fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * to deal in the Software without restriction, including without limitation 7fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * on the rights to use, copy, modify, merge, publish, distribute, sub 8fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * license, and/or sell copies of the Software, and to permit persons to whom 9fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * the Software is furnished to do so, subject to the following conditions: 10fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * 11fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * The above copyright notice and this permission notice (including the next 12fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * paragraph) shall be included in all copies or substantial portions of the 13fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * Software. 14fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * 15fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 18fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 19fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 20fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 21fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * USE OR OTHER DEALINGS IN THE SOFTWARE. 22fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * 23fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * Authors: 24fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse * Jerome Glisse 25fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse */ 26fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse#ifndef R600_H 27fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse#define R600_H 28fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse 2947dcfb8dab517e2c92af2f4813b0f5ad200b8b07Marek Olšák#include "../../winsys/radeon/drm/radeon_winsys.h" 30354f76f386afd980e8c1564c0b0502f9768007b5Marek Olšák#include "util/u_double_list.h" 31a52b3338c6e51421e3836ae210cd98d9c1ec337bMarek Olšák#include "util/u_transfer.h" 32fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse 33fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse#define R600_ERR(fmt, args...) \ 341039f36c47bf8c5db93b1d39c912c86fc3b1eb2fVinson Lee fprintf(stderr, "EE %s:%d %s - "fmt, __FILE__, __LINE__, __func__, ##args) 35fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse 3646c19700676e17bfaa0a88346d512449fbeede79Benjamin Franzkestruct winsys_handle; 37fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse 38fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisseenum radeon_family { 39fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_UNKNOWN, 40fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_R600, 41fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_RV610, 42fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_RV630, 43fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_RV670, 44fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_RV620, 45fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_RV635, 46fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_RS780, 47fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_RS880, 48fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_RV770, 49fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_RV730, 50fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_RV710, 51fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_RV740, 52fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_CEDAR, 53fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_REDWOOD, 54fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_JUNIPER, 55fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_CYPRESS, 56fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_HEMLOCK, 570e4c5f63b9023b292b88b2f0d5d0f6154e8ad263Alex Deucher CHIP_PALM, 58414cd5df50435f475d92b02c229453d037369c0fAlex Deucher CHIP_SUMO, 59414cd5df50435f475d92b02c229453d037369c0fAlex Deucher CHIP_SUMO2, 60f54366bcf61a414885abb9f7f47e897598a80859Alex Deucher CHIP_BARTS, 61f54366bcf61a414885abb9f7f47e897598a80859Alex Deucher CHIP_TURKS, 62f54366bcf61a414885abb9f7f47e897598a80859Alex Deucher CHIP_CAICOS, 637779f6d1dffde2c0501e44adc342e52803de08d4Dave Airlie CHIP_CAYMAN, 64b4082f492b4b55df4c636445e47b97d1f1e4b5b2Alex Deucher CHIP_ARUBA, 65fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse CHIP_LAST, 66fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse}; 67fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse 68363dfb83f1ca7f1ab09eec30aeb89732c5ce3e02Jerome Glisseenum chip_class { 69363dfb83f1ca7f1ab09eec30aeb89732c5ce3e02Jerome Glisse R600, 70363dfb83f1ca7f1ab09eec30aeb89732c5ce3e02Jerome Glisse R700, 71363dfb83f1ca7f1ab09eec30aeb89732c5ce3e02Jerome Glisse EVERGREEN, 727779f6d1dffde2c0501e44adc342e52803de08d4Dave Airlie CAYMAN, 73363dfb83f1ca7f1ab09eec30aeb89732c5ce3e02Jerome Glisse}; 74363dfb83f1ca7f1ab09eec30aeb89732c5ce3e02Jerome Glisse 757b3fa038830663de9bceded1b0dd2d64b8cf39c4Dave Airliestruct r600_tiling_info { 767b3fa038830663de9bceded1b0dd2d64b8cf39c4Dave Airlie unsigned num_channels; 777b3fa038830663de9bceded1b0dd2d64b8cf39c4Dave Airlie unsigned num_banks; 787b3fa038830663de9bceded1b0dd2d64b8cf39c4Dave Airlie unsigned group_bytes; 797b3fa038830663de9bceded1b0dd2d64b8cf39c4Dave Airlie}; 807b3fa038830663de9bceded1b0dd2d64b8cf39c4Dave Airlie 816101b6d442b06a347c001fe85848d636ab7df260Marek Olšákstruct r600_resource { 82a52b3338c6e51421e3836ae210cd98d9c1ec337bMarek Olšák struct u_resource b; 832ce783d8ddec1b1fcadc0798af0ebb045bba1cc4Marek Olšák 846101b6d442b06a347c001fe85848d636ab7df260Marek Olšák /* Winsys objects. */ 856101b6d442b06a347c001fe85848d636ab7df260Marek Olšák struct pb_buffer *buf; 866101b6d442b06a347c001fe85848d636ab7df260Marek Olšák struct radeon_winsys_cs_handle *cs_buf; 8793f4e3cb6c1ca303ee1f5c2a2491a8eff33f2633Marek Olšák 8893f4e3cb6c1ca303ee1f5c2a2491a8eff33f2633Marek Olšák /* Resource state. */ 8993f4e3cb6c1ca303ee1f5c2a2491a8eff33f2633Marek Olšák unsigned domains; 906101b6d442b06a347c001fe85848d636ab7df260Marek Olšák}; 91fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse 92fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse#define R600_BLOCK_MAX_BO 32 93fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse#define R600_BLOCK_MAX_REG 128 94fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse 95991dbd71fdcc95e42bc56097d2fef3a7df0e8eaaDave Airlie/* each range covers 9 bits of dword space = 512 dwords = 2k bytes */ 96991dbd71fdcc95e42bc56097d2fef3a7df0e8eaaDave Airlie/* there is a block entry for each register so 512 blocks */ 97991dbd71fdcc95e42bc56097d2fef3a7df0e8eaaDave Airlie/* we have no registers to read/write below 0x8000 (0x2000 in dw space) */ 98991dbd71fdcc95e42bc56097d2fef3a7df0e8eaaDave Airlie/* we use some fake offsets at 0x40000 to do evergreen sampler borders so take 0x42000 as a max bound*/ 99991dbd71fdcc95e42bc56097d2fef3a7df0e8eaaDave Airlie#define RANGE_OFFSET_START 0x8000 100991dbd71fdcc95e42bc56097d2fef3a7df0e8eaaDave Airlie#define HASH_SHIFT 9 101991dbd71fdcc95e42bc56097d2fef3a7df0e8eaaDave Airlie#define NUM_RANGES (0x42000 - RANGE_OFFSET_START) / (4 << HASH_SHIFT) /* 128 << 9 = 64k */ 102991dbd71fdcc95e42bc56097d2fef3a7df0e8eaaDave Airlie 103991dbd71fdcc95e42bc56097d2fef3a7df0e8eaaDave Airlie#define CTX_RANGE_ID(offset) ((((offset - RANGE_OFFSET_START) >> 2) >> HASH_SHIFT) & 255) 104991dbd71fdcc95e42bc56097d2fef3a7df0e8eaaDave Airlie#define CTX_BLOCK_ID(offset) (((offset - RANGE_OFFSET_START) >> 2) & ((1 << HASH_SHIFT) - 1)) 105991dbd71fdcc95e42bc56097d2fef3a7df0e8eaaDave Airlie 106fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glissestruct r600_pipe_reg { 10778293b99b23268e6698f1267aaf40647c17d95a5Marek Olšák uint32_t value; 1084423c79ddf6853d1d4594afda3e1262c1b9af4f5Dave Airlie struct r600_block *block; 1096101b6d442b06a347c001fe85848d636ab7df260Marek Olšák struct r600_resource *bo; 11047dcfb8dab517e2c92af2f4813b0f5ad200b8b07Marek Olšák enum radeon_bo_usage bo_usage; 11178293b99b23268e6698f1267aaf40647c17d95a5Marek Olšák uint32_t id; 112fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse}; 113fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse 114fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glissestruct r600_pipe_state { 115fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse unsigned id; 116fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse unsigned nregs; 117fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse struct r600_pipe_reg regs[R600_BLOCK_MAX_REG]; 118fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse}; 119fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse 120fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse#define R600_BLOCK_STATUS_ENABLED (1 << 0) 121fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse#define R600_BLOCK_STATUS_DIRTY (1 << 1) 122ba78a5a679b3f6b00d0f2070bb1ab6d56443ab16Dave Airlie 123fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glissestruct r600_block_reloc { 1246101b6d442b06a347c001fe85848d636ab7df260Marek Olšák struct r600_resource *bo; 12547dcfb8dab517e2c92af2f4813b0f5ad200b8b07Marek Olšák enum radeon_bo_usage bo_usage; 1262cf3199ee3b0014bc426bc3163dfa279c00eabb3Jerome Glisse unsigned bo_pm4_index; 127fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse}; 128fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse 1295646964b1360883b6254e2ebacc198f43869d36fJerome Glissestruct r600_block { 130ac8a1ebe55b08180945ffaebcff6b3bed336c9ecBas Nieuwenhuizen struct list_head list; 13163184bc8b278ba82f5462798b323774c67a019e6Dave Airlie struct list_head enable_list; 132fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse unsigned status; 133c058067e578e4426f56f9b23e33e3d3fac4562f7Dave Airlie unsigned flags; 134fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse unsigned start_offset; 135fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse unsigned pm4_ndwords; 136fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse unsigned nbo; 13778293b99b23268e6698f1267aaf40647c17d95a5Marek Olšák uint16_t nreg; 13878293b99b23268e6698f1267aaf40647c17d95a5Marek Olšák uint16_t nreg_dirty; 13978293b99b23268e6698f1267aaf40647c17d95a5Marek Olšák uint32_t *reg; 14078293b99b23268e6698f1267aaf40647c17d95a5Marek Olšák uint32_t pm4[R600_BLOCK_MAX_REG]; 141fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse unsigned pm4_bo_index[R600_BLOCK_MAX_REG]; 142fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse struct r600_block_reloc reloc[R600_BLOCK_MAX_BO]; 143fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse}; 144fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse 1455646964b1360883b6254e2ebacc198f43869d36fJerome Glissestruct r600_range { 1465646964b1360883b6254e2ebacc198f43869d36fJerome Glisse struct r600_block **blocks; 147fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse}; 148fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse 149df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšákstruct r600_query_buffer { 150df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšák /* The buffer where query results are stored. */ 151df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšák struct r600_resource *buf; 152ef29bfee031cdab3dbb0f9a79828c4b0d0405991Vadim Girlin /* Offset of the next free result after current query data */ 153ef29bfee031cdab3dbb0f9a79828c4b0d0405991Vadim Girlin unsigned results_end; 154df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšák /* If a query buffer is full, a new buffer is created and the old one 155df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšák * is put in here. When we calculate the result, we sum up the samples 156df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšák * from all buffers. */ 157df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšák struct r600_query_buffer *previous; 158df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšák}; 159df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšák 160df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšákstruct r600_query { 161df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšák /* The query buffer and how many results are in it. */ 162df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšák struct r600_query_buffer buffer; 163df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšák /* The type of query */ 164df00dc3c817771ac5034a44dff2b14cd7759b207Marek Olšák unsigned type; 1651b375f8413d898a18c989c20d0dc16d3b1be33bcMarek Olšák /* Size of the result in memory for both begin_query and end_query, 1661b375f8413d898a18c989c20d0dc16d3b1be33bcMarek Olšák * this can be one or two numbers, or it could even be a size of a structure. */ 167ef29bfee031cdab3dbb0f9a79828c4b0d0405991Vadim Girlin unsigned result_size; 168cb7c6c30d02ab46efc4ed711b2a632de50157347Marek Olšák /* The number of dwords for begin_query or end_query. */ 169cb7c6c30d02ab46efc4ed711b2a632de50157347Marek Olšák unsigned num_cs_dw; 170ca35292a4456fec1c584d40bf9b4197fe733f609Jerome Glisse /* linked list of queries */ 171ca35292a4456fec1c584d40bf9b4197fe733f609Jerome Glisse struct list_head list; 172ca35292a4456fec1c584d40bf9b4197fe733f609Jerome Glisse}; 173ca35292a4456fec1c584d40bf9b4197fe733f609Jerome Glisse 174543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšákstruct r600_so_target { 175543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšák struct pipe_stream_output_target b; 176543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšák 177543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšák /* The buffer where BUFFER_FILLED_SIZE is stored. */ 178543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšák struct r600_resource *filled_size; 1792449695e822421fdcaf1c66dffc12d7d705ea69dMarek Olšák unsigned stride_in_dw; 180543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšák unsigned so_index; 181543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšák}; 182543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšák 1836067a2a67f9a7aab2aee051469bea8af03747a95Fredrik Höglund#define R600_CONTEXT_DRAW_PENDING (1 << 0) 1846067a2a67f9a7aab2aee051469bea8af03747a95Fredrik Höglund#define R600_CONTEXT_DST_CACHES_DIRTY (1 << 1) 1852df399c34bb39122a45bdd5b430b48346542e1cbJerome Glisse#define R600_PARTIAL_FLUSH (1 << 2) 1866048be89697fe27e30ef0f45594daba4e896362cJerome Glisse 187e4340c1908a6a3b09e1a15d5195f6da7d00494d0Marek Olšákstruct r600_context; 188e4340c1908a6a3b09e1a15d5195f6da7d00494d0Marek Olšákstruct r600_screen; 189e4340c1908a6a3b09e1a15d5195f6da7d00494d0Marek Olšák 1906eb94fc3444a300a0419c40cfcf356fdd88bc304Vadim Girlinvoid r600_get_backend_mask(struct r600_context *ctx); 191bc70bcfc6915883bd5c60712b70e9ed7e1d80ea8Marek Olšákint r600_context_init(struct r600_context *ctx); 192fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glissevoid r600_context_fini(struct r600_context *ctx); 1933d3194e93cbfe0fc42dd96218e8e999f5ccfe726Tom Stellardvoid r600_context_pipe_state_emit(struct r600_context *ctx, struct r600_pipe_state *state, unsigned pkt_flags); 194fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glissevoid r600_context_pipe_state_set(struct r600_context *ctx, struct r600_pipe_state *state); 195e2e1dc9e66ff348caa97b7b35e558d75c6cc6899Marek Olšákvoid r600_context_flush(struct r600_context *ctx, unsigned flags); 196fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse 1976101b6d442b06a347c001fe85848d636ab7df260Marek Olšákvoid r600_context_emit_fence(struct r600_context *ctx, struct r600_resource *fence, 198948e1eb8e9c166ad5b74abc630d0760768ce78c9Fredrik Höglund unsigned offset, unsigned value); 1990813e58a3e41faf6f2072d034dfdc6198a3a1feeMarek Olšákvoid r600_inval_shader_cache(struct r600_context *ctx); 2000813e58a3e41faf6f2072d034dfdc6198a3a1feeMarek Olšákvoid r600_inval_texture_cache(struct r600_context *ctx); 2010813e58a3e41faf6f2072d034dfdc6198a3a1feeMarek Olšákvoid r600_inval_vertex_cache(struct r600_context *ctx); 2020813e58a3e41faf6f2072d034dfdc6198a3a1feeMarek Olšákvoid r600_flush_framebuffer(struct r600_context *ctx, bool flush_now); 203ca35292a4456fec1c584d40bf9b4197fe733f609Jerome Glisse 204543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšákvoid r600_context_streamout_begin(struct r600_context *ctx); 205543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšákvoid r600_context_streamout_end(struct r600_context *ctx); 2063b0467192057cc561b6d495d6445b2ed04fc3ebfMarek Olšákvoid r600_need_cs_space(struct r600_context *ctx, unsigned num_dw, boolean count_draw_in); 207e00e1586dd94c1bbcd1ecfd9649fde9281be1977Tom Stellardvoid r600_context_block_emit_dirty(struct r600_context *ctx, struct r600_block *block, unsigned pkt_flags); 208543b2331d7b45a29ccd3530daa2389e87e65d89bMarek Olšák 209bc70bcfc6915883bd5c60712b70e9ed7e1d80ea8Marek Olšákint evergreen_context_init(struct r600_context *ctx); 2107eab5ef425e1e08c0dc0ea8d161c33610a91586fDave Airlie 21162b0323cf6af90aa2be89ec76ec3693213b0de5eDave Airlievoid _r600_pipe_state_add_reg_bo(struct r600_context *ctx, 21262b0323cf6af90aa2be89ec76ec3693213b0de5eDave Airlie struct r600_pipe_state *state, 21362b0323cf6af90aa2be89ec76ec3693213b0de5eDave Airlie uint32_t offset, uint32_t value, 21462b0323cf6af90aa2be89ec76ec3693213b0de5eDave Airlie uint32_t range_id, uint32_t block_id, 21562b0323cf6af90aa2be89ec76ec3693213b0de5eDave Airlie struct r600_resource *bo, 21662b0323cf6af90aa2be89ec76ec3693213b0de5eDave Airlie enum radeon_bo_usage usage); 21762b0323cf6af90aa2be89ec76ec3693213b0de5eDave Airlie 21842502b6f03230b828121f60143190c39bc5c8ddaDave Airlievoid _r600_pipe_state_add_reg(struct r600_context *ctx, 21942502b6f03230b828121f60143190c39bc5c8ddaDave Airlie struct r600_pipe_state *state, 22078293b99b23268e6698f1267aaf40647c17d95a5Marek Olšák uint32_t offset, uint32_t value, 22162b0323cf6af90aa2be89ec76ec3693213b0de5eDave Airlie uint32_t range_id, uint32_t block_id); 2227f6672f6a737bc1c47e36c9567bd6d908855ce4dDave Airlie 22351d0892ee2daaa442a48abff2329e1485dd337e8Dave Airlievoid r600_pipe_state_add_reg_noblock(struct r600_pipe_state *state, 22478293b99b23268e6698f1267aaf40647c17d95a5Marek Olšák uint32_t offset, uint32_t value, 2256101b6d442b06a347c001fe85848d636ab7df260Marek Olšák struct r600_resource *bo, 22647dcfb8dab517e2c92af2f4813b0f5ad200b8b07Marek Olšák enum radeon_bo_usage usage); 22747dcfb8dab517e2c92af2f4813b0f5ad200b8b07Marek Olšák 22862b0323cf6af90aa2be89ec76ec3693213b0de5eDave Airlie#define r600_pipe_state_add_reg_bo(state, offset, value, bo, usage) _r600_pipe_state_add_reg_bo(rctx, state, offset, value, CTX_RANGE_ID(offset), CTX_BLOCK_ID(offset), bo, usage) 22962b0323cf6af90aa2be89ec76ec3693213b0de5eDave Airlie#define r600_pipe_state_add_reg(state, offset, value) _r600_pipe_state_add_reg(rctx, state, offset, value, CTX_RANGE_ID(offset), CTX_BLOCK_ID(offset)) 2307f6672f6a737bc1c47e36c9567bd6d908855ce4dDave Airlie 231573758fd094431c8b3220786cea28dfdb4cfad1cDave Airliestatic inline void r600_pipe_state_mod_reg(struct r600_pipe_state *state, 23278293b99b23268e6698f1267aaf40647c17d95a5Marek Olšák uint32_t value) 233573758fd094431c8b3220786cea28dfdb4cfad1cDave Airlie{ 234573758fd094431c8b3220786cea28dfdb4cfad1cDave Airlie state->regs[state->nregs].value = value; 235573758fd094431c8b3220786cea28dfdb4cfad1cDave Airlie state->nregs++; 236573758fd094431c8b3220786cea28dfdb4cfad1cDave Airlie} 237573758fd094431c8b3220786cea28dfdb4cfad1cDave Airlie 238fd266ec62ca772a8551d2d7922d718d9d84bdf07Jerome Glisse#endif 239