diff options
Diffstat (limited to 'src/gallium/state_trackers/vega/vg_translate.c')
-rw-r--r-- | src/gallium/state_trackers/vega/vg_translate.c | 1097 |
1 files changed, 0 insertions, 1097 deletions
diff --git a/src/gallium/state_trackers/vega/vg_translate.c b/src/gallium/state_trackers/vega/vg_translate.c deleted file mode 100644 index 4aad8991bdd..00000000000 --- a/src/gallium/state_trackers/vega/vg_translate.c +++ /dev/null @@ -1,1097 +0,0 @@ -/************************************************************************** - * - * Copyright 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -#include "vg_translate.h" - -#include "pipe/p_format.h" -#include "util/u_pack_color.h" - -void _vega_pack_rgba_span_float(struct vg_context *ctx, - VGuint n, VGfloat rgba[][4], - VGImageFormat dstFormat, - void *dstAddr) -{ - VGuint i; - - switch (dstFormat) { - case VG_sRGBX_8888: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = 255; - dst[i] = r << 24 | g << 16 | b << 8 | a; - } - return; - } - break; - case VG_sRGBA_8888: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = r << 24 | g << 16 | b << 8 | a; - } - return; - } - break; - case VG_sRGBA_8888_PRE: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = r << 24 | g << 16 | b << 8 | a; - } - return; - } - break; - case VG_sRGB_565: { - VGshort *dst = (VGshort *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - r = (r / 255.0) * 32; - g = (g / 255.0) * 32; - b = (b / 255.0) * 32; - - dst[i] = b | g << 5 | r << 11; - } - return; - } - break; - case VG_sRGBA_5551: { - VGshort *dst = (VGshort *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b, a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - r = (r / 255.0) * 32; - g = (g / 255.0) * 32; - b = (b / 255.0) * 32; - a = (a / 255.0); - - dst[i] = a | b << 1 | g << 6 | r << 11; - } - return; - } - break; - case VG_sRGBA_4444: { - VGshort *dst = (VGshort *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b, a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - r = (r / 255.0) * 16; - g = (g / 255.0) * 16; - b = (b / 255.0) * 16; - a = (a / 255.0) * 16; - - dst[i] = a | b << 4 | g << 8 | r << 12; - } - return; - } - break; - case VG_sL_8: { - VGubyte *dst = (VGubyte *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte a; - a = float_to_ubyte(rgba[i][3]); - - dst[i] = a; - } - return; - } - break; - case VG_lRGBX_8888: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = 255; - dst[i] = r << 24 | g << 16 | b << 8 | a; - } - return; - } - break; - case VG_lRGBA_8888: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = r << 24 | g << 16 | b << 8 | a; - } - return; - } - case VG_lRGBA_8888_PRE: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = r << 24 | g << 16 | b << 8 | a; - } - return; - } - break; - case VG_lL_8: { - VGubyte *dst = (VGubyte *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte a; - a = float_to_ubyte(rgba[i][3]); - dst[i] = a; - } - return; - } - break; - case VG_A_8: { - VGubyte *dst = (VGubyte *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte a; - a = float_to_ubyte(rgba[i][3]); - - dst[i] = a; - } - return; - } - break; - case VG_BW_1: { - VGshort *dst = (VGshort *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b, a; - VGubyte res; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - - res = (r + g + b + a)/4; - dst[i] = (res & (128)); - } - return; - } - break; -#ifdef OPENVG_VERSION_1_1 - case VG_A_1: { - VGshort *dst = (VGshort *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte a; - a = float_to_ubyte(rgba[i][3]); - - dst[i] = (a & (128)); - } - return; - } - break; - case VG_A_4: { - VGshort *dst = (VGshort *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte a; - VGubyte res; - a = float_to_ubyte(rgba[i][3]); - - res = a/4; - dst[i] = (res & (128)); - } - return; - } - break; -#endif - case VG_sXRGB_8888: - break; - case VG_sARGB_8888: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = a << 24 | r << 16 | g << 8 | b; - } - return; - } - break; - case VG_sARGB_8888_PRE: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = a << 24 | r << 16 | g << 8 | b; - } - return; - } - break; - case VG_sARGB_1555: - break; - case VG_sARGB_4444: - break; - case VG_lXRGB_8888: - break; - case VG_lARGB_8888: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = a << 24 | r << 16 | g << 8 | b; - } - return; - } - break; - case VG_lARGB_8888_PRE: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = a << 24 | r << 16 | g << 8 | b; - } - return; - } - break; - case VG_sBGRX_8888: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = 0xff; - dst[i] = b << 24 | g << 16 | r << 8 | a; - } - return; - } - break; - case VG_sBGRA_8888: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = b << 24 | g << 16 | r << 8 | a; - } - return; - } - break; - case VG_sBGRA_8888_PRE: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = b << 24 | g << 16 | r << 8 | a; - } - return; - } - break; - case VG_sBGR_565: - break; - case VG_sBGRA_5551: - break; - case VG_sBGRA_4444: - break; - case VG_lBGRX_8888: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = 0xff; - dst[i] = b << 24 | g << 16 | r << 8 | a; - } - return; - } - break; - case VG_lBGRA_8888: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = b << 24 | g << 16 | r << 8 | a; - } - return; - } - break; - case VG_lBGRA_8888_PRE: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = b << 24 | g << 16 | r << 8 | a; - } - return; - } - break; - case VG_sXBGR_8888: - break; - case VG_sABGR_8888: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = a << 24 | b << 16 | g << 8 | r; - } - return; - } - break; - case VG_sABGR_8888_PRE: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = a << 24 | b << 16 | g << 8 | r; - } - return; - } - break; - case VG_sABGR_1555: - break; - case VG_sABGR_4444: - break; - case VG_lXBGR_8888: - break; - case VG_lABGR_8888: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = a << 24 | b << 16 | g << 8 | r; - } - return; - } - break; - case VG_lABGR_8888_PRE: { - VGint *dst = (VGint *)dstAddr; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = float_to_ubyte(rgba[i][0]); - g = float_to_ubyte(rgba[i][1]); - b = float_to_ubyte(rgba[i][2]); - a = float_to_ubyte(rgba[i][3]); - dst[i] = a << 24 | b << 16 | g << 8 | r; - } - return; - } - break; - default: - assert(!"Unknown ReadPixels format"); - break; - } - assert(!"Not implemented ReadPixels format"); -} - -void _vega_unpack_float_span_rgba(struct vg_context *ctx, - VGuint n, - VGuint offset, - const void * data, - VGImageFormat dataFormat, - VGfloat rgba[][4]) -{ - VGuint i; - union util_color uc; - - switch (dataFormat) { - case VG_sRGBX_8888: { - VGuint *src = (VGuint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = (*src >> 24) & 0xff; - g = (*src >> 16) & 0xff; - b = (*src >> 8) & 0xff; - a = 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - } - return; - case VG_sRGBA_8888: { - VGuint *src = (VGuint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = (*src >> 24) & 0xff; - g = (*src >> 16) & 0xff; - b = (*src >> 8) & 0xff; - a = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_sRGBA_8888_PRE: { - VGint *src = (VGint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = (*src >> 24) & 0xff; - g = (*src >> 16) & 0xff; - b = (*src >> 8) & 0xff; - a = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_sRGB_565: { - VGshort *src = (VGshort *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGfloat clr[4]; - clr[0] = ((*src >> 11) & 31)/31.; - clr[1] = ((*src >> 5) & 63)/63.; - clr[2] = ((*src >> 0) & 31)/31.; - clr[3] = 1.f; - - util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - } - return; - case VG_sRGBA_5551: { - VGshort *src = (VGshort *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGfloat clr[4]; - clr[0] = ((*src >> 10) & 31)/31.; - clr[1] = ((*src >> 5) & 31)/31.; - clr[2] = ((*src >> 1) & 31)/31.; - clr[3] = ((*src >> 0) & 1)/1.; - - util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - } - return; - case VG_sRGBA_4444: { - VGshort *src = (VGshort *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGfloat clr[4]; - clr[0] = ((*src >> 12) & 15)/15.; - clr[1] = ((*src >> 8) & 15)/15.; - clr[2] = ((*src >> 4) & 15)/15.; - clr[3] = ((*src >> 0) & 15)/15.; - - util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - } - return; - case VG_sL_8: { - VGubyte *src = (VGubyte *)data; - src += offset; - for (i = 0; i < n; ++i) { - util_pack_color_ub(0xff, 0xff, 0xff, *src, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - } - return; - case VG_lRGBX_8888: { - VGuint *src = (VGuint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = (*src >> 24) & 0xff; - g = (*src >> 16) & 0xff; - b = (*src >> 8) & 0xff; - a = 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - } - return; - case VG_lRGBA_8888: { - VGint *src = (VGint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = (*src >> 24) & 0xff; - g = (*src >> 16) & 0xff; - b = (*src >> 8) & 0xff; - a = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_lRGBA_8888_PRE: { - VGint *src = (VGint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - r = (*src >> 24) & 0xff; - g = (*src >> 16) & 0xff; - b = (*src >> 8) & 0xff; - a = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_lL_8: { - VGubyte *src = (VGubyte *)data; - src += offset; - for (i = 0; i < n; ++i) { - util_pack_color_ub(0xff, 0xff, 0xff, *src, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - } - return; - case VG_A_8: { - VGubyte *src = (VGubyte *)data; - src += offset; - for (i = 0; i < n; ++i) { - util_pack_color_ub(0xff, 0xff, 0xff, *src, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - } - return; - case VG_BW_1: { - VGubyte *src = (VGubyte *)data; - src += offset; - for (i = 0; i < n; i += 8) { - VGfloat clr[4]; - VGuint j; - for (j = 0; j < 8 && j < n ; ++j) { - VGint shift = j; - clr[0] = (((*src) & (1<<shift)) >> shift); - clr[1] = clr[0]; - clr[2] = clr[0]; - clr[3] = 1.f; - - util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i+j][0] = uc.f[0]; - rgba[i+j][1] = uc.f[1]; - rgba[i+j][2] = uc.f[2]; - rgba[i+j][3] = uc.f[3]; - } - ++src; - } - } - return; -#ifdef OPENVG_VERSION_1_1 - case VG_A_1: { - VGubyte *src = (VGubyte *)data; - src += offset; - for (i = 0; i < n; i += 8) { - VGfloat clr[4]; - VGuint j; - for (j = 0; j < 8 && j < n ; ++j) { - VGint shift = j; - clr[0] = 0.f; - clr[1] = 0.f; - clr[2] = 0.f; - clr[3] = (((*src) & (1<<shift)) >> shift); - - util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i+j][0] = uc.f[0]; - rgba[i+j][1] = uc.f[1]; - rgba[i+j][2] = uc.f[2]; - rgba[i+j][3] = uc.f[3]; - } - ++src; - } - } - return; - case VG_A_4: { - VGubyte *src = (VGubyte *)data; - src += offset/2; - for (i = 0; i < n; i += 2) { - VGfloat clr[4]; - VGuint j; - for (j = 0; j < n && j < 2; ++j) { - VGint bitter, shift; - if (j == 0) { - bitter = 0x0f; - shift = 0; - } else { - bitter = 0xf0; - shift = 4; - } - clr[0] = 0.f; - clr[1] = 0.f; - clr[2] = 0.f; - clr[3] = ((*src) & (bitter)) >> shift; - - util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i+j][0] = uc.f[0]; - rgba[i+j][1] = uc.f[1]; - rgba[i+j][2] = uc.f[2]; - rgba[i+j][3] = uc.f[3]; - } - ++src; - } - } - return; -#endif - case VG_sXRGB_8888: - break; - case VG_sARGB_8888: { - VGuint *src = (VGuint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - a = (*src >> 24) & 0xff; - r = (*src >> 16) & 0xff; - g = (*src >> 8) & 0xff; - b = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_sARGB_8888_PRE: { - VGuint *src = (VGuint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - a = (*src >> 24) & 0xff; - r = (*src >> 16) & 0xff; - g = (*src >> 8) & 0xff; - b = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_sARGB_1555: - break; - case VG_sARGB_4444: - break; - case VG_lXRGB_8888: - break; - case VG_lARGB_8888: { - VGint *src = (VGint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - a = (*src >> 24) & 0xff; - r = (*src >> 16) & 0xff; - g = (*src >> 8) & 0xff; - b = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_lARGB_8888_PRE: { - VGint *src = (VGint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - a = (*src >> 24) & 0xff; - r = (*src >> 16) & 0xff; - g = (*src >> 8) & 0xff; - b = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_sBGRX_8888: - break; - case VG_sBGRA_8888: { - VGuint *src = (VGuint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - b = (*src >> 24) & 0xff; - g = (*src >> 16) & 0xff; - r = (*src >> 8) & 0xff; - a = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_sBGRA_8888_PRE: { - VGuint *src = (VGuint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - b = (*src >> 24) & 0xff; - g = (*src >> 16) & 0xff; - r = (*src >> 8) & 0xff; - a = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_sBGR_565: - break; - case VG_sBGRA_5551: - break; - case VG_sBGRA_4444: - break; - case VG_lBGRX_8888: - break; - case VG_lBGRA_8888: { - VGuint *src = (VGuint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - b = (*src >> 24) & 0xff; - g = (*src >> 16) & 0xff; - r = (*src >> 8) & 0xff; - a = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_lBGRA_8888_PRE: { - VGuint *src = (VGuint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - b = (*src >> 24) & 0xff; - g = (*src >> 16) & 0xff; - r = (*src >> 8) & 0xff; - a = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_sXBGR_8888: - break; - case VG_sABGR_8888: { - VGuint *src = (VGuint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - a = (*src >> 24) & 0xff; - b = (*src >> 16) & 0xff; - g = (*src >> 8) & 0xff; - r = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_sABGR_8888_PRE: { - VGuint *src = (VGuint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - a = (*src >> 24) & 0xff; - b = (*src >> 16) & 0xff; - g = (*src >> 8) & 0xff; - r = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_sABGR_1555: - break; - case VG_sABGR_4444: - break; - case VG_lXBGR_8888: - break; - case VG_lABGR_8888: { - VGuint *src = (VGuint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - a = (*src >> 24) & 0xff; - b = (*src >> 16) & 0xff; - g = (*src >> 8) & 0xff; - r = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - case VG_lABGR_8888_PRE: { - VGuint *src = (VGuint *)data; - src += offset; - for (i = 0; i < n; ++i) { - VGubyte r, g, b ,a; - a = (*src >> 24) & 0xff; - b = (*src >> 16) & 0xff; - g = (*src >> 8) & 0xff; - r = (*src >> 0) & 0xff; - - util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc); - rgba[i][0] = uc.f[0]; - rgba[i][1] = uc.f[1]; - rgba[i][2] = uc.f[2]; - rgba[i][3] = uc.f[3]; - ++src; - } - return; - } - break; - default: - assert(!"Unknown ReadPixels format"); - break; - } - assert(!"Not implemented ReadPixels format"); -} - -VGint _vega_size_for_format(VGImageFormat dataFormat) -{ - switch (dataFormat) { - case VG_sRGBX_8888: - case VG_sRGBA_8888: - case VG_sRGBA_8888_PRE: - return 4; - case VG_sRGB_565: - case VG_sRGBA_5551: - case VG_sRGBA_4444: - return 2; - case VG_sL_8: - return 1; - case VG_lRGBX_8888: - case VG_lRGBA_8888: - case VG_lRGBA_8888_PRE: - return 4; - case VG_lL_8: - return 1; - case VG_A_8: - return 1; - case VG_BW_1: - return 1; -#ifdef OPENVG_VERSION_1_1 - case VG_A_1: - break; - case VG_A_4: - break; -#endif - case VG_sXRGB_8888: - case VG_sARGB_8888: - case VG_sARGB_8888_PRE: - return 4; - case VG_sARGB_1555: - case VG_sARGB_4444: - return 2; - case VG_lXRGB_8888: - case VG_lARGB_8888: - case VG_lARGB_8888_PRE: - case VG_sBGRX_8888: - case VG_sBGRA_8888: - case VG_sBGRA_8888_PRE: - return 4; - case VG_sBGR_565: - case VG_sBGRA_5551: - case VG_sBGRA_4444: - return 2; - case VG_lBGRX_8888: - case VG_lBGRA_8888: - case VG_lBGRA_8888_PRE: - case VG_sXBGR_8888: - case VG_sABGR_8888: - case VG_sABGR_8888_PRE: - return 4; - case VG_sABGR_1555: - case VG_sABGR_4444: - return 2; - case VG_lXBGR_8888: - case VG_lABGR_8888: - case VG_lABGR_8888_PRE: - return 4; - default: - assert(!"Unknown ReadPixels format"); - break; - } - assert(!"Not implemented ReadPixels format"); - return 0; -} |