1bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez/*
2bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * Copyright (C) 2009 Francisco Jerez.
3bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * All Rights Reserved.
4bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez *
5bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * Permission is hereby granted, free of charge, to any person obtaining
6bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * a copy of this software and associated documentation files (the
7bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * "Software"), to deal in the Software without restriction, including
8bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * without limitation the rights to use, copy, modify, merge, publish,
9bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * distribute, sublicense, and/or sell copies of the Software, and to
10bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * permit persons to whom the Software is furnished to do so, subject to
11bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * the following conditions:
12bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez *
13bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * The above copyright notice and this permission notice (including the
14bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * next paragraph) shall be included in all copies or substantial
15bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * portions of the Software.
16bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez *
17bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
21bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez *
25bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez */
26bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez
27bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez#ifndef __NOUVEAU_TEXTURE_H__
28bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez#define __NOUVEAU_TEXTURE_H__
29bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez
306e0f9001fe3fb191c2928bd09aa9e9d05ddf4ea9Brian Paul#include "swrast/s_context.h"
316e0f9001fe3fb191c2928bd09aa9e9d05ddf4ea9Brian Paul
32bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerezstruct nouveau_teximage {
336e0f9001fe3fb191c2928bd09aa9e9d05ddf4ea9Brian Paul	struct swrast_texture_image base;
34bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez	struct nouveau_surface surface;
35088145f95086aa640e20b5436854bb68ca3e4934Francisco Jerez	struct {
36088145f95086aa640e20b5436854bb68ca3e4934Francisco Jerez		struct nouveau_surface surface;
37088145f95086aa640e20b5436854bb68ca3e4934Francisco Jerez		int x, y;
38088145f95086aa640e20b5436854bb68ca3e4934Francisco Jerez	} transfer;
39bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez};
40bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez#define to_nouveau_teximage(x) ((struct nouveau_teximage *)(x))
41bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez
42bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerezstruct nouveau_texture {
43bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez	struct gl_texture_object base;
44bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez	struct nouveau_surface surfaces[MAX_TEXTURE_LEVELS];
45bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez	GLboolean dirty;
46bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez};
47bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez#define to_nouveau_texture(x) ((struct nouveau_texture *)(x))
48bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez
49bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez#define texture_dirty(t) \
507f1f4c14eced51bf3f43764e2864693ba1c4a6d5Francisco Jerez	to_nouveau_texture(t)->dirty = GL_TRUE
51bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez
524a7e9b5df453055ed6eedce1ea5c1d4a2f810fa7Francisco Jerezvoid
534a7e9b5df453055ed6eedce1ea5c1d4a2f810fa7Francisco Jereznouveau_set_texbuffer(__DRIcontext *dri_ctx,
544a7e9b5df453055ed6eedce1ea5c1d4a2f810fa7Francisco Jerez		      GLint target, GLint format,
554a7e9b5df453055ed6eedce1ea5c1d4a2f810fa7Francisco Jerez		      __DRIdrawable *draw);
564a7e9b5df453055ed6eedce1ea5c1d4a2f810fa7Francisco Jerez
57323e6bbb052f37f91c7340e16c2352bb780a43d8Francisco JerezGLboolean
58f9995b30756140724f41daf963fa06167912be7fKristian Høgsbergnouveau_texture_validate(struct gl_context *ctx, struct gl_texture_object *t);
59bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez
60323e6bbb052f37f91c7340e16c2352bb780a43d8Francisco Jerezvoid
61f9995b30756140724f41daf963fa06167912be7fKristian Høgsbergnouveau_texture_reallocate(struct gl_context *ctx, struct gl_texture_object *t);
62323e6bbb052f37f91c7340e16c2352bb780a43d8Francisco Jerez
63bfb5dc68fcc9f5dee71f66d9499b8bdcde9627eaFrancisco Jerez#endif
64