1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright 2012 Red Hat Inc. 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * copy of this software and associated documentation files (the "Software"), 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * to deal in the Software without restriction, including without limitation 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * and/or sell copies of the Software, and to permit persons to whom the 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Software is furnished to do so, subject to the following conditions: 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The above copyright notice and this permission notice shall be included in 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * all copies or substantial portions of the Software. 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * SOFTWARE. 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Authors: Ben Skeggs 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "nv30-40_3d.xml.h" 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "nv30_context.h" 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "nv30_format.h" 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_RT_FORMAT_COLOR_X1R5G5B5 2 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_TEX_FORMAT_FORMAT_A16L16 NV30_3D_TEX_FORMAT_FORMAT_HILO16 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_TEX_FORMAT_FORMAT_A16L16_RECT NV30_3D_TEX_FORMAT_FORMAT_HILO16_RECT 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_TEX_FORMAT_FORMAT_RGBA16F 0x00004a00 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_TEX_FORMAT_FORMAT_RGBA16F_RECT NV30_3D_TEX_FORMAT_FORMAT_RGBA16F 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_TEX_FORMAT_FORMAT_RGBA32F 0x00004b00 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_TEX_FORMAT_FORMAT_RGBA32F_RECT NV30_3D_TEX_FORMAT_FORMAT_RGBA32F 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_TEX_FORMAT_FORMAT_R32F 0x00004c00 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_TEX_FORMAT_FORMAT_R32F_RECT NV30_3D_TEX_FORMAT_FORMAT_R32F 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_TEX_FORMAT_FORMAT_DXT1_RECT NV30_3D_TEX_FORMAT_FORMAT_DXT1 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_TEX_FORMAT_FORMAT_DXT3_RECT NV30_3D_TEX_FORMAT_FORMAT_DXT3 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_TEX_FORMAT_FORMAT_DXT5_RECT NV30_3D_TEX_FORMAT_FORMAT_DXT5 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_TEX_FORMAT_FORMAT_RG16F 0xdeadcafe 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV30_3D_TEX_FORMAT_FORMAT_RG16F_RECT 0xdeadcafe 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV40_3D_TEX_FORMAT_FORMAT_R32F 0x00001c00 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NV40_3D_TEX_FORMAT_FORMAT_RG16F 0x00001f00 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define ____ 0 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define S___ PIPE_BIND_SAMPLER_VIEW 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define _R__ PIPE_BIND_RENDER_TARGET 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define _B__ PIPE_BIND_RENDER_TARGET | PIPE_BIND_BLENDABLE 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define _Z__ PIPE_BIND_DEPTH_STENCIL 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define __V_ PIPE_BIND_VERTEX_BUFFER 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SR__ (S___ | _R__) 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SB__ (S___ | _B__) 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SZ__ (S___ | _Z__) 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define S_V_ (S___ | __V_) 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SRV_ (SR__ | __V_) 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SBV_ (SB__ | __V_) 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define _(a,b) [PIPE_FORMAT_##a] = { \ 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .bindings = (b), \ 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgconst struct nv30_format_info 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_format_info_table[PIPE_FORMAT_COUNT] = { 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L8_UNORM , S___), 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L8_SNORM , S___), 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L8_SRGB , S___), 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(I8_UNORM , S___), 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(I8_SNORM , S___), 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(A8_UNORM , S___), 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(A8_SNORM , S___), 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8_UNORM , S_V_), 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8_SNORM , S___), 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B5G5R5X1_UNORM , SB__), 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B5G5R5A1_UNORM , S___), 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B4G4R4X4_UNORM , S___), 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B4G4R4A4_UNORM , S___), 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B5G6R5_UNORM , SB__), 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B8G8R8X8_UNORM , SB__), 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B8G8R8X8_SRGB , S___), 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B8G8R8A8_UNORM , SB__), 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B8G8R8A8_SRGB , S___), 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8B8A8_UNORM , __V_), 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8B8A8_SNORM , S___), 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT1_RGB , S___), 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT1_SRGB , S___), 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT1_RGBA , S___), 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT1_SRGBA , S___), 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT3_RGBA , S___), 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT3_SRGBA , S___), 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT5_RGBA , S___), 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT5_SRGBA , S___), 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L8A8_UNORM , S___), 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L8A8_SRGB , S___), 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8_UNORM , S_V_), 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8_SNORM , S___), 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8B8_UNORM , __V_), 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(Z16_UNORM , SZ__), 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(X8Z24_UNORM , SZ__), 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(S8_UINT_Z24_UNORM , SZ__), 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L16_UNORM , S___), 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L16_SNORM , S___), 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(I16_UNORM , S___), 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(I16_SNORM , S___), 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(A16_UNORM , S___), 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(A16_SNORM , S___), 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16_UNORM , S___), 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16_SNORM , S_V_), 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16_SNORM , __V_), 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16B16_SNORM , __V_), 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16B16A16_SNORM , __V_), 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8_USCALED , __V_), 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8_USCALED , __V_), 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8B8_USCALED , __V_), 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8B8A8_USCALED , __V_), 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16_FLOAT , __V_), 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16_FLOAT , __V_), //S_V_), 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16B16_FLOAT , __V_), 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16B16A16_FLOAT , __V_), //SBV_), 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16_SSCALED , __V_), 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16_SSCALED , __V_), 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16B16_SSCALED , __V_), 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16B16A16_SSCALED, __V_), 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R32_FLOAT , __V_), //SRV_), 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R32G32_FLOAT , __V_), 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R32G32B32_FLOAT , __V_), 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R32G32B32A32_FLOAT , __V_), //SRV_), 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#undef _ 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#undef ____ 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define R_(a,b) [PIPE_FORMAT_##a] = { \ 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .hw = NV30_3D_RT_FORMAT_COLOR_##b, \ 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define Z_(a,b) [PIPE_FORMAT_##a] = { \ 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .hw = NV30_3D_RT_FORMAT_ZETA_##b, \ 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgconst struct nv30_format 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_format_table[PIPE_FORMAT_COUNT] = { 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org R_(B5G5R5X1_UNORM , X1R5G5B5 ), 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org R_(B5G6R5_UNORM , R5G6B5 ), 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org R_(B8G8R8X8_UNORM , X8R8G8B8 ), 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org R_(B8G8R8A8_UNORM , A8R8G8B8 ), 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Z_(Z16_UNORM , Z16 ), 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Z_(X8Z24_UNORM , Z24S8 ), 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Z_(S8_UINT_Z24_UNORM , Z24S8 ), 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org R_(R16G16B16A16_FLOAT, A16B16G16R16_FLOAT), 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org R_(R32G32B32A32_FLOAT, A32B32G32R32_FLOAT), 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org R_(R32_FLOAT , R32_FLOAT ), 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define _(a,b,c) [PIPE_FORMAT_##a] = { \ 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .hw = NV30_3D_VTXFMT_TYPE_##b | ((c) << NV30_3D_VTXFMT_SIZE__SHIFT) \ 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgconst struct nv30_vtxfmt 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_vtxfmt_table[PIPE_FORMAT_COUNT] = { 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8_UNORM , U8_UNORM , 1), 160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8_UNORM , U8_UNORM , 2), 161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8B8_UNORM , U8_UNORM , 3), 162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8B8A8_UNORM , U8_UNORM , 4), 163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8_USCALED , U8_USCALED , 1), 164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8_USCALED , U8_USCALED , 2), 165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8B8_USCALED , U8_USCALED , 3), 166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8B8A8_USCALED , U8_USCALED , 4), 167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16_SNORM , V16_SNORM , 1), 168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16_SNORM , V16_SNORM , 2), 169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16B16_SNORM , V16_SNORM , 3), 170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16B16A16_SNORM , V16_SNORM , 4), 171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16_SSCALED , V16_SSCALED, 1), 172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16_SSCALED , V16_SSCALED, 2), 173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16B16_SSCALED , V16_SSCALED, 3), 174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16B16A16_SSCALED, V16_SSCALED, 4), 175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16_FLOAT , V16_FLOAT , 1), 176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16_FLOAT , V16_FLOAT , 2), 177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16B16_FLOAT , V16_FLOAT , 3), 178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16B16A16_FLOAT , V16_FLOAT , 4), 179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R32_FLOAT , V32_FLOAT , 1), 180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R32G32_FLOAT , V32_FLOAT , 2), 181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R32G32B32_FLOAT , V32_FLOAT , 3), 182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R32G32B32A32_FLOAT , V32_FLOAT , 4), 183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#undef _ 185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SWZ_OUT_0 0 187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SWZ_OUT_1 1 188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SWZ_OUT_C 2 189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SWZ_SRC_0 3 191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SWZ_SRC_1 2 192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SWZ_SRC_2 1 193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SWZ_SRC_3 0 194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SWZ_SRC_x 0 195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NONE 0x00000000 197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SRGB 0x00700000 198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define ____ 0x00000000 200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SSSS 0xf0000000 201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define _(a,b,c,d,e,f,g,h,i,j,k,l,m) [PIPE_FORMAT_##a] = { \ 203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .nv30 = NV30_3D_TEX_FORMAT_FORMAT_##b, \ 204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .nv30_rect = NV30_3D_TEX_FORMAT_FORMAT_##b##_RECT, \ 205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .nv40 = NV40_3D_TEX_FORMAT_FORMAT_##b, \ 206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .swz[0] = { SWZ_OUT_##d, SWZ_SRC_##h }, \ 207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .swz[1] = { SWZ_OUT_##e, SWZ_SRC_##i }, \ 208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .swz[2] = { SWZ_OUT_##f, SWZ_SRC_##j }, \ 209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .swz[3] = { SWZ_OUT_##g, SWZ_SRC_##k }, \ 210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .swz[4] = { SWZ_OUT_0, SWZ_SRC_x }, \ 211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .swz[5] = { SWZ_OUT_1, SWZ_SRC_x }, \ 212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .swizzle = (c) * 0x00010000, \ 213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .wrap = (l), \ 214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .filter = (m), \ 215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgconst struct nv30_texfmt 217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_texfmt_table[PIPE_FORMAT_COUNT] = { 218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L8_UNORM , L8 , 0, C, C, C, 1, 0, 0, 0, x, NONE, ____), 219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L8_SNORM , L8 , 0, C, C, C, 1, 0, 0, 0, x, NONE, SSSS), 220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L8_SRGB , L8 , 0, C, C, C, 1, 0, 0, 0, x, SRGB, ____), 221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(I8_UNORM , L8 , 0, C, C, C, C, 0, 0, 0, 0, NONE, ____), 222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(I8_SNORM , L8 , 0, C, C, C, C, 0, 0, 0, 0, NONE, SSSS), 223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(A8_UNORM , L8 , 0, 0, 0, 0, C, x, x, x, 0, NONE, ____), 224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(A8_SNORM , L8 , 0, 0, 0, 0, C, x, x, x, 0, NONE, SSSS), 225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8_UNORM , L8 , 0, C, 0, 0, 1, 0, x, x, x, NONE, ____), 226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8_SNORM , L8 , 0, C, 0, 0, 1, 0, x, x, x, NONE, SSSS), 227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B5G5R5X1_UNORM , A1R5G5B5, 0, C, C, C, 1, 2, 1, 0, x, NONE, ____), 228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B5G5R5A1_UNORM , A1R5G5B5, 0, C, C, C, C, 2, 1, 0, 3, NONE, ____), 229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B4G4R4X4_UNORM , A4R4G4B4, 0, C, C, C, 1, 2, 1, 0, x, NONE, ____), 230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B4G4R4A4_UNORM , A4R4G4B4, 0, C, C, C, C, 2, 1, 0, 3, NONE, ____), 231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B5G6R5_UNORM , R5G6B5 , 0, C, C, C, 1, 2, 1, 0, x, NONE, ____), 232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B8G8R8X8_UNORM , A8R8G8B8, 0, C, C, C, 1, 2, 1, 0, x, NONE, ____), 233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B8G8R8X8_SRGB , A8R8G8B8, 0, C, C, C, 1, 2, 1, 0, x, SRGB, ____), 234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B8G8R8A8_UNORM , A8R8G8B8, 0, C, C, C, C, 2, 1, 0, 3, NONE, ____), 235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(B8G8R8A8_SRGB , A8R8G8B8, 0, C, C, C, C, 2, 1, 0, 3, SRGB, ____), 236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8B8A8_SNORM , A8R8G8B8, 0, C, C, C, C, 0, 1, 2, 3, NONE, SSSS), 237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT1_RGB , DXT1 , 0, C, C, C, 1, 2, 1, 0, x, NONE, ____), 238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT1_SRGB , DXT1 , 0, C, C, C, 1, 2, 1, 0, x, SRGB, ____), 239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT1_RGBA , DXT1 , 0, C, C, C, C, 2, 1, 0, 3, NONE, ____), 240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT1_SRGBA , DXT1 , 0, C, C, C, C, 2, 1, 0, 3, SRGB, ____), 241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT3_RGBA , DXT3 , 0, C, C, C, C, 2, 1, 0, 3, NONE, ____), 242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT3_SRGBA , DXT3 , 0, C, C, C, C, 2, 1, 0, 3, SRGB, ____), 243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT5_RGBA , DXT5 , 0, C, C, C, C, 2, 1, 0, 3, NONE, ____), 244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(DXT5_SRGBA , DXT5 , 0, C, C, C, C, 2, 1, 0, 3, SRGB, ____), 245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L8A8_UNORM , A8L8 , 0, C, C, C, C, 0, 0, 0, 3, NONE, ____), 246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L8A8_SRGB , A8L8 , 0, C, C, C, C, 0, 0, 0, 3, SRGB, ____), 247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8_UNORM , A8L8 , 0, C, C, 0, 1, 0, 3, x, x, NONE, ____), 248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R8G8_SNORM , A8L8 , 0, C, C, 0, 1, 0, 3, x, x, NONE, SSSS), 249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(Z16_UNORM , Z16 , 0, C, C, C, 1, 3, 3, 3, x, NONE, ____), 250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(X8Z24_UNORM , Z24 , 0, C, C, C, 1, 3, 3, 3, x, NONE, ____), 251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(S8_UINT_Z24_UNORM , Z24 , 0, C, C, C, 1, 3, 3, 3, x, NONE, ____), 252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L16_UNORM , A16 , 0, C, C, C, 1, 1, 1, 1, 1, NONE, ____), 253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(L16_SNORM , A16 , 0, C, C, C, 1, 1, 1, 1, 1, NONE, SSSS), 254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(I16_UNORM , A16 , 0, C, C, C, C, 1, 1, 1, 1, NONE, ____), 255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(I16_SNORM , A16 , 0, C, C, C, C, 1, 1, 1, 1, NONE, SSSS), 256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(A16_UNORM , A16 , 0, 0, 0, 0, C, 1, 1, 1, 1, NONE, ____), 257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(A16_SNORM , A16 , 0, 0, 0, 0, C, 1, 1, 1, 1, NONE, SSSS), 258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16_UNORM , A16 , 0, C, 0, 0, 1, 1, 1, 1, 1, NONE, ____), 259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16_SNORM , A16 , 0, C, 0, 0, 1, 1, 1, 1, 1, NONE, SSSS), 260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16_FLOAT , RG16F , 0, C, C, 0, 1, 2, 1, 0, 3, NONE, ____), 261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R16G16B16A16_FLOAT, RGBA16F , 0, C, C, C, C, 2, 1, 0, 3, NONE, ____), 262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R32_FLOAT , R32F , 0, C, 0, 0, 1, 2, 1, 0, 3, NONE, ____), 263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _(R32G32B32A32_FLOAT, RGBA32F , 0, C, C, C, C, 2, 1, 0, 3, NONE, ____), 264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#undef _ 266