15df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/**************************************************************************
25df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
35df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulCopyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
45df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul                     VA Linux Systems Inc., Fremont, California.
55df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
65df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulAll Rights Reserved.
75df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
85df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulPermission is hereby granted, free of charge, to any person obtaining
95df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paula copy of this software and associated documentation files (the
105df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul"Software"), to deal in the Software without restriction, including
115df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulwithout limitation the rights to use, copy, modify, merge, publish,
125df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Pauldistribute, sublicense, and/or sell copies of the Software, and to
135df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulpermit persons to whom the Software is furnished to do so, subject to
145df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulthe following conditions:
155df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
165df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulThe above copyright notice and this permission notice (including the
175df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulnext paragraph) shall be included in all copies or substantial
185df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulportions of the Software.
195df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
205df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
215df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
225df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
235df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulIN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
265df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
275df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
285df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul**************************************************************************/
295df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/*
315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * Authors:
325df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul *   Kevin E. Martin <martin@valinux.com>
335df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul *   Gareth Hughes <gareth@valinux.com>
345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul *
355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */
365df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
375df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#ifndef __RADEON_TEX_H__
385df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define __RADEON_TEX_H__
395df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
40924bf0d8d3db28941efa97911bdcdd01a3f33b7cDave Airlieextern void radeonSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv);
412aa097f963d7be12b538469f61214b8ddaa535fbDave Airlieextern void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_format,
424a2cb696cc3b9e151ea902fc976ee025fb614309Dave Airlie			       __DRIdrawable *dPriv);
434a2cb696cc3b9e151ea902fc976ee025fb614309Dave Airlie
44f9995b30756140724f41daf963fa06167912be7fKristian Høgsbergextern void radeonUpdateTextureState( struct gl_context *ctx );
455df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
464637235183b80963536f2364e4d50fcb894886ddDave Airlieextern int radeonUploadTexImages( r100ContextPtr rmesa, radeonTexObjPtr t,
475df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul				  GLuint face );
485df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
494637235183b80963536f2364e4d50fcb894886ddDave Airlieextern void radeonDestroyTexObj( r100ContextPtr rmesa, radeonTexObjPtr t );
506f6bd8aedcf2b2f0e1ca9a1fa7ded1cb1f5a88edPauli Nieminenextern void radeonTexUpdateParameters(struct gl_context *ctx, GLuint unit);
515df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
525170d2452beafc4a6f5859792d6c6b267c549e46Maciej Cencoraextern void radeonInitTextureFuncs( radeonContextPtr radeon, struct dd_function_table *functions );
535df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul
54d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheideggerstruct tx_table {
55d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   GLuint format, filter;
56d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger};
57d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger
58d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger/* XXX verify this table against MESA_FORMAT_x values */
59d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheideggerstatic const struct tx_table tx_table[] =
60d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger{
61d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_NONE ] = { 0xffffffff, 0 },
62d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_A8B8G8R8_UNORM ] = { RADEON_TXFORMAT_RGBA8888 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
63d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_R8G8B8A8_UNORM ] = { RADEON_TXFORMAT_RGBA8888 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
64d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_B8G8R8A8_UNORM ] = { RADEON_TXFORMAT_ARGB8888 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
65d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_A8R8G8B8_UNORM ] = { RADEON_TXFORMAT_ARGB8888 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
66983614dbede7b94cba1bad9f3e8627fc5e14bb91Roland Scheidegger   [ MESA_FORMAT_B8G8R8X8_UNORM ] = { RADEON_TXFORMAT_ARGB8888, 0 },
67983614dbede7b94cba1bad9f3e8627fc5e14bb91Roland Scheidegger   [ MESA_FORMAT_X8R8G8B8_UNORM ] = { RADEON_TXFORMAT_ARGB8888, 0 },
68d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_BGR_UNORM8 ] = { RADEON_TXFORMAT_ARGB8888, 0 },
69d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_B5G6R5_UNORM ] = { RADEON_TXFORMAT_RGB565, 0 },
70d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_R5G6B5_UNORM ] = { RADEON_TXFORMAT_RGB565, 0 },
71d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_B4G4R4A4_UNORM ] = { RADEON_TXFORMAT_ARGB4444 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
72d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_A4R4G4B4_UNORM ] = { RADEON_TXFORMAT_ARGB4444 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
73d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_B5G5R5A1_UNORM ] = { RADEON_TXFORMAT_ARGB1555 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
74d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_A1R5G5B5_UNORM ] = { RADEON_TXFORMAT_ARGB1555 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
75d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_L8A8_UNORM ] = { RADEON_TXFORMAT_AI88 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
76d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_A8L8_UNORM ] = { RADEON_TXFORMAT_AI88 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
77d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_A_UNORM8 ] = { RADEON_TXFORMAT_I8 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
78d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_L_UNORM8 ] = { RADEON_TXFORMAT_I8, 0 },
79d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_I_UNORM8 ] = { RADEON_TXFORMAT_I8 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
80d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_YCBCR ] = { RADEON_TXFORMAT_YVYU422, RADEON_YUV_TO_RGB },
81d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_YCBCR_REV ] = { RADEON_TXFORMAT_VYUY422, RADEON_YUV_TO_RGB },
82d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_RGB_FXT1 ] = { 0xffffffff, 0 },
83d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_RGBA_FXT1 ] = { 0xffffffff, 0 },
84d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_RGB_DXT1 ] = { RADEON_TXFORMAT_DXT1, 0 },
85d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_RGBA_DXT1 ] = { RADEON_TXFORMAT_DXT1 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
86d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_RGBA_DXT3 ] = { RADEON_TXFORMAT_DXT23 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
87d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger   [ MESA_FORMAT_RGBA_DXT5 ] = { RADEON_TXFORMAT_DXT45 | RADEON_TXFORMAT_ALPHA_IN_MAP, 0 },
88d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger};
89d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger
90d21320f6258b2e1780a15c1ca718963d8a15ca18Roland Scheidegger
915df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#endif /* __RADEON_TEX_H__ */
92