#ifndef __NV50_TEXTURE_H__ #define __NV50_TEXTURE_H__ /* It'd be really nice to have these in nouveau_class.h generated by * renouveau like the rest of the object header - but not sure it can * handle non-object stuff nicely - need to look into it. */ /* Texture image control block */ #define NV50TIC_0_0_SWIZZLE_MASK 0x3ffc0000 #define NV50TIC_0_0_MAPA_MASK 0x38000000 #define NV50TIC_0_0_MAPA_SHIFT 27 #define NV50TIC_0_0_MAPA_ZERO 0x00000000 #define NV50TIC_0_0_MAPA_C0 0x10000000 #define NV50TIC_0_0_MAPA_C1 0x18000000 #define NV50TIC_0_0_MAPA_C2 0x20000000 #define NV50TIC_0_0_MAPA_C3 0x28000000 #define NV50TIC_0_0_MAPA_ONE 0x38000000 #define NV50TIC_0_0_MAPB_MASK 0x07000000 #define NV50TIC_0_0_MAPB_SHIFT 24 #define NV50TIC_0_0_MAPB_ZERO 0x00000000 #define NV50TIC_0_0_MAPB_C0 0x02000000 #define NV50TIC_0_0_MAPB_C1 0x03000000 #define NV50TIC_0_0_MAPB_C2 0x04000000 #define NV50TIC_0_0_MAPB_C3 0x05000000 #define NV50TIC_0_0_MAPB_ONE 0x07000000 #define NV50TIC_0_0_MAPG_MASK 0x00e00000 #define NV50TIC_0_0_MAPG_SHIFT 21 #define NV50TIC_0_0_MAPG_ZERO 0x00000000 #define NV50TIC_0_0_MAPG_C0 0x00400000 #define NV50TIC_0_0_MAPG_C1 0x00600000 #define NV50TIC_0_0_MAPG_C2 0x00800000 #define NV50TIC_0_0_MAPG_C3 0x00a00000 #define NV50TIC_0_0_MAPG_ONE 0x00e00000 #define NV50TIC_0_0_MAPR_MASK 0x001c0000 #define NV50TIC_0_0_MAPR_SHIFT 18 #define NV50TIC_0_0_MAPR_ZERO 0x00000000 #define NV50TIC_0_0_MAPR_C0 0x00080000 #define NV50TIC_0_0_MAPR_C1 0x000c0000 #define NV50TIC_0_0_MAPR_C2 0x00100000 #define NV50TIC_0_0_MAPR_C3 0x00140000 #define NV50TIC_0_0_MAPR_ONE 0x001c0000 #define NV50TIC_0_0_TYPEA_MASK 0x00038000 #define NV50TIC_0_0_TYPEA_UNORM 0x00010000 #define NV50TIC_0_0_TYPEA_SNORM 0x00008000 #define NV50TIC_0_0_TYPEA_SINT 0x00018000 #define NV50TIC_0_0_TYPEA_UINT 0x00020000 #define NV50TIC_0_0_TYPEA_SSCALED 0x00028000 #define NV50TIC_0_0_TYPEA_USCALED 0x00030000 #define NV50TIC_0_0_TYPEA_FLOAT 0x00038000 #define NV50TIC_0_0_TYPEB_MASK 0x00007000 #define NV50TIC_0_0_TYPEB_UNORM 0x00002000 #define NV50TIC_0_0_TYPEB_SNORM 0x00001000 #define NV50TIC_0_0_TYPEB_SINT 0x00003000 #define NV50TIC_0_0_TYPEB_UINT 0x00004000 #define NV50TIC_0_0_TYPEB_SSCALED 0x00005000 #define NV50TIC_0_0_TYPEB_USCALED 0x00006000 #define NV50TIC_0_0_TYPEB_FLOAT 0x00007000 #define NV50TIC_0_0_TYPEG_MASK 0x00000e00 #define NV50TIC_0_0_TYPEG_UNORM 0x00000400 #define NV50TIC_0_0_TYPEG_SNORM 0x00000200 #define NV50TIC_0_0_TYPEG_SINT 0x00000600 #define NV50TIC_0_0_TYPEG_UINT 0x00000800 #define NV50TIC_0_0_TYPEG_SSCALED 0x00000a00 #define NV50TIC_0_0_TYPEG_USCALED 0x00000c00 #define NV50TIC_0_0_TYPEG_FLOAT 0x00000e00 #define NV50TIC_0_0_TYPER_MASK 0x000001c0 #define NV50TIC_0_0_TYPER_UNORM 0x00000080 #define NV50TIC_0_0_TYPER_SNORM 0x00000040 #define NV50TIC_0_0_TYPER_SINT 0x000000c0 #define NV50TIC_0_0_TYPER_UINT 0x00000100 #define NV50TIC_0_0_TYPER_SSCALED 0x00000140 #define NV50TIC_0_0_TYPER_USCALED 0x00000180 #define NV50TIC_0_0_TYPER_FLOAT 0x000001c0 #define NV50TIC_0_0_FMT_MASK 0x0000003f #define NV50TIC_0_0_FMT_32_32_32_32 0x00000001 #define NV50TIC_0_0_FMT_16_16_16_16 0x00000003 #define NV50TIC_0_0_FMT_32_32 0x00000004 #define NV50TIC_0_0_FMT_8_8_8_8 0x00000008 #define NV50TIC_0_0_FMT_2_10_10_10 0x00000009 #define NV50TIC_0_0_FMT_16_16 0x0000000c #define NV50TIC_0_0_FMT_32 0x0000000f #define NV50TIC_0_0_FMT_4_4_4_4 0x00000012 /* #define NV50TIC_0_0_FMT_1_5_5_5 0x00000013 */ #define NV50TIC_0_0_FMT_1_5_5_5 0x00000014 #define NV50TIC_0_0_FMT_5_6_5 0x00000015 #define NV50TIC_0_0_FMT_8_8 0x00000018 #define NV50TIC_0_0_FMT_16 0x0000001b #define NV50TIC_0_0_FMT_8 0x0000001d #define NV50TIC_0_0_FMT_5_9_9_9 0x00000020 #define NV50TIC_0_0_FMT_10_11_11 0x00000021 #define NV50TIC_0_0_FMT_DXT1 0x00000024 #define NV50TIC_0_0_FMT_DXT3 0x00000025 #define NV50TIC_0_0_FMT_DXT5 0x00000026 #define NV50TIC_0_0_FMT_RGTC1 0x00000027 #define NV50TIC_0_0_FMT_RGTC2 0x00000028 #define NV50TIC_0_0_FMT_24_8 0x00000029 #define NV50TIC_0_0_FMT_8_24 0x0000002a #define NV50TIC_0_0_FMT_32_DEPTH 0x0000002f #define NV50TIC_0_0_FMT_32_8 0x00000030 #define NV50TIC_0_0_FMT_16_DEPTH 0x0000003a #define NV50TIC_0_1_OFFSET_LOW_MASK 0xffffffff #define NV50TIC_0_1_OFFSET_LOW_SHIFT 0 #define NV50TIC_0_2_COLORSPACE_SRGB 0x00000400 #define NV50TIC_0_2_TARGET_1D 0x00000000 #define NV50TIC_0_2_TARGET_2D 0x00004000 #define NV50TIC_0_2_TARGET_3D 0x00008000 #define NV50TIC_0_2_TARGET_CUBE 0x0000c000 #define NV50TIC_0_2_TARGET_1D_ARRAY 0x00010000 #define NV50TIC_0_2_TARGET_2D_ARRAY 0x00014000 #define NV50TIC_0_2_TARGET_BUFFER 0x00018000 #define NV50TIC_0_2_TARGET_RECT 0x0001c000 /* #define NV50TIC_0_0_TILE_MODE_LINEAR 0x00040000 */ #define NV50TIC_0_2_TILE_MODE_Y_MASK 0x01c00000 #define NV50TIC_0_2_TILE_MODE_Y_SHIFT 22 #define NV50TIC_0_2_TILE_MODE_Z_MASK 0x0e000000 #define NV50TIC_0_2_TILE_MODE_Z_SHIFT 25 #define NV50TIC_0_2_NORMALIZED_COORDS 0x80000000 #define NV50TIC_0_3_UNKNOWN_MASK 0xffffffff #define NV50TIC_0_4_WIDTH_MASK 0x0000ffff #define NV50TIC_0_4_WIDTH_SHIFT 0 #define NV50TIC_0_5_LAST_LEVEL_MASK 0xf0000000 #define NV50TIC_0_5_LAST_LEVEL_SHIFT 28 #define NV50TIC_0_5_DEPTH_MASK 0x0fff0000 #define NV50TIC_0_5_DEPTH_SHIFT 16 #define NV50TIC_0_5_HEIGHT_MASK 0x0000ffff #define NV50TIC_0_5_HEIGHT_SHIFT 0 #define NV50TIC_0_6_UNKNOWN_MASK 0xffffffff #define NV50TIC_0_7_BASE_LEVEL_MASK 0x0000000f #define NV50TIC_0_7_BASE_LEVEL_SHIFT 0 #define NV50TIC_0_7_MAX_LEVEL_MASK 0x000000f0 #define NV50TIC_0_7_MAX_LEVEL_SHIFT 4 /* Texture sampler control block */ #define NV50TSC_1_0_WRAPS_MASK 0x00000007 #define NV50TSC_1_0_WRAPS_REPEAT 0x00000000 #define NV50TSC_1_0_WRAPS_MIRROR_REPEAT 0x00000001 #define NV50TSC_1_0_WRAPS_CLAMP_TO_EDGE 0x00000002 #define NV50TSC_1_0_WRAPS_CLAMP_TO_BORDER 0x00000003 #define NV50TSC_1_0_WRAPS_CLAMP 0x00000004 #define NV50TSC_1_0_WRAPS_MIRROR_CLAMP_TO_EDGE 0x00000005 #define NV50TSC_1_0_WRAPS_MIRROR_CLAMP_TO_BORDER 0x00000006 #define NV50TSC_1_0_WRAPS_MIRROR_CLAMP 0x00000007 #define NV50TSC_1_0_WRAPT_MASK 0x00000038 #define NV50TSC_1_0_WRAPT_REPEAT 0x00000000 #define NV50TSC_1_0_WRAPT_MIRROR_REPEAT 0x00000008 #define NV50TSC_1_0_WRAPT_CLAMP_TO_EDGE 0x00000010 #define NV50TSC_1_0_WRAPT_CLAMP_TO_BORDER 0x00000018 #define NV50TSC_1_0_WRAPT_CLAMP 0x00000020 #define NV50TSC_1_0_WRAPT_MIRROR_CLAMP_TO_EDGE 0x00000028 #define NV50TSC_1_0_WRAPT_MIRROR_CLAMP_TO_BORDER 0x00000030 #define NV50TSC_1_0_WRAPT_MIRROR_CLAMP 0x00000038 #define NV50TSC_1_0_WRAPR_MASK 0x000001c0 #define NV50TSC_1_0_WRAPR_REPEAT 0x00000000 #define NV50TSC_1_0_WRAPR_MIRROR_REPEAT 0x00000040 #define NV50TSC_1_0_WRAPR_CLAMP_TO_EDGE 0x00000080 #define NV50TSC_1_0_WRAPR_CLAMP_TO_BORDER 0x000000c0 #define NV50TSC_1_0_WRAPR_CLAMP 0x00000100 #define NV50TSC_1_0_WRAPR_MIRROR_CLAMP_TO_EDGE 0x00000140 #define NV50TSC_1_0_WRAPR_MIRROR_CLAMP_TO_BORDER 0x00000180 #define NV50TSC_1_0_WRAPR_MIRROR_CLAMP 0x000001c0 #define NV50TSC_1_0_MAX_ANISOTROPY_MASK 0x00700000 #define NV50TSC_1_1_MAGF_MASK 0x00000003 #define NV50TSC_1_1_MAGF_NEAREST 0x00000001 #define NV50TSC_1_1_MAGF_LINEAR 0x00000002 #define NV50TSC_1_1_MINF_MASK 0x00000030 #define NV50TSC_1_1_MINF_NEAREST 0x00000010 #define NV50TSC_1_1_MINF_LINEAR 0x00000020 #define NV50TSC_1_1_MIPF_MASK 0x000000c0 #define NV50TSC_1_1_MIPF_NONE 0x00000040 #define NV50TSC_1_1_MIPF_NEAREST 0x00000080 #define NV50TSC_1_1_MIPF_LINEAR 0x000000c0 #define NV50TSC_1_1_LOD_BIAS_MASK 0x01fff000 #define NV50TSC_1_1_UNKN_ANISO_15 0x10000000 #define NV50TSC_1_1_UNKN_ANISO_35 0x18000000 #define NV50TSC_1_2_MIN_LOD_MASK 0x00000f00 #define NV50TSC_1_2_MAX_LOD_MASK 0x00f00000 #define NV50TSC_1_3_UNKNOWN_MASK 0xffffffff #define NV50TSC_1_4_BORDER_COLOR_RED_MASK 0xffffffff #define NV50TSC_1_5_BORDER_COLOR_GREEN_MASK 0xffffffff #define NV50TSC_1_6_BORDER_COLOR_BLUE_MASK 0xffffffff #define NV50TSC_1_7_BORDER_COLOR_ALPHA_MASK 0xffffffff #endif