16173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark/* -*- mode: C; c-file-style: "k&r"; tab-width 4; indent-tabs-mode: t; -*- */ 26173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark 36173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark/* 46173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * Copyright (C) 2012 Rob Clark <robclark@freedesktop.org> 56173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * 66173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * Permission is hereby granted, free of charge, to any person obtaining a 76173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * copy of this software and associated documentation files (the "Software"), 86173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * to deal in the Software without restriction, including without limitation 96173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * the rights to use, copy, modify, merge, publish, distribute, sublicense, 106173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * and/or sell copies of the Software, and to permit persons to whom the 116173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * Software is furnished to do so, subject to the following conditions: 126173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * 136173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * The above copyright notice and this permission notice (including the next 146173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * paragraph) shall be included in all copies or substantial portions of the 156173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * Software. 166173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * 176173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 186173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 196173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 206173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 216173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 226173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 236173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * SOFTWARE. 246173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * 256173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * Authors: 266173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark * Rob Clark <robclark@freedesktop.org> 276173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark */ 286173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark 296173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark#ifndef FREEDRENO_GMEM_H_ 306173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark#define FREEDRENO_GMEM_H_ 316173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark 326173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark#include "pipe/p_context.h" 336173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark 34a221f8d9ebb4ef43a83ef638458d1338dfe1e517Rob Clark#include "freedreno_util.h" 35a221f8d9ebb4ef43a83ef638458d1338dfe1e517Rob Clark 36be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark/* per-pipe configuration for hw binning: */ 37be01d7a905d827c3c0c222cab2430c6d4575429aRob Clarkstruct fd_vsc_pipe { 38be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark struct fd_bo *bo; 39be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark uint8_t x, y, w, h; /* VSC_PIPE[p].CONFIG */ 40be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark}; 41be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark 42be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark/* per-tile configuration for hw binning: */ 43be01d7a905d827c3c0c222cab2430c6d4575429aRob Clarkstruct fd_tile { 44be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark uint8_t p; /* index into vsc_pipe[]s */ 45be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark uint8_t n; /* slot within pipe */ 46be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark uint16_t bin_w, bin_h; 47be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark uint16_t xoff, yoff; 48be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark}; 49be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark 50be01d7a905d827c3c0c222cab2430c6d4575429aRob Clarkstruct fd_gmem_stateobj { 51be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark struct pipe_scissor_state scissor; 52a221f8d9ebb4ef43a83ef638458d1338dfe1e517Rob Clark uint32_t cbuf_base[MAX_RENDER_TARGETS]; 539fc3f472784b2ba53655b715d602268bef5bf12eIlia Mirkin uint32_t zsbuf_base[2]; 54a221f8d9ebb4ef43a83ef638458d1338dfe1e517Rob Clark uint8_t cbuf_cpp[MAX_RENDER_TARGETS]; 559fc3f472784b2ba53655b715d602268bef5bf12eIlia Mirkin uint8_t zsbuf_cpp[2]; 56be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark uint16_t bin_h, nbins_y; 57be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark uint16_t bin_w, nbins_x; 584de1e5eddcb76e377cffbb7f3bd87a88a575dae2Rob Clark uint16_t minx, miny; 59be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark uint16_t width, height; 60be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark}; 61be01d7a905d827c3c0c222cab2430c6d4575429aRob Clark 62f02a64dbdd2ec147167ad60357bd46d8d964290aRob Clarkstruct fd_batch; 6301b757e2b0fb97a146b0ef278b449cecab0d15e8Rob Clark 64f02a64dbdd2ec147167ad60357bd46d8d964290aRob Clarkvoid fd_gmem_render_tiles(struct fd_batch *batch); 65534917495dca07bb63dbec49450c706fce36f176Rob Clarkvoid fd_gmem_render_noop(struct fd_batch *batch); 6601b757e2b0fb97a146b0ef278b449cecab0d15e8Rob Clark 67f02a64dbdd2ec147167ad60357bd46d8d964290aRob Clarkbool fd_gmem_needs_restore(struct fd_batch *batch, struct fd_tile *tile, 6801b757e2b0fb97a146b0ef278b449cecab0d15e8Rob Clark uint32_t buffers); 696173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark 706173cc19c45d92ef0b7bc6aa008aa89bb29abbdaRob Clark#endif /* FREEDRENO_GMEM_H_ */ 71