| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 /* vim: set ts=8 sw=8 noexpandtab: */ | 
|  | 2 //  qcms | 
|  | 3 //  Copyright (C) 2009 Mozilla Foundation | 
|  | 4 //  Copyright (C) 1998-2007 Marti Maria | 
|  | 5 // | 
|  | 6 // Permission is hereby granted, free of charge, to any person obtaining | 
|  | 7 // a copy of this software and associated documentation files (the "Software"), | 
|  | 8 // to deal in the Software without restriction, including without limitation | 
|  | 9 // the rights to use, copy, modify, merge, publish, distribute, sublicense, | 
|  | 10 // and/or sell copies of the Software, and to permit persons to whom the Softwar
     e | 
|  | 11 // is furnished to do so, subject to the following conditions: | 
|  | 12 // | 
|  | 13 // The above copyright notice and this permission notice shall be included in | 
|  | 14 // all copies or substantial portions of the Software. | 
|  | 15 // | 
|  | 16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | 
|  | 17 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO | 
|  | 18 // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | 
|  | 19 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | 
|  | 20 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | 
|  | 21 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | 
|  | 22 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | 
|  | 23 | 
|  | 24 #ifndef _QCMS_HALFFLOAT_H | 
|  | 25 #define _QCMS_HALFFLOAT_H | 
|  | 26 | 
|  | 27 const unsigned short qcms_half_float_base_table[512] = { | 
|  | 28         0,      0,      0,      0,      0,      0,      0,      0,      0,      
     0,      0,      0,      0,      0,      0,      0, | 
|  | 29         0,      0,      0,      0,      0,      0,      0,      0,      0,      
     0,      0,      0,      0,      0,      0,      0, | 
|  | 30         0,      0,      0,      0,      0,      0,      0,      0,      0,      
     0,      0,      0,      0,      0,      0,      0, | 
|  | 31         0,      0,      0,      0,      0,      0,      0,      0,      0,      
     0,      0,      0,      0,      0,      0,      0, | 
|  | 32         0,      0,      0,      0,      0,      0,      0,      0,      0,      
     0,      0,      0,      0,      0,      0,      0, | 
|  | 33         0,      0,      0,      0,      0,      0,      0,      0,      0,      
     0,      0,      0,      0,      0,      0,      0, | 
|  | 34         0,      0,      0,      0,      0,      0,      0,      1,      2,      
     4,      8,      16,     32,     64,     128,    256, | 
|  | 35         512,    1024,   2048,   3072,   4096,   5120,   6144,   7168,   8192,   
     9216,   10240,  11264,  12288,  13312,  14336,  15360, | 
|  | 36         16384,  17408,  18432,  19456,  20480,  21504,  22528,  23552,  24576,  
     25600,  26624,  27648,  28672,  29696,  30720,  31744, | 
|  | 37         31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  
     31744,  31744,  31744,  31744,  31744,  31744,  31744, | 
|  | 38         31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  
     31744,  31744,  31744,  31744,  31744,  31744,  31744, | 
|  | 39         31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  
     31744,  31744,  31744,  31744,  31744,  31744,  31744, | 
|  | 40         31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  
     31744,  31744,  31744,  31744,  31744,  31744,  31744, | 
|  | 41         31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  
     31744,  31744,  31744,  31744,  31744,  31744,  31744, | 
|  | 42         31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  
     31744,  31744,  31744,  31744,  31744,  31744,  31744, | 
|  | 43         31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  31744,  
     31744,  31744,  31744,  31744,  31744,  31744,  31744, | 
|  | 44         32768,  32768,  32768,  32768,  32768,  32768,  32768,  32768,  32768,  
     32768,  32768,  32768,  32768,  32768,  32768,  32768, | 
|  | 45         32768,  32768,  32768,  32768,  32768,  32768,  32768,  32768,  32768,  
     32768,  32768,  32768,  32768,  32768,  32768,  32768, | 
|  | 46         32768,  32768,  32768,  32768,  32768,  32768,  32768,  32768,  32768,  
     32768,  32768,  32768,  32768,  32768,  32768,  32768, | 
|  | 47         32768,  32768,  32768,  32768,  32768,  32768,  32768,  32768,  32768,  
     32768,  32768,  32768,  32768,  32768,  32768,  32768, | 
|  | 48         32768,  32768,  32768,  32768,  32768,  32768,  32768,  32768,  32768,  
     32768,  32768,  32768,  32768,  32768,  32768,  32768, | 
|  | 49         32768,  32768,  32768,  32768,  32768,  32768,  32768,  32768,  32768,  
     32768,  32768,  32768,  32768,  32768,  32768,  32768, | 
|  | 50         32768,  32768,  32768,  32768,  32768,  32768,  32768,  32769,  32770,  
     32772,  32776,  32784,  32800,  32832,  32896,  33024, | 
|  | 51         33280,  33792,  34816,  35840,  36864,  37888,  38912,  39936,  40960,  
     41984,  43008,  44032,  45056,  46080,  47104,  48128, | 
|  | 52         49152,  50176,  51200,  52224,  53248,  54272,  55296,  56320,  57344,  
     58368,  59392,  60416,  61440,  62464,  63488,  64512, | 
|  | 53         64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  
     64512,  64512,  64512,  64512,  64512,  64512,  64512, | 
|  | 54         64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  
     64512,  64512,  64512,  64512,  64512,  64512,  64512, | 
|  | 55         64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  
     64512,  64512,  64512,  64512,  64512,  64512,  64512, | 
|  | 56         64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  
     64512,  64512,  64512,  64512,  64512,  64512,  64512, | 
|  | 57         64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  
     64512,  64512,  64512,  64512,  64512,  64512,  64512, | 
|  | 58         64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  
     64512,  64512,  64512,  64512,  64512,  64512,  64512, | 
|  | 59         64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  64512,  
     64512,  64512,  64512,  64512,  64512,  64512,  64512 | 
|  | 60 }; | 
|  | 61 | 
|  | 62 const unsigned char qcms_half_float_shift_table[512] = { | 
|  | 63         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 64         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 65         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 66         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 67         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 68         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 69         24,     24,     24,     24,     24,     24,     24,     23,     22,     
     21,     20,     19,     18,     17,     16,     15, | 
|  | 70         14,     13,     13,     13,     13,     13,     13,     13,     13,     
     13,     13,     13,     13,     13,     13,     13, | 
|  | 71         13,     13,     13,     13,     13,     13,     13,     13,     13,     
     13,     13,     13,     13,     13,     13,     24, | 
|  | 72         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 73         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 74         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 75         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 76         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 77         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 78         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     13, | 
|  | 79         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 80         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 81         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 82         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 83         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 84         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 85         24,     24,     24,     24,     24,     24,     24,     23,     22,     
     21,     20,     19,     18,     17,     16,     15, | 
|  | 86         14,     13,     13,     13,     13,     13,     13,     13,     13,     
     13,     13,     13,     13,     13,     13,     13, | 
|  | 87         13,     13,     13,     13,     13,     13,     13,     13,     13,     
     13,     13,     13,     13,     13,     13,     24, | 
|  | 88         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 89         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 90         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 91         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 92         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 93         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     24, | 
|  | 94         24,     24,     24,     24,     24,     24,     24,     24,     24,     
     24,     24,     24,     24,     24,     24,     13 | 
|  | 95 }; | 
|  | 96 | 
|  | 97 static inline unsigned short float_to_half_float(float f) | 
|  | 98 { | 
|  | 99         // See Blink::Source/platform/graphics/gpu/WebGLImageConversion.cpp::con
     vertFloatToHalfFloat() and http://crbug.com/491784 | 
|  | 100 | 
|  | 101         unsigned temp = *((unsigned *)(&f)); | 
|  | 102         unsigned signexp = (temp >> 23) & 0x1ff; | 
|  | 103         return qcms_half_float_base_table[signexp] + ((temp & 0x007fffff) >> qcm
     s_half_float_shift_table[signexp]); | 
|  | 104 } | 
|  | 105 | 
|  | 106 #endif | 
| OLD | NEW | 
|---|