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