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