1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/************************************************************************** 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright 2009 VMware, Inc. All Rights Reserved. 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * copy of this software and associated documentation files (the 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * "Software"), to deal in the Software without restriction, including 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * without limitation the rights to use, copy, modify, merge, publish, 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * distribute, sub license, and/or sell copies of the Software, and to 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * permit persons to whom the Software is furnished to do so, subject to 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the following conditions: 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The above copyright notice and this permission notice (including the 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * next paragraph) shall be included in all copies or substantial portions 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * of the Software. 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org **************************************************************************/ 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "vg_translate.h" 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "pipe/p_format.h" 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "util/u_pack_color.h" 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid _vega_pack_rgba_span_float(struct vg_context *ctx, 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint n, VGfloat rgba[][4], 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGImageFormat dstFormat, 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void *dstAddr) 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint i; 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (dstFormat) { 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBX_8888: { 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = 255; 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = r << 24 | g << 16 | b << 8 | a; 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBA_8888: { 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = r << 24 | g << 16 | b << 8 | a; 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBA_8888_PRE: { 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = r << 24 | g << 16 | b << 8 | a; 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGB_565: { 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGshort *dst = (VGshort *)dstAddr; 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b; 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (r / 255.0) * 32; 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (g / 255.0) * 32; 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (b / 255.0) * 32; 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = b | g << 5 | r << 11; 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBA_5551: { 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGshort *dst = (VGshort *)dstAddr; 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b, a; 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (r / 255.0) * 32; 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (g / 255.0) * 32; 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (b / 255.0) * 32; 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (a / 255.0); 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = a | b << 1 | g << 6 | r << 11; 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBA_4444: { 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGshort *dst = (VGshort *)dstAddr; 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b, a; 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (r / 255.0) * 16; 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (g / 255.0) * 16; 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (b / 255.0) * 16; 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (a / 255.0) * 16; 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = a | b << 4 | g << 8 | r << 12; 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sL_8: { 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte *dst = (VGubyte *)dstAddr; 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte a; 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = a; 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lRGBX_8888: { 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = 255; 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = r << 24 | g << 16 | b << 8 | a; 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lRGBA_8888: { 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = r << 24 | g << 16 | b << 8 | a; 164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lRGBA_8888_PRE: { 168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = r << 24 | g << 16 | b << 8 | a; 176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lL_8: { 181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte *dst = (VGubyte *)dstAddr; 182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte a; 184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = a; 186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_A_8: { 191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte *dst = (VGubyte *)dstAddr; 192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte a; 194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = a; 197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_BW_1: { 202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGshort *dst = (VGshort *)dstAddr; 203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b, a; 205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte res; 206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = (r + g + b + a)/4; 212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = (res & (128)); 213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifdef OPENVG_VERSION_1_1 218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_A_1: { 219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGshort *dst = (VGshort *)dstAddr; 220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte a; 222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = (a & (128)); 225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_A_4: { 230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGshort *dst = (VGshort *)dstAddr; 231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte a; 233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte res; 234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org res = a/4; 237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = (res & (128)); 238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sXRGB_8888: 244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sARGB_8888: { 246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = a << 24 | r << 16 | g << 8 | b; 254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sARGB_8888_PRE: { 259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 266f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = a << 24 | r << 16 | g << 8 | b; 267f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 268f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 269f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 270f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 271f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sARGB_1555: 272f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 273f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sARGB_4444: 274f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 275f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lXRGB_8888: 276f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 277f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lARGB_8888: { 278f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 279f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 280f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 281f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 282f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 283f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 284f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 285f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = a << 24 | r << 16 | g << 8 | b; 286f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 287f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 288f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 289f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 290f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lARGB_8888_PRE: { 291f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 292f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 293f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 294f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 295f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 296f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 297f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 298f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = a << 24 | r << 16 | g << 8 | b; 299f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 300f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 301f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 302f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 303f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRX_8888: { 304f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 305f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 306f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 307f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 308f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 309f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 310f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = 0xff; 311f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = b << 24 | g << 16 | r << 8 | a; 312f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 313f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 314f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 315f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 316f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRA_8888: { 317f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 318f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 319f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 320f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 321f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 322f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 323f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 324f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = b << 24 | g << 16 | r << 8 | a; 325f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 326f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 327f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 328f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 329f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRA_8888_PRE: { 330f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 331f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 332f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 333f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 334f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 335f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 336f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 337f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = b << 24 | g << 16 | r << 8 | a; 338f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 339f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 340f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 341f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 342f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGR_565: 343f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 344f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRA_5551: 345f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 346f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRA_4444: 347f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 348f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lBGRX_8888: { 349f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 350f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 351f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 352f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 353f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 354f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 355f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = 0xff; 356f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = b << 24 | g << 16 | r << 8 | a; 357f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 358f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 359f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 360f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 361f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lBGRA_8888: { 362f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 363f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 364f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 365f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 366f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 367f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 368f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 369f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = b << 24 | g << 16 | r << 8 | a; 370f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 371f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 372f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 373f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 374f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lBGRA_8888_PRE: { 375f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 376f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 377f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 378f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 379f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 380f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 381f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 382f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = b << 24 | g << 16 | r << 8 | a; 383f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 384f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 385f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 386f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 387f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sXBGR_8888: 388f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 389f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sABGR_8888: { 390f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 391f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 392f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 393f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 394f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 395f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 396f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 397f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = a << 24 | b << 16 | g << 8 | r; 398f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 399f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 400f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 401f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 402f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sABGR_8888_PRE: { 403f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 404f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 405f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 406f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 407f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 408f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 409f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 410f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = a << 24 | b << 16 | g << 8 | r; 411f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 412f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 413f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 414f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 415f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sABGR_1555: 416f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 417f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sABGR_4444: 418f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 419f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lXBGR_8888: 420f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 421f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lABGR_8888: { 422f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 423f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 424f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 425f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 426f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 427f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 428f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 429f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = a << 24 | b << 16 | g << 8 | r; 430f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 431f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 432f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 433f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 434f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lABGR_8888_PRE: { 435f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *dst = (VGint *)dstAddr; 436f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 437f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 438f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = float_to_ubyte(rgba[i][0]); 439f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = float_to_ubyte(rgba[i][1]); 440f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = float_to_ubyte(rgba[i][2]); 441f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = float_to_ubyte(rgba[i][3]); 442f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org dst[i] = a << 24 | b << 16 | g << 8 | r; 443f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 444f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 445f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 446f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 447f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 448f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org assert(!"Unknown ReadPixels format"); 449f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 450f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 451f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org assert(!"Not implemented ReadPixels format"); 452f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 453f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 454f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid _vega_unpack_float_span_rgba(struct vg_context *ctx, 455f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint n, 456f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint offset, 457f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const void * data, 458f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGImageFormat dataFormat, 459f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGfloat rgba[][4]) 460f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 461f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint i; 462f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org union util_color uc; 463f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 464f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (dataFormat) { 465f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBX_8888: { 466f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint *src = (VGuint *)data; 467f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 468f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 469f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 470f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 24) & 0xff; 471f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 16) & 0xff; 472f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 8) & 0xff; 473f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = 0xff; 474f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 475f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 476f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 477f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 478f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 479f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 480f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 481f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 482f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 483f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 484f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBA_8888: { 485f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint *src = (VGuint *)data; 486f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 487f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 488f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 489f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 24) & 0xff; 490f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 16) & 0xff; 491f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 8) & 0xff; 492f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 0) & 0xff; 493f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 494f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 495f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 496f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 497f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 498f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 499f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 500f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 501f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 502f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 503f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 504f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBA_8888_PRE: { 505f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *src = (VGint *)data; 506f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 507f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 508f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 509f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 24) & 0xff; 510f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 16) & 0xff; 511f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 8) & 0xff; 512f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 0) & 0xff; 513f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 514f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 515f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 516f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 517f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 518f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 519f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 520f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 521f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 522f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 523f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 524f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGB_565: { 525f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGshort *src = (VGshort *)data; 526f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 527f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 528f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGfloat clr[4]; 529f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[0] = ((*src >> 11) & 31)/31.; 530f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[1] = ((*src >> 5) & 63)/63.; 531f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[2] = ((*src >> 0) & 31)/31.; 532f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[3] = 1.f; 533f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 534f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 535f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 536f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 537f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 538f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 539f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 540f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 541f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 542f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 543f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBA_5551: { 544f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGshort *src = (VGshort *)data; 545f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 546f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 547f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGfloat clr[4]; 548f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[0] = ((*src >> 10) & 31)/31.; 549f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[1] = ((*src >> 5) & 31)/31.; 550f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[2] = ((*src >> 1) & 31)/31.; 551f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[3] = ((*src >> 0) & 1)/1.; 552f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 553f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 554f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 555f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 556f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 557f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 558f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 559f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 560f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 561f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 562f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBA_4444: { 563f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGshort *src = (VGshort *)data; 564f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 565f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 566f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGfloat clr[4]; 567f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[0] = ((*src >> 12) & 15)/15.; 568f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[1] = ((*src >> 8) & 15)/15.; 569f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[2] = ((*src >> 4) & 15)/15.; 570f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[3] = ((*src >> 0) & 15)/15.; 571f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 572f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 573f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 574f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 575f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 576f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 577f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 578f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 579f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 580f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 581f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sL_8: { 582f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte *src = (VGubyte *)data; 583f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 584f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 585f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(0xff, 0xff, 0xff, *src, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 586f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 587f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 588f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 589f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 590f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 591f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 592f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 593f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 594f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lRGBX_8888: { 595f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint *src = (VGuint *)data; 596f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 597f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 598f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 599f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 24) & 0xff; 600f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 16) & 0xff; 601f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 8) & 0xff; 602f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = 0xff; 603f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 604f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 605f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 606f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 607f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 608f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 609f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 610f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 611f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 612f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 613f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lRGBA_8888: { 614f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *src = (VGint *)data; 615f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 616f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 617f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 618f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 24) & 0xff; 619f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 16) & 0xff; 620f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 8) & 0xff; 621f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 0) & 0xff; 622f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 623f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 624f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 625f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 626f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 627f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 628f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 629f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 630f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 631f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 632f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 633f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lRGBA_8888_PRE: { 634f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *src = (VGint *)data; 635f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 636f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 637f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 638f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 24) & 0xff; 639f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 16) & 0xff; 640f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 8) & 0xff; 641f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 0) & 0xff; 642f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 643f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 644f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 645f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 646f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 647f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 648f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 649f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 650f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 651f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 652f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 653f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lL_8: { 654f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte *src = (VGubyte *)data; 655f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 656f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 657f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(0xff, 0xff, 0xff, *src, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 658f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 659f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 660f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 661f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 662f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 663f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 664f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 665f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 666f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_A_8: { 667f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte *src = (VGubyte *)data; 668f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 669f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 670f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(0xff, 0xff, 0xff, *src, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 671f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 672f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 673f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 674f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 675f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 676f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 677f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 678f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 679f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_BW_1: { 680f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte *src = (VGubyte *)data; 681f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 682f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; i += 8) { 683f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGfloat clr[4]; 684f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint j; 685f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (j = 0; j < 8 && j < n ; ++j) { 686f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint shift = j; 687f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[0] = (((*src) & (1<<shift)) >> shift); 688f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[1] = clr[0]; 689f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[2] = clr[0]; 690f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[3] = 1.f; 691f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 692f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 693f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i+j][0] = uc.f[0]; 694f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i+j][1] = uc.f[1]; 695f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i+j][2] = uc.f[2]; 696f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i+j][3] = uc.f[3]; 697f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 698f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 699f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 700f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 701f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 702f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifdef OPENVG_VERSION_1_1 703f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_A_1: { 704f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte *src = (VGubyte *)data; 705f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 706f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; i += 8) { 707f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGfloat clr[4]; 708f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint j; 709f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (j = 0; j < 8 && j < n ; ++j) { 710f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint shift = j; 711f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[0] = 0.f; 712f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[1] = 0.f; 713f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[2] = 0.f; 714f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[3] = (((*src) & (1<<shift)) >> shift); 715f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 716f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 717f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i+j][0] = uc.f[0]; 718f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i+j][1] = uc.f[1]; 719f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i+j][2] = uc.f[2]; 720f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i+j][3] = uc.f[3]; 721f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 722f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 723f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 724f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 725f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 726f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_A_4: { 727f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte *src = (VGubyte *)data; 728f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset/2; 729f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; i += 2) { 730f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGfloat clr[4]; 731f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint j; 732f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (j = 0; j < n && j < 2; ++j) { 733f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint bitter, shift; 734f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (j == 0) { 735f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bitter = 0x0f; 736f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org shift = 0; 737f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } else { 738f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bitter = 0xf0; 739f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org shift = 4; 740f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 741f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[0] = 0.f; 742f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[1] = 0.f; 743f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[2] = 0.f; 744f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr[3] = ((*src) & (bitter)) >> shift; 745f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 746f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 747f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i+j][0] = uc.f[0]; 748f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i+j][1] = uc.f[1]; 749f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i+j][2] = uc.f[2]; 750f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i+j][3] = uc.f[3]; 751f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 752f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 753f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 754f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 755f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 756f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 757f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sXRGB_8888: 758f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 759f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sARGB_8888: { 760f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint *src = (VGuint *)data; 761f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 762f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 763f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 764f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 24) & 0xff; 765f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 16) & 0xff; 766f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 8) & 0xff; 767f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 0) & 0xff; 768f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 769f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 770f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 771f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 772f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 773f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 774f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 775f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 776f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 777f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 778f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 779f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sARGB_8888_PRE: { 780f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint *src = (VGuint *)data; 781f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 782f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 783f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 784f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 24) & 0xff; 785f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 16) & 0xff; 786f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 8) & 0xff; 787f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 0) & 0xff; 788f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 789f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 790f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 791f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 792f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 793f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 794f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 795f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 796f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 797f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 798f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 799f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sARGB_1555: 800f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 801f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sARGB_4444: 802f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 803f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lXRGB_8888: 804f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 805f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lARGB_8888: { 806f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *src = (VGint *)data; 807f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 808f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 809f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 810f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 24) & 0xff; 811f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 16) & 0xff; 812f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 8) & 0xff; 813f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 0) & 0xff; 814f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 815f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 816f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 817f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 818f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 819f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 820f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 821f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 822f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 823f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 824f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 825f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lARGB_8888_PRE: { 826f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGint *src = (VGint *)data; 827f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 828f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 829f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 830f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 24) & 0xff; 831f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 16) & 0xff; 832f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 8) & 0xff; 833f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 0) & 0xff; 834f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 835f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 836f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 837f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 838f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 839f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 840f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 841f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 842f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 843f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 844f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 845f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRX_8888: 846f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 847f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRA_8888: { 848f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint *src = (VGuint *)data; 849f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 850f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 851f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 852f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 24) & 0xff; 853f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 16) & 0xff; 854f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 8) & 0xff; 855f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 0) & 0xff; 856f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 857f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 858f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 859f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 860f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 861f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 862f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 863f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 864f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 865f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 866f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 867f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRA_8888_PRE: { 868f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint *src = (VGuint *)data; 869f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 870f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 871f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 872f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 24) & 0xff; 873f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 16) & 0xff; 874f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 8) & 0xff; 875f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 0) & 0xff; 876f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 877f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 878f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 879f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 880f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 881f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 882f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 883f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 884f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 885f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 886f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 887f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGR_565: 888f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 889f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRA_5551: 890f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 891f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRA_4444: 892f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 893f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lBGRX_8888: 894f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 895f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lBGRA_8888: { 896f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint *src = (VGuint *)data; 897f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 898f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 899f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 900f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 24) & 0xff; 901f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 16) & 0xff; 902f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 8) & 0xff; 903f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 0) & 0xff; 904f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 905f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 906f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 907f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 908f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 909f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 910f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 911f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 912f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 913f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 914f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 915f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lBGRA_8888_PRE: { 916f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint *src = (VGuint *)data; 917f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 918f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 919f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 920f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 24) & 0xff; 921f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 16) & 0xff; 922f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 8) & 0xff; 923f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 0) & 0xff; 924f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 925f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 926f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 927f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 928f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 929f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 930f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 931f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 932f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 933f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 934f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 935f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sXBGR_8888: 936f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 937f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sABGR_8888: { 938f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint *src = (VGuint *)data; 939f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 940f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 941f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 942f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 24) & 0xff; 943f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 16) & 0xff; 944f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 8) & 0xff; 945f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 0) & 0xff; 946f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 947f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 948f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 949f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 950f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 951f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 952f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 953f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 954f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 955f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 956f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 957f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sABGR_8888_PRE: { 958f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint *src = (VGuint *)data; 959f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 960f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 961f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 962f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 24) & 0xff; 963f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 16) & 0xff; 964f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 8) & 0xff; 965f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 0) & 0xff; 966f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 967f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 968f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 969f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 970f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 971f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 972f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 973f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 974f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 975f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 976f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 977f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sABGR_1555: 978f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 979f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sABGR_4444: 980f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 981f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lXBGR_8888: 982f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 983f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lABGR_8888: { 984f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint *src = (VGuint *)data; 985f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 986f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 987f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 988f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 24) & 0xff; 989f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 16) & 0xff; 990f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 8) & 0xff; 991f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 0) & 0xff; 992f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 993f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 994f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 995f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 996f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 997f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 998f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 999f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1000f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 1001f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1002f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1003f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lABGR_8888_PRE: { 1004f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGuint *src = (VGuint *)data; 1005f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org src += offset; 1006f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < n; ++i) { 1007f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org VGubyte r, g, b ,a; 1008f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a = (*src >> 24) & 0xff; 1009f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b = (*src >> 16) & 0xff; 1010f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org g = (*src >> 8) & 0xff; 1011f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r = (*src >> 0) & 0xff; 1012f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1013f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); 1014f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][0] = uc.f[0]; 1015f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][1] = uc.f[1]; 1016f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][2] = uc.f[2]; 1017f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org rgba[i][3] = uc.f[3]; 1018f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ++src; 1019f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1020f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 1021f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1022f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1023f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 1024f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org assert(!"Unknown ReadPixels format"); 1025f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1026f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1027f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org assert(!"Not implemented ReadPixels format"); 1028f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1029f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1030f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgVGint _vega_size_for_format(VGImageFormat dataFormat) 1031f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1032f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (dataFormat) { 1033f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBX_8888: 1034f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBA_8888: 1035f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBA_8888_PRE: 1036f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 4; 1037f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGB_565: 1038f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBA_5551: 1039f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sRGBA_4444: 1040f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 2; 1041f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sL_8: 1042f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 1; 1043f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lRGBX_8888: 1044f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lRGBA_8888: 1045f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lRGBA_8888_PRE: 1046f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 4; 1047f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lL_8: 1048f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 1; 1049f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_A_8: 1050f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 1; 1051f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_BW_1: 1052f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 1; 1053f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifdef OPENVG_VERSION_1_1 1054f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_A_1: 1055f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1056f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_A_4: 1057f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1058f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 1059f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sXRGB_8888: 1060f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sARGB_8888: 1061f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sARGB_8888_PRE: 1062f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 4; 1063f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sARGB_1555: 1064f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sARGB_4444: 1065f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 2; 1066f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lXRGB_8888: 1067f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lARGB_8888: 1068f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lARGB_8888_PRE: 1069f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRX_8888: 1070f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRA_8888: 1071f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRA_8888_PRE: 1072f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 4; 1073f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGR_565: 1074f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRA_5551: 1075f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sBGRA_4444: 1076f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 2; 1077f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lBGRX_8888: 1078f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lBGRA_8888: 1079f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lBGRA_8888_PRE: 1080f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sXBGR_8888: 1081f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sABGR_8888: 1082f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sABGR_8888_PRE: 1083f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 4; 1084f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sABGR_1555: 1085f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_sABGR_4444: 1086f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 2; 1087f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lXBGR_8888: 1088f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lABGR_8888: 1089f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case VG_lABGR_8888_PRE: 1090f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 4; 1091f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 1092f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org assert(!"Unknown ReadPixels format"); 1093f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1094f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1095f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org assert(!"Not implemented ReadPixels format"); 1096f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 0; 1097f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1098