nv30_context.h revision c727fa6dbf5a9fca5fc94de06c309f54402449d1
16acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifndef __NV30_CONTEXT_H__
26acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define __NV30_CONTEXT_H__
36acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
46acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "pipe/p_context.h"
56acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "pipe/p_defines.h"
66acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "pipe/p_state.h"
76acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "pipe/p_compiler.h"
86acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
96acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "util/u_memory.h"
106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "util/u_math.h"
116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "draw/draw_vertex.h"
136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "nouveau/nouveau_winsys.h"
156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "nouveau/nouveau_gldefs.h"
166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "nouveau/nouveau_context.h"
176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NOUVEAU_PUSH_CONTEXT(ctx)                                              \
196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nv30_screen *ctx = nv30->screen
206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "nouveau/nouveau_push.h"
216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "nouveau/nouveau_stateobj.h"
226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "nv30_state.h"
246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NOUVEAU_ERR(fmt, args...) \
266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	fprintf(stderr, "%s:%d -  "fmt, __func__, __LINE__, ##args);
276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NOUVEAU_MSG(fmt, args...) \
286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	fprintf(stderr, "nouveau: "fmt, ##args);
296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennenum nv30_state_index {
316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FB = 0,
326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_VIEWPORT = 1,
336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_BLEND = 2,
346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_RAST = 3,
356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_ZSA = 4,
366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_BCOL = 5,
376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_CLIP = 6,
386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_SCISSOR = 7,
396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_STIPPLE = 8,
406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGPROG = 9,
416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_VERTPROG = 10,
426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX0 = 11,
436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX1 = 12,
446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX2 = 13,
456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX3 = 14,
466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX4 = 15,
476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX5 = 16,
486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX6 = 17,
496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX7 = 18,
506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX8 = 19,
516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX9 = 20,
526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX10 = 21,
536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX11 = 22,
546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX12 = 23,
556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX13 = 24,
566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX14 = 25,
576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_FRAGTEX15 = 26,
586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_VERTTEX0 = 27,
596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_VERTTEX1 = 28,
606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_VERTTEX2 = 29,
616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_VERTTEX3 = 30,
626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_VTXBUF = 31,
636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_VTXFMT = 32,
646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_VTXATTR = 33,
656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	NV30_STATE_MAX = 34
666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn};
676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "nv30_screen.h"
696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NV30_NEW_BLEND		(1 <<  0)
716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NV30_NEW_RAST		(1 <<  1)
726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NV30_NEW_ZSA		(1 <<  2)
736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NV30_NEW_SAMPLER	(1 <<  3)
746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NV30_NEW_FB		(1 <<  4)
756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NV30_NEW_STIPPLE	(1 <<  5)
766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NV30_NEW_SCISSOR	(1 <<  6)
776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NV30_NEW_VIEWPORT	(1 <<  7)
786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NV30_NEW_BCOL		(1 <<  8)
796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NV30_NEW_VERTPROG	(1 <<  9)
806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NV30_NEW_FRAGPROG	(1 << 10)
816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NV30_NEW_ARRAYS		(1 << 11)
826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define NV30_NEW_UCP		(1 << 12)
836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstruct nv30_rasterizer_state {
856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct pipe_rasterizer_state pipe;
866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nouveau_stateobj *so;
876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn};
886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstruct nv30_zsa_state {
906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct pipe_depth_stencil_alpha_state pipe;
916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nouveau_stateobj *so;
926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn};
936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstruct nv30_blend_state {
956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct pipe_blend_state pipe;
966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nouveau_stateobj *so;
976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn};
986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstruct nv30_state {
1016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned scissor_enabled;
1026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned stipple_enabled;
1036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned viewport_bypass;
1046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned fp_samplers;
1056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	uint64_t dirty;
1076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nouveau_stateobj *hw[NV30_STATE_MAX];
1086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn};
1096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstruct nv30_context {
1116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct pipe_context pipe;
1126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nouveau_winsys *nvws;
1146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nv30_screen *screen;
1156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned pctx_id;
1166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct draw_context *draw;
1186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	/* HW state derived from pipe states */
1206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nv30_state state;
1216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	/* Context state */
1236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned dirty;
1246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct pipe_scissor_state scissor;
1256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned stipple[32];
1266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nv30_vertex_program *vertprog;
1276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nv30_fragment_program *fragprog;
1286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct pipe_buffer *constbuf[PIPE_SHADER_TYPES];
1296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned constbuf_nr[PIPE_SHADER_TYPES];
1306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nv30_rasterizer_state *rasterizer;
1316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nv30_zsa_state *zsa;
1326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nv30_blend_state *blend;
1336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct pipe_blend_color blend_colour;
1346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct pipe_viewport_state viewport;
1356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct pipe_framebuffer_state framebuffer;
1366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct pipe_buffer *idxbuf;
1376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned idxbuf_format;
1386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nv30_sampler_state *tex_sampler[PIPE_MAX_SAMPLERS];
1396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct nv30_miptree *tex_miptree[PIPE_MAX_SAMPLERS];
1406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned nr_samplers;
1416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned nr_textures;
1426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned dirty_samplers;
1436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct pipe_vertex_buffer vtxbuf[PIPE_MAX_ATTRIBS];
1446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned vtxbuf_nr;
1456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct pipe_vertex_element vtxelt[PIPE_MAX_ATTRIBS];
1466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	unsigned vtxelt_nr;
1476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn};
1486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstatic INLINE struct nv30_context *
1506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennnv30_context(struct pipe_context *pipe)
1516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
1526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	return (struct nv30_context *)pipe;
1536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
1546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstruct nv30_state_entry {
1566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	boolean (*validate)(struct nv30_context *nv30);
1576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	struct {
1586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn		unsigned pipe;
1596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn		unsigned hw;
1606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn	} dirty;
1616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn};
1626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern void nv30_init_state_functions(struct nv30_context *nv30);
1646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern void nv30_init_surface_functions(struct nv30_context *nv30);
1656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern void nv30_init_query_functions(struct nv30_context *nv30);
1666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern void nv30_screen_init_miptree_functions(struct pipe_screen *pscreen);
1686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* nv30_draw.c */
1706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern struct draw_stage *nv30_draw_render_stage(struct nv30_context *nv30);
1716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* nv30_vertprog.c */
1736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern void nv30_vertprog_destroy(struct nv30_context *,
1746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn				  struct nv30_vertex_program *);
1756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* nv30_fragprog.c */
1776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern void nv30_fragprog_destroy(struct nv30_context *,
1786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn				  struct nv30_fragment_program *);
1796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* nv30_fragtex.c */
1816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern void nv30_fragtex_bind(struct nv30_context *);
1826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* nv30_state.c and friends */
1846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern boolean nv30_state_validate(struct nv30_context *nv30);
1856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern void nv30_state_emit(struct nv30_context *nv30);
1866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern void nv30_state_flush_notify(struct nouveau_channel *chan);
1876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern struct nv30_state_entry nv30_state_rasterizer;
1886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern struct nv30_state_entry nv30_state_scissor;
1896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern struct nv30_state_entry nv30_state_stipple;
1906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern struct nv30_state_entry nv30_state_fragprog;
1916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern struct nv30_state_entry nv30_state_vertprog;
1926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern struct nv30_state_entry nv30_state_blend;
1936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern struct nv30_state_entry nv30_state_blend_colour;
1946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern struct nv30_state_entry nv30_state_zsa;
1956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern struct nv30_state_entry nv30_state_viewport;
1966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern struct nv30_state_entry nv30_state_framebuffer;
1976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern struct nv30_state_entry nv30_state_fragtex;
1986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern struct nv30_state_entry nv30_state_vbo;
1996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* nv30_vbo.c */
2016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern void nv30_draw_arrays(struct pipe_context *, unsigned mode,
2026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn				unsigned start, unsigned count);
2036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern void nv30_draw_elements(struct pipe_context *pipe,
2046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn				  struct pipe_buffer *indexBuffer,
2056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn				  unsigned indexSize,
2066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn				  unsigned mode, unsigned start,
2076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn				  unsigned count);
2086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* nv30_clear.c */
2106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern void nv30_clear(struct pipe_context *pipe, unsigned buffers,
2116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn		       const float *rgba, double depth, unsigned stencil);
2126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif
2146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn