15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci INTEL_parallel_arrays 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_INTEL_parallel_arrays 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciVersion 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci $Date: 1997/05/08 22:57:31 $ $Revision: 1.1 $ INITIAL 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciNumber 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci 136 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ciDependencies 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ci OpenGL 1.1 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ciOverview 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ci This extension adds the ability to format vertex arrays in a way that's 245bd8deadSopenharmony_ciefficient for SIMD architectures as well as caching. In addition to storing 255bd8deadSopenharmony_civertex data in staggered in a single array, or sparsely in separate arrays as 265bd8deadSopenharmony_cipossible with existing vertex arrays, coordinates may be stored in individual 275bd8deadSopenharmony_ciarrays. 285bd8deadSopenharmony_ciThe parallel array mode is enabled using Enable(PARALLEL_ARRAYS). 295bd8deadSopenharmony_ciPointers to the coordinate arrays are specified using new vector versions of the 305bd8deadSopenharmony_ciPointer functions. 315bd8deadSopenharmony_ci 325bd8deadSopenharmony_ciIssues 335bd8deadSopenharmony_ci 345bd8deadSopenharmony_ci Should an Enable/Disbale be used to switch to/from parallel arrays, or 355bd8deadSopenharmony_ci just infer it from the last type of Pointer called? 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ci Is stride needed for anything? 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ci Should this be called Coordinate Arrays? 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci Should the <pointer> to the Pointerv funcions be (void *) or (void **)? 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ciReasoning 445bd8deadSopenharmony_ci 455bd8deadSopenharmony_ci Alternative methods for specifying vertex data are provided for 465bd8deadSopenharmony_ci vertex, normal, color, and texture pointers. Need to put in argument 475bd8deadSopenharmony_ci for why this is faster on some architectures (cache lines, etc). 485bd8deadSopenharmony_ci 495bd8deadSopenharmony_ci 505bd8deadSopenharmony_ciNew Procedures and Functions 515bd8deadSopenharmony_ci 525bd8deadSopenharmony_ci void VertexPointervINTEL(int size, 535bd8deadSopenharmony_ci enum type, 545bd8deadSopenharmony_ci const void** pointer); 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ci void NormalPointervINTEL(enum type, 575bd8deadSopenharmony_ci const void** pointer); 585bd8deadSopenharmony_ci 595bd8deadSopenharmony_ci void ColorPointervINTEL(int size, 605bd8deadSopenharmony_ci enum type, 615bd8deadSopenharmony_ci const void** pointer); 625bd8deadSopenharmony_ci 635bd8deadSopenharmony_ci void TexCoordPointervINTEL(int size, 645bd8deadSopenharmony_ci enum type, 655bd8deadSopenharmony_ci const void** pointer); 665bd8deadSopenharmony_ci 675bd8deadSopenharmony_ciNew Tokens 685bd8deadSopenharmony_ci 695bd8deadSopenharmony_ci Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, and 705bd8deadSopenharmony_ci by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and 715bd8deadSopenharmony_ci GetDoublev: 725bd8deadSopenharmony_ci 735bd8deadSopenharmony_ci PARALLEL_ARRAYS_INTEL 0x83F4 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetPointerv: 765bd8deadSopenharmony_ci 775bd8deadSopenharmony_ci VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 785bd8deadSopenharmony_ci NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 795bd8deadSopenharmony_ci COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 805bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.1 Specification (OpenGL Operation) 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ci Array Specification 855bd8deadSopenharmony_ci ------------------- 865bd8deadSopenharmony_ci 875bd8deadSopenharmony_ci VertexPointervINTEL specifies the location and data format of an 885bd8deadSopenharmony_ci array of vertex coordinates. <pointer> specifies an array of pointers, 895bd8deadSopenharmony_ci where pointer[0] is a pointer to the x coordinate of the first vertex in the 905bd8deadSopenharmony_ci array, pointer[1] specifies a pointer to the y coordinate of the first 915bd8deadSopenharmony_ci vertex in the array, pointer[2] specifies a pointer to the z coordinate of 925bd8deadSopenharmony_ci the first vertex in the array, and pointer[3] specifies a pointer to the w 935bd8deadSopenharmony_ci coordinate of the first vertex in the array. 945bd8deadSopenharmony_ci <type> specifies the data type of each coordinate in the array, and must be 955bd8deadSopenharmony_ci one of SHORT, INT, FLOAT, or DOUBLE, implying GL data types short, int, 965bd8deadSopenharmony_ci float, and double respectively. <size> specifies the number of coordinates 975bd8deadSopenharmony_ci per vertex, and must be 2, 3, or 4. 985bd8deadSopenharmony_ci 995bd8deadSopenharmony_ci NormalPointervINTEL specifies the location and data format of an 1005bd8deadSopenharmony_ci array of normals. <pointer> specifies an array of pointers, where 1015bd8deadSopenharmony_ci pointer[0] is a pointer to the x coordinate of the first normal in the 1025bd8deadSopenharmony_ci array, pointer[1] specifies a pointer to the y coordinate of the first 1035bd8deadSopenharmony_ci normal in the array, pointer[2] specifies a pointer to the z coordinate of 1045bd8deadSopenharmony_ci the first normal in the array, and pointer[3] specifies a pointer to the w 1055bd8deadSopenharmony_ci coordinate of the first normal in the array. <type> specifies the 1065bd8deadSopenharmony_ci data type of each coordinate in the array, and must be one of BYTE, SHORT, 1075bd8deadSopenharmony_ci INT, FLOAT, or DOUBLE, implying GL data types byte, short, int, float, 1085bd8deadSopenharmony_ci and double respectively. It is understood that each normal comprises 1095bd8deadSopenharmony_ci three coordinates. 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ci ColorPointervINTEL specifies the location and data format of an 1125bd8deadSopenharmony_ci array of color components. <pointer> specifies an array of pointers, 1135bd8deadSopenharmony_ci where pointer[0] is a pointer to the r coordinate of the first color in the 1145bd8deadSopenharmony_ci array, pointer[1] specifies a pointer to the g coordinate of the first 1155bd8deadSopenharmony_ci color in the array, pointer[2] specifies a pointer to the b coordinate of 1165bd8deadSopenharmony_ci the first color in the array, and pointer[3] specifies a pointer to the a 1175bd8deadSopenharmony_ci coordinate of the first color in the array. <type> specifies the data type 1185bd8deadSopenharmony_ci of each component in the array, and must be one of BYTE, UNSIGNED_BYTE, 1195bd8deadSopenharmony_ci SHORT, UNSIGNED_SHORT, INT, UNSIGNED_INT, FLOAT, or DOUBLE_EXT, implying GL 1205bd8deadSopenharmony_ci data types byte, ubyte, short, ushort, int, uint, float, and double 1215bd8deadSopenharmony_ci respectively. <size> specifies the number of components per color, and must 1225bd8deadSopenharmony_ci be 3 or 4. 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ci TexCoordPointervINTEL specifies the location and data format of an 1255bd8deadSopenharmony_ci array of texture coordinates. <pointer> specifies an array of pointers, 1265bd8deadSopenharmony_ci where pointer[0] is a pointer to the u coordinate of the first element in 1275bd8deadSopenharmony_ci the array, pointer[1] specifies a pointer to the v coordinate of the first 1285bd8deadSopenharmony_ci element in the array, pointer[2] specifies a pointer to the s coordinate of 1295bd8deadSopenharmony_ci the first element in the array, and pointer[3] specifies a pointer to the t 1305bd8deadSopenharmony_ci coordinate of the first element in the array. <type> specifies the data 1315bd8deadSopenharmony_ci type of each coordinate in the array, and must be one of SHORT, INT, FLOAT, 1325bd8deadSopenharmony_ci or DOUBLE, implying GL data types short, int, float, and double 1335bd8deadSopenharmony_ci respectively. <size> specifies the number of coordinates per element, and 1345bd8deadSopenharmony_ci must be 1, 2, 3, or 4. 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ci Rendering the Arrays 1375bd8deadSopenharmony_ci -------------------- 1385bd8deadSopenharmony_ci 1395bd8deadSopenharmony_ci When ArrayElement is called, a single vertex is drawn, using vertex 1405bd8deadSopenharmony_ci and attribute data taken from location <i> of the enabled arrays. The 1415bd8deadSopenharmony_ci semantics of ArrayElement are defined in the C-code below: 1425bd8deadSopenharmony_ci 1435bd8deadSopenharmony_ci void ArrayElement (int i) { 1445bd8deadSopenharmony_ci byte* p, px, py, pz, pw, pr, pg, pb, pa; 1455bd8deadSopenharmony_ci if (NORMAL_ARRAY) { 1465bd8deadSopenharmony_ci if (PARALLEL_ARRAYS) { 1475bd8deadSopenharmony_ci px = (byte*)normal_x_pointer + i * sizeof(normal_type); 1485bd8deadSopenharmony_ci py = (byte*)normal_y_pointer + i * sizeof(normal_type); 1495bd8deadSopenharmony_ci pz = (byte*)normal_z_pointer + i * sizeof(normal_type); 1505bd8deadSopenharmony_ci Normal3<normal_type> (*(normal_type*)px, *(normal_type*)py, 1515bd8deadSopenharmony_ci *(normal_type*)pz); 1525bd8deadSopenharmony_ci } else { 1535bd8deadSopenharmony_ci if (normal_stride == 0) 1545bd8deadSopenharmony_ci p = (byte*)normal_pointer + i * 3 * 1555bd8deadSopenharmony_ci sizeof(normal_type); 1565bd8deadSopenharmony_ci else 1575bd8deadSopenharmony_ci p = (byte*)normal_pointer + i * normal_stride; 1585bd8deadSopenharmony_ci Normal3<normal_type>v ((normal_type*)p); 1595bd8deadSopenharmony_ci } 1605bd8deadSopenharmony_ci } 1615bd8deadSopenharmony_ci if (COLOR_ARRAY) { 1625bd8deadSopenharmony_ci if (PARALLEL_ARRAYS) { 1635bd8deadSopenharmony_ci pr = (byte*)color_r_pointer + i * sizeof(color_type); 1645bd8deadSopenharmony_ci pg = (byte*)color_g_pointer + i * sizeof(color_type); 1655bd8deadSopenharmony_ci pb = (byte*)color_b_pointer + i * sizeof(color_type); 1665bd8deadSopenharmony_ci switch (<color_size>){ 1675bd8deadSopenharmony_ci case 3: 1685bd8deadSopenharmony_ci Color<color_size><color_type> (*(color_type*)pr, 1695bd8deadSopenharmony_ci *(color_type*)pg, *(color_type*)pb); break; 1705bd8deadSopenharmony_ci case 4: 1715bd8deadSopenharmony_ci pa = (byte*)color_a_pointer + i * 1725bd8deadSopenharmony_ci sizeof(color_type); 1735bd8deadSopenharmony_ci Color<color_size><color_type> (*(color_type*)pr, 1745bd8deadSopenharmony_ci *(color_type*)pg, *(color_type*)pb, 1755bd8deadSopenharmony_ci *(color_type*)pa); break; 1765bd8deadSopenharmony_ci } 1775bd8deadSopenharmony_ci } else { 1785bd8deadSopenharmony_ci if (color_stride == 0) 1795bd8deadSopenharmony_ci p = (byte*)color_pointer + 1805bd8deadSopenharmony_ci i * color_size * sizeof(color_type); 1815bd8deadSopenharmony_ci else 1825bd8deadSopenharmony_ci p = (byte*)color_pointer + i * color_stride; 1835bd8deadSopenharmony_ci Color<color_size><color_type>v ((color_type*)p); 1845bd8deadSopenharmony_ci } 1855bd8deadSopenharmony_ci } 1865bd8deadSopenharmony_ci if (INDEX_ARRAY) { 1875bd8deadSopenharmony_ci if (index_stride == 0) 1885bd8deadSopenharmony_ci p = (byte*)index_pointer + i * sizeof(index_type); 1895bd8deadSopenharmony_ci else 1905bd8deadSopenharmony_ci p = (byte*)index_pointer + i * index_stride; 1915bd8deadSopenharmony_ci Index<index_type>v ((index_type*)p); 1925bd8deadSopenharmony_ci } 1935bd8deadSopenharmony_ci if (TEXTURE_COORD_ARRAY_EXT) { 1945bd8deadSopenharmony_ci if (PARALLEL_ARRAYS) { 1955bd8deadSopenharmony_ci pu = (byte*)texcoord_u_pointer + i * sizeof(texcoord_type); 1965bd8deadSopenharmony_ci switch (<texcoord_size>){ 1975bd8deadSopenharmony_ci case 1: 1985bd8deadSopenharmony_ci TexCoord<texcoord_size><texcoord_type> 1995bd8deadSopenharmony_ci (*(texcoord_type*)pu); break; 2005bd8deadSopenharmony_ci case 2: 2015bd8deadSopenharmony_ci pv = (byte*)texcoord_v_pointer + i * 2025bd8deadSopenharmony_ci sizeof(texcoord_type); 2035bd8deadSopenharmony_ci TexCoord<texcoord_size><texcoord_type> 2045bd8deadSopenharmony_ci (*(texcoord_type*)pu, *(texcoord_type*)pv); 2055bd8deadSopenharmony_ci break; 2065bd8deadSopenharmony_ci case 3: 2075bd8deadSopenharmony_ci ps = (byte*)texcoord_s_pointer + i * 2085bd8deadSopenharmony_ci sizeof(texcoord_type); 2095bd8deadSopenharmony_ci TexCoord<texcoord_size><texcoord_type> 2105bd8deadSopenharmony_ci (*(texcoord_type*)pu, *(texcoord_type*)pv, 2115bd8deadSopenharmony_ci *(texcoord_type*)ps); break; 2125bd8deadSopenharmony_ci case 4: 2135bd8deadSopenharmony_ci pt = (byte*)texcoord_t_pointer + i * 2145bd8deadSopenharmony_ci sizeof(texcoord_type); 2155bd8deadSopenharmony_ci TexCoord<texcoord_size><texcoord_type> 2165bd8deadSopenharmony_ci (*(texcoord_type*)pu, *(texcoord_type*)pv, 2175bd8deadSopenharmony_ci *(texcoord_type*)ps, *(texcoord_type*)pt); 2185bd8deadSopenharmony_ci break; 2195bd8deadSopenharmony_ci } 2205bd8deadSopenharmony_ci } else { 2215bd8deadSopenharmony_ci if (texcoord_stride == 0) 2225bd8deadSopenharmony_ci p = (byte*)texcoord_pointer + 2235bd8deadSopenharmony_ci i * texcoord_size * sizeof(texcoord_type); 2245bd8deadSopenharmony_ci else 2255bd8deadSopenharmony_ci p = (byte*)texcoord_pointer + i * texcoord_stride; 2265bd8deadSopenharmony_ci TexCoord<texcoord_size><texcoord_type>v 2275bd8deadSopenharmony_ci ((texcoord_type*)p); 2285bd8deadSopenharmony_ci } 2295bd8deadSopenharmony_ci } 2305bd8deadSopenharmony_ci if (EDGE_FLAG_ARRAY) { 2315bd8deadSopenharmony_ci if (edgeflag_stride == 0) 2325bd8deadSopenharmony_ci p = (byte*)edgeflag_pointer + i * sizeof(boolean); 2335bd8deadSopenharmony_ci else 2345bd8deadSopenharmony_ci p = (byte*)edgeflag_pointer + i * edgeflag_stride; 2355bd8deadSopenharmony_ci EdgeFlagv ((boolean*)p); 2365bd8deadSopenharmony_ci } 2375bd8deadSopenharmony_ci if (VERTEX_ARRAY) { 2385bd8deadSopenharmony_ci if (PARALLEL_ARRAYS) { 2395bd8deadSopenharmony_ci px = (byte*)vertex_x_pointer + i * sizeof(vertex_type); 2405bd8deadSopenharmony_ci py = (byte*)vertex_y_pointer + i * sizeof(vertex_type); 2415bd8deadSopenharmony_ci Normal3<normal_type> ((normal_type*)px, (normal_type*)py, 2425bd8deadSopenharmony_ci (normal_type*)pz); 2435bd8deadSopenharmony_ci switch (<vertex_size>){ 2445bd8deadSopenharmony_ci case 2: 2455bd8deadSopenharmony_ci Vertex<vertex_size><vertex_type> (*(vertex_type*)px, 2465bd8deadSopenharmony_ci *(vertex_type*)py); 2475bd8deadSopenharmony_ci case 3: 2485bd8deadSopenharmony_ci pz = (byte*)vertex_z_pointer + i * 2495bd8deadSopenharmony_ci sizeof(vertex_type); 2505bd8deadSopenharmony_ci Vertex<vertex_size><vertex_type> (*(vertex_type*)px, 2515bd8deadSopenharmony_ci *(vertex_type*)py, *(vertex_type*)pz); 2525bd8deadSopenharmony_ci case 4: 2535bd8deadSopenharmony_ci pw = (byte*)vertex_w_pointer + i * 2545bd8deadSopenharmony_ci sizeof(vertex_type); 2555bd8deadSopenharmony_ci Vertex<vertex_size><vertex_type> (*(vertex_type*)px, 2565bd8deadSopenharmony_ci *(vertex_type*)py, *(vertex_type*)pz, 2575bd8deadSopenharmony_ci *(vertex_type*)pw); 2585bd8deadSopenharmony_ci } 2595bd8deadSopenharmony_ci } else { 2605bd8deadSopenharmony_ci if (vertex_stride == 0) 2615bd8deadSopenharmony_ci p = (byte*)vertex_pointer + 2625bd8deadSopenharmony_ci i * vertex_size * sizeof(vertex_type); 2635bd8deadSopenharmony_ci else 2645bd8deadSopenharmony_ci p = (byte*)vertex_pointer + i * vertex_stride; 2655bd8deadSopenharmony_ci Vertex<vertex_size><vertex_type>v ((vertex_type*)p); 2665bd8deadSopenharmony_ci } 2675bd8deadSopenharmony_ci } 2685bd8deadSopenharmony_ci } 2695bd8deadSopenharmony_ci 2705bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.0 Specification (Rasterization) 2715bd8deadSopenharmony_ci 2725bd8deadSopenharmony_ci None 2735bd8deadSopenharmony_ci 2745bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations 2755bd8deadSopenharmony_ciand the Frame buffer) 2765bd8deadSopenharmony_ci 2775bd8deadSopenharmony_ci None 2785bd8deadSopenharmony_ci 2795bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.0 Specification (Special Functions) 2805bd8deadSopenharmony_ci 2815bd8deadSopenharmony_ci Array specification commands VertexParallelPointerINTEL, 2825bd8deadSopenharmony_ci NormalParallelPointerINTEL, ColorParallelPointerINTEL, and 2835bd8deadSopenharmony_ci TexCoordParallelPointerINTEL specify client side state, and are therefore 2845bd8deadSopenharmony_ci not included in display lists. Likewise Enable and Disable, when 2855bd8deadSopenharmony_ci called with <cap> set to PARALLEL_ARRAYS_INTEL, are not included in display 2865bd8deadSopenharmony_ci lists. 2875bd8deadSopenharmony_ci 2885bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.0 Specification (State and State Requests) 2895bd8deadSopenharmony_ci 2905bd8deadSopenharmony_ci GetPointerv returns in <param> the array pointer value specified 2915bd8deadSopenharmony_ci by <pname>. GetPointerv additional accepts the following values for <pname> 2925bd8deadSopenharmony_ci 2935bd8deadSopenharmony_ci VERTEX_ARRAY_PARALLEL_POINTERS_INTEL, NORMAL_ARRAY_PARALLEL_POINTERS_INTEL, 2945bd8deadSopenharmony_ci COLOR_ARRAY_PARALLEL_POINTERS_INTEL, 2955bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL. 2965bd8deadSopenharmony_ci In this case, <param> will return an array of pointers. 2975bd8deadSopenharmony_ci 2985bd8deadSopenharmony_ciAdditions to the GLX Specification 2995bd8deadSopenharmony_ci 3005bd8deadSopenharmony_ci None 3015bd8deadSopenharmony_ci 3025bd8deadSopenharmony_ciGLX Protocol 3035bd8deadSopenharmony_ci 3045bd8deadSopenharmony_ci None 3055bd8deadSopenharmony_ci 3065bd8deadSopenharmony_ciErrors 3075bd8deadSopenharmony_ci 3085bd8deadSopenharmony_ci INVALID_VALUE is generated if VertexPointervINTEL parameter <size> 3095bd8deadSopenharmony_ci is not 2, 3, or 4. 3105bd8deadSopenharmony_ci 3115bd8deadSopenharmony_ci INVALID_ENUM is generated if VertexPointervINTEL parameter <type> 3125bd8deadSopenharmony_ci is not SHORT, INT, FLOAT, or DOUBLE. 3135bd8deadSopenharmony_ci 3145bd8deadSopenharmony_ci INVALID_ENUM is generated if NormalPointervINTEL parameter <type> is 3155bd8deadSopenharmony_ci not BYTE, SHORT, INT, FLOAT, or DOUBLE. 3165bd8deadSopenharmony_ci 3175bd8deadSopenharmony_ci INVALID_VALUE is generated if ColorPointervINTEL parameter <size> is 3185bd8deadSopenharmony_ci not 3 or 4. 3195bd8deadSopenharmony_ci 3205bd8deadSopenharmony_ci INVALID_ENUM is generated if ColorPointervINTEL parameter <type> is 3215bd8deadSopenharmony_ci not BYTE, UNSIGNED_BYTE, SHORT, UNSIGNED_SHORT, INT, UNSIGNED_INT, FLOAT, 3225bd8deadSopenharmony_ci or DOUBLE. 3235bd8deadSopenharmony_ci 3245bd8deadSopenharmony_ci INVALID_VALUE is generated if TexCoordPointervINTEL parameter <size> 3255bd8deadSopenharmony_ci is not 1, 2, 3, or 4. 3265bd8deadSopenharmony_ci 3275bd8deadSopenharmony_ci INVALID_ENUM is generated if TexCoordPointervINTEL parameter <type> is not 3285bd8deadSopenharmony_ci SHORT, INT, FLOAT, or DOUBLE. 3295bd8deadSopenharmony_ci 3305bd8deadSopenharmony_ci INVALID_ENUM is generated if GetPointerv parameter <pname> is not 3315bd8deadSopenharmony_ci VERTEX_ARRAY_POINTER, NORMAL_ARRAY_POINTER, 3325bd8deadSopenharmony_ci COLOR_ARRAY_POINTER, INDEX_ARRAY_POINTER, 3335bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_POINTER, EDGE_FLAG_ARRAY_POINTER, or 3345bd8deadSopenharmony_ci VERTEX_ARRAY_PARALLEL_POINTERS_INTEL, NORMAL_ARRAY_PARALLEL_POINTERS_INTEL, 3355bd8deadSopenharmony_ci COLOR_ARRAY_PARALLEL_POINTERS_INTEL, 3365bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 3375bd8deadSopenharmony_ci 3385bd8deadSopenharmony_ciNew State 3395bd8deadSopenharmony_ci Initial 3405bd8deadSopenharmony_ci Get Value Get Command Type Value Attrib 3415bd8deadSopenharmony_ci --------- ----------- ---- ------- ------ 3425bd8deadSopenharmony_ci PARALLEL_ARRAYS_INTEL IsEnabled B False client 3435bd8deadSopenharmony_ci VERTEX_ARRAY_PARRALEL_POINTERS_INTEL GetPointerv Z+ 0 client 3445bd8deadSopenharmony_ci NORMAL_ARRAY_PARALLEL_POINTERS_INTEL GetPointerv Z+ 0 client 3455bd8deadSopenharmony_ci COLOR_ARRAY_PARALLEL_POINTERS_INTEL GetPointervEXT Z+ 0 client 3465bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL GetPointerv Z+ 0 client 3475bd8deadSopenharmony_ci 3485bd8deadSopenharmony_ciNew Implementation Dependent State 3495bd8deadSopenharmony_ci 3505bd8deadSopenharmony_ci None 351