1974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca/********************************************************** 2974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * Copyright 2011 VMware, Inc. All rights reserved. 3974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * 4974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * Permission is hereby granted, free of charge, to any person 5974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * obtaining a copy of this software and associated documentation 6974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * files (the "Software"), to deal in the Software without 7974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * restriction, including without limitation the rights to use, copy, 8974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * modify, merge, publish, distribute, sublicense, and/or sell copies 9974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * of the Software, and to permit persons to whom the Software is 10974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * furnished to do so, subject to the following conditions: 11974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * 12974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * The above copyright notice and this permission notice shall be 13974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * included in all copies or substantial portions of the Software. 14974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * 15974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 19974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 20974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SOFTWARE. 23974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * 24974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca **********************************************************/ 25974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 26974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 27974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca#include "pipe/p_format.h" 28974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca#include "util/u_debug.h" 29974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca#include "util/u_memory.h" 30974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 31974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca#include "svga_winsys.h" 32974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca#include "svga_screen.h" 33974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca#include "svga_format.h" 34974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 35974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 36974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca/* 37974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * Translate from gallium format to SVGA3D format. 38974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca */ 39974b6413f4540d73c21c092cc0a62abb6d546e21José FonsecaSVGA3dSurfaceFormat 40974b6413f4540d73c21c092cc0a62abb6d546e21José Fonsecasvga_translate_format(struct svga_screen *ss, 41974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca enum pipe_format format, 42974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca unsigned bind) 43974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca{ 44974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca switch(format) { 45974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 46974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_B8G8R8A8_UNORM: 47974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return SVGA3D_A8R8G8B8; 48974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_B8G8R8X8_UNORM: 49974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return SVGA3D_X8R8G8B8; 50974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 51681f92140c2f4170ec222a8213e0895c7fa8483aBrian Paul /* sRGB required for GL2.1 */ 52974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_B8G8R8A8_SRGB: 53974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return SVGA3D_A8R8G8B8; 54681f92140c2f4170ec222a8213e0895c7fa8483aBrian Paul case PIPE_FORMAT_DXT1_SRGB: 55681f92140c2f4170ec222a8213e0895c7fa8483aBrian Paul case PIPE_FORMAT_DXT1_SRGBA: 56681f92140c2f4170ec222a8213e0895c7fa8483aBrian Paul return SVGA3D_DXT1; 57681f92140c2f4170ec222a8213e0895c7fa8483aBrian Paul case PIPE_FORMAT_DXT3_SRGBA: 58681f92140c2f4170ec222a8213e0895c7fa8483aBrian Paul return SVGA3D_DXT3; 59681f92140c2f4170ec222a8213e0895c7fa8483aBrian Paul case PIPE_FORMAT_DXT5_SRGBA: 60681f92140c2f4170ec222a8213e0895c7fa8483aBrian Paul return SVGA3D_DXT5; 61974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 62974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_B5G6R5_UNORM: 63974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return SVGA3D_R5G6B5; 64974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_B5G5R5A1_UNORM: 65974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return SVGA3D_A1R5G5B5; 66974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_B4G4R4A4_UNORM: 67974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return SVGA3D_A4R4G4B4; 68974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 69974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_Z16_UNORM: 70974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return bind & PIPE_BIND_SAMPLER_VIEW ? ss->depth.z16 : SVGA3D_Z_D16; 71866f9b18c68ede63c00917ec9c3dae3524ca8826Dave Airlie case PIPE_FORMAT_S8_UINT_Z24_UNORM: 72974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return bind & PIPE_BIND_SAMPLER_VIEW ? ss->depth.s8z24 : SVGA3D_Z_D24S8; 73974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_X8Z24_UNORM: 74974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return bind & PIPE_BIND_SAMPLER_VIEW ? ss->depth.x8z24 : SVGA3D_Z_D24X8; 75974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 76974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_A8_UNORM: 77974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return SVGA3D_ALPHA8; 78974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_L8_UNORM: 79974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return SVGA3D_LUMINANCE8; 80974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 81974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_DXT1_RGB: 82974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_DXT1_RGBA: 83974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return SVGA3D_DXT1; 84974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_DXT3_RGBA: 85974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return SVGA3D_DXT3; 86974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_DXT5_RGBA: 87974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return SVGA3D_DXT5; 88974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 899a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul /* Float formats (only 1, 2 and 4-component formats supported) */ 909a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul case PIPE_FORMAT_R32_FLOAT: 919a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul return SVGA3D_R_S23E8; 929a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul case PIPE_FORMAT_R32G32_FLOAT: 939a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul return SVGA3D_RG_S23E8; 949a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul case PIPE_FORMAT_R32G32B32A32_FLOAT: 959a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul return SVGA3D_ARGB_S23E8; 969a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul case PIPE_FORMAT_R16_FLOAT: 979a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul return SVGA3D_R_S10E5; 989a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul case PIPE_FORMAT_R16G16_FLOAT: 999a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul return SVGA3D_RG_S10E5; 1009a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul case PIPE_FORMAT_R16G16B16A16_FLOAT: 1019a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul return SVGA3D_ARGB_S10E5; 1029a41ecaddddb2f371e207901ae4d86918049c5aaBrian Paul 103974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca case PIPE_FORMAT_Z32_UNORM: 104974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* SVGA3D_Z_D32 is not yet unsupported */ 105974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* fall-through */ 106974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca default: 107974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return SVGA3D_FORMAT_INVALID; 108974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca } 109974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca} 110974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 111974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 112974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca/* 113974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * Format capability description entry. 114974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca */ 115974b6413f4540d73c21c092cc0a62abb6d546e21José Fonsecastruct format_cap { 116974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3dSurfaceFormat format; 117974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 118974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* 119974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * Capability index corresponding to the format. 120974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca */ 121974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3dDevCapIndex index; 122974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 123974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* 124974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * Mask of supported SVGA3dFormatOp operations, to be inferred when the 125974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * capability is not explicitly present. 126974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca */ 127974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca uint32 defaultOperations; 128974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca}; 129974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 130974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 131974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca/* 132974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * Format capability description table. 133974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * 134974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * Ordererd by increasing SVGA3dSurfaceFormat value, but with gaps. 135974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca */ 136974b6413f4540d73c21c092cc0a62abb6d546e21José Fonsecastatic const struct format_cap format_cap_table[] = { 137974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 138974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_X8R8G8B8, 139974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_X8R8G8B8, 140974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 141974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 142974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 143974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_DISPLAYMODE | 144974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_3DACCELERATION | 145974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CONVERT_TO_ARGB | 146974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_MEMBEROFGROUP_ARGB | 147974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 148974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 149974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBWRITE | 150974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 151974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 152974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 153974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 154974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_A8R8G8B8, 155974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_A8R8G8B8, 156974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 157974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 158974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 159974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CONVERT_TO_ARGB | 160974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_MEMBEROFGROUP_ARGB | 161974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 162974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 163974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBWRITE | 164974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 165974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET | 166974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 167974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 168974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 169974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_R5G6B5, 170974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_R5G6B5, 171974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 172974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 173974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 174974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_DISPLAYMODE | 175974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_3DACCELERATION | 176974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CONVERT_TO_ARGB | 177974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_MEMBEROFGROUP_ARGB | 178974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 179974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 180974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBWRITE | 181974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 182974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 183974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 184974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 185974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_X1R5G5B5, 186974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_X1R5G5B5, 187974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 188974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 189974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 190974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CONVERT_TO_ARGB | 191974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_MEMBEROFGROUP_ARGB | 192974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 193974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 194974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBWRITE | 195974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 196974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 197974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 198974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 199974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_A1R5G5B5, 200974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_A1R5G5B5, 201974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 202974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 203974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 204974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CONVERT_TO_ARGB | 205974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_MEMBEROFGROUP_ARGB | 206974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 207974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 208974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBWRITE | 209974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 210974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET | 211974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 212974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 213974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 214974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_A4R4G4B4, 215974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_A4R4G4B4, 216974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 217974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 218974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 219974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 220974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 221974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBWRITE | 222974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 223974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET | 224974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 225974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 226974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* 227974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SVGA3D_Z_D32 is not yet supported, and has no corresponding 228974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SVGA3D_DEVCAP_xxx. 229974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca */ 230974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 231974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_Z_D16, 232974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_Z_D16, 233974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_ZSTENCIL | 234974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 235974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 236974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 237974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_Z_D24S8, 238974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8, 239974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_ZSTENCIL | 240974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 241974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 242974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 243974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_Z_D15S1, 244974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_MAX, 245974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_ZSTENCIL | 246974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 247974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 248974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 249974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_LUMINANCE8, 250974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE8, 251974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 252974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 253974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 254974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 255974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 256974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 257974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_LUMINANCE8_ALPHA8, 258974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE8_ALPHA8, 259974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 260974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 261974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 262974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 263974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 264974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* 265974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SVGA3D_LUMINANCE4_ALPHA4 is not supported, and has no corresponding 266974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SVGA3D_DEVCAP_xxx. 267974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca */ 268974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 269974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_LUMINANCE16, 270974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE16, 271974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 272974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 273974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 274974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 275974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 276974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 277974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DXT1, 278974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_DXT1, 279974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 280974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 281974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 282974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 283974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 284974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 285974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DXT2, 286974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_DXT2, 287974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 288974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 289974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 290974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 291974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 292974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 293974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DXT3, 294974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_DXT3, 295974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 296974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 297974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 298974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 299974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 300974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 301974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DXT4, 302974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_DXT4, 303974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 304974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 305974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 306974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 307974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 308974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 309974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DXT5, 310974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_DXT5, 311974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 312974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 313974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 314974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 315974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 316974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 317974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_BUMPU8V8, 318974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_BUMPU8V8, 319974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 320974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 321974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 322974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_BUMPMAP | 323974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 324974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 325974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* 326974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SVGA3D_BUMPL6V5U5 is unsupported; it has no corresponding 327974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SVGA3D_DEVCAP_xxx. 328974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca */ 329974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 330974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_BUMPX8L8V8U8, 331974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_BUMPX8L8V8U8, 332974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 333974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 334974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_BUMPMAP | 335974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 336974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 337974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* 338974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SVGA3D_BUMPL8V8U8 is unsupported; it has no corresponding 339974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SVGA3D_DEVCAP_xxx. SVGA3D_BUMPX8L8V8U8 should be used instead. 340974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca */ 341974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 342974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_ARGB_S10E5, 343974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_ARGB_S10E5, 344974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 345974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 346974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 347974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 348974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 349974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBWRITE | 350974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 351974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 352974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 353974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 354974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_ARGB_S23E8, 355974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_ARGB_S23E8, 356974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 357974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 358974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 359974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 360974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 361974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBWRITE | 362974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 363974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 364974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 365974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 366974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_A2R10G10B10, 367974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_A2R10G10B10, 368974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 369974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 370974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 371974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CONVERT_TO_ARGB | 372974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_MEMBEROFGROUP_ARGB | 373974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 374974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 375974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBWRITE | 376974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 377974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 378974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 379974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* 380974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SVGA3D_V8U8 is unsupported; it has no corresponding 381974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SVGA3D_DEVCAP_xxx. SVGA3D_BUMPU8V8 should be used instead. 382974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca */ 383974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 384974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_Q8W8V8U8, 385974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_Q8W8V8U8, 386974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 387974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 388974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_BUMPMAP | 389974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 390974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 391974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 392974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_CxV8U8, 393974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_CxV8U8, 394974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 395974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_BUMPMAP | 396974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 397974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 398974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* 399974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SVGA3D_X8L8V8U8 is unsupported; it has no corresponding 400974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SVGA3D_DEVCAP_xxx. SVGA3D_BUMPX8L8V8U8 should be used instead. 401974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca */ 402974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 403974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_A2W10V10U10, 404974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_A2W10V10U10, 405974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 406974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_BUMPMAP | 407974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 408974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 409974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 410974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_ALPHA8, 411974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_ALPHA8, 412974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 413974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 414974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 415974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 416974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 417974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 418974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_R_S10E5, 419974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_R_S10E5, 420974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 421974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 422974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 423974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 424974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 425974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBWRITE | 426974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 427974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 428974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 429974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 430974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_R_S23E8, 431974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_R_S23E8, 432974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 433974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 434974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 435974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 436974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 437974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBWRITE | 438974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 439974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 440974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 441974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 442974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_RG_S10E5, 443974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_RG_S10E5, 444974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 445974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 446974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 447974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 448974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 449974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBWRITE | 450974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 451974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 452974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 453974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 454974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_RG_S23E8, 455974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_RG_S23E8, 456974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 457974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 458974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 459974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 460974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBREAD | 461974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SRGBWRITE | 462974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 463974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 464974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 465974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* 466974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * SVGA3D_BUFFER is a placeholder format for index/vertex buffers. 467974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca */ 468974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 469974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_Z_D24X8, 470974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_Z_D24X8, 471974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_ZSTENCIL | 472974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 473974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 474974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 475974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_V16U16, 476974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_V16U16, 477974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 478974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 479974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 480974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_BUMPMAP | 481974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN 482974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 483974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 484974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_G16R16, 485974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_G16R16, 486974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 487974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 488974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 489974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 490974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 491974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 492974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 493974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 494974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_A16B16G16R16, 495974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_A16B16G16R16, 496974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_TEXTURE | 497974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_CUBETEXTURE | 498974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_VOLUMETEXTURE | 499974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREENPLAIN | 500974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | 501974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET 502974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 503974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 504974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_UYVY, 505974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_UYVY, 506974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 0 507974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 508974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 509974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_YUY2, 510974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_YUY2, 511974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 0 512974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 513974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 514974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_NV12, 515974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_NV12, 516974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 0 517974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 518974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 519974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_AYUV, 520974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_AYUV, 521974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 0 522974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 523974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 524974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_BC4_UNORM, 525974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_BC4_UNORM, 526974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 0 527974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 528974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 529974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_BC5_UNORM, 530974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_BC5_UNORM, 531974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 0 532974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 533974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 534974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_Z_DF16, 535974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_Z_DF16, 536974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 0 537974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 538974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 539974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_Z_DF24, 540974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_Z_DF24, 541974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 0 542974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 543974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca { 544974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_Z_D24S8_INT, 545974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8_INT, 546974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 0 547974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca }, 548974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca}; 549974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 550974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 551974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca/* 552974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * Get format capabilities from the host. It takes in consideration 553974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * deprecated/unsupported formats, and formats which are implicitely assumed to 554974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca * be supported when the host does not provide an explicit capability entry. 555974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca */ 556974b6413f4540d73c21c092cc0a62abb6d546e21José Fonsecavoid 557974b6413f4540d73c21c092cc0a62abb6d546e21José Fonsecasvga_get_format_cap(struct svga_screen *ss, 558974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3dSurfaceFormat format, 559974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3dSurfaceFormatCaps *caps) 560974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca{ 561974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca const struct format_cap *entry; 562974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 563974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca for (entry = format_cap_table; entry < format_cap_table + Elements(format_cap_table); ++entry) { 564974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca if (entry->format == format) { 565974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca struct svga_winsys_screen *sws = ss->sws; 566974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca SVGA3dDevCapResult result; 567974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 568974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca if (sws->get_cap(sws, entry->index, &result)) { 569974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* Explicitly advertised format */ 570974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca caps->value = result.u; 571974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca } else { 572974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* Implicitly advertised format -- use default caps */ 573974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca caps->value = entry->defaultOperations; 574974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca } 575974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 576974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca return; 577974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca } 578974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca } 579974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca 580974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca /* Unsupported format */ 581974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca caps->value = 0; 582974b6413f4540d73c21c092cc0a62abb6d546e21José Fonseca} 58332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 58432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 58532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul/** 58632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul * Return block size and bytes per block for the given SVGA3D format. 58732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul * block_width and block_height are one for uncompressed formats and 58832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul * greater than one for compressed formats. 58932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul * Note: we don't handle formats that are unsupported, according to 59032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul * the format_cap_table above. 59132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul */ 59232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paulvoid 59332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paulsvga_format_size(SVGA3dSurfaceFormat format, 59432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul unsigned *block_width, 59532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul unsigned *block_height, 59632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul unsigned *bytes_per_block) 59732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul{ 59832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *block_width = *block_height = 1; 59932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 60032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul switch (format) { 60132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_X8R8G8B8: 60232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_A8R8G8B8: 60332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 60432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 60532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 60632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_R5G6B5: 60732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_X1R5G5B5: 60832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_A1R5G5B5: 60932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_A4R4G4B4: 61032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 2; 61132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 61232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 61332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_Z_D32: 61432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 61532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 61632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 61732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_Z_D16: 61832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 2; 61932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 62032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 62132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_Z_D24S8: 62232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 62332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 62432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 62532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_Z_D15S1: 62632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 2; 62732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 62832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 62932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_LUMINANCE8: 63032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_LUMINANCE4_ALPHA4: 63132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 1; 63232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 63332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 63432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_LUMINANCE16: 63532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_LUMINANCE8_ALPHA8: 63632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 2; 63732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 63832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 63932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_DXT1: 64032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_DXT2: 64132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *block_width = *block_height = 4; 64232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 8; 64332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 64432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 64532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_DXT3: 64632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_DXT4: 64732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_DXT5: 64832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *block_width = *block_height = 4; 64932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 16; 65032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 65132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 65232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_BUMPU8V8: 65332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_BUMPL6V5U5: 65432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 2; 65532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 65632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 65732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_BUMPX8L8V8U8: 65832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 65932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 66032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 66132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_ARGB_S10E5: 66232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 8; 66332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 66432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 66532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_ARGB_S23E8: 66632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 16; 66732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 66832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 66932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_A2R10G10B10: 67032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 67132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 67232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 67332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_Q8W8V8U8: 67432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 67532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 67632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 67732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_CxV8U8: 67832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 2; 67932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 68032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 68132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_X8L8V8U8: 68232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_A2W10V10U10: 68332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 68432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 68532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 68632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_ALPHA8: 68732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 1; 68832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 68932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 69032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_R_S10E5: 69132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 2; 69232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 69332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_R_S23E8: 69432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 69532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 69632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_RG_S10E5: 69732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 69832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 69932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_RG_S23E8: 70032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 8; 70132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 70232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 70332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_BUFFER: 70432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 1; 70532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 70632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 70732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_Z_D24X8: 70832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 70932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 71032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 71132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_V16U16: 71232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 71332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 71432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 71532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_G16R16: 71632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 71732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 71832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 71932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_A16B16G16R16: 72032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 8; 72132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 72232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 72332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_Z_DF16: 72432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 2; 72532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 72632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_Z_DF24: 72732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 72832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 72932f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul case SVGA3D_Z_D24S8_INT: 73032f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 73132f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul return; 73232f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul 73332f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul default: 73432f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul debug_printf("format %u\n", (unsigned) format); 73532f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul assert(!"unexpected format in svga_format_size()"); 73632f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul *bytes_per_block = 4; 73732f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul } 73832f669e7fc17ff89cf132b7d42c72de75625d32aBrian Paul} 739