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