15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci EXT_vertex_array_bgra 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_EXT_vertex_array_bgra 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContributors 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Jason Green, TransGaming 125bd8deadSopenharmony_ci Gavriel State, TransGaming 135bd8deadSopenharmony_ci Rob Barris, Blizzard 145bd8deadSopenharmony_ci Mark Krenek, Aspyr 155bd8deadSopenharmony_ci Ryan Gordon, Destineer 165bd8deadSopenharmony_ci Nicholas Vining, Destineer 175bd8deadSopenharmony_ci 185bd8deadSopenharmony_ciContact 195bd8deadSopenharmony_ci 205bd8deadSopenharmony_ci Mark Kilgard, NVIDIA (mjk 'at' nvidia.com) 215bd8deadSopenharmony_ci 225bd8deadSopenharmony_ciStatus 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ci Implemented by NVIDIA, October 2008 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ciVersion 275bd8deadSopenharmony_ci 285bd8deadSopenharmony_ci Last Modified Date: October 28, 2008 295bd8deadSopenharmony_ci Version: 5 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ciNumber 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ci 354 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ciDependencies 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ci This extension is written against the OpenGL 2.1 Specification but 385bd8deadSopenharmony_ci can apply to OpenGL 1.1 and up. 395bd8deadSopenharmony_ci 405bd8deadSopenharmony_ci This extension interacts with EXT_vertex_array. 415bd8deadSopenharmony_ci 425bd8deadSopenharmony_ci This extension interacts with EXT_secondary_color. 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ci This extension interacts with NV_vertex_program. 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ci This extension interacts with ARB_vertex_program. 475bd8deadSopenharmony_ci 485bd8deadSopenharmony_ci This extension interacts with ARB_vertex_shader. 495bd8deadSopenharmony_ci 505bd8deadSopenharmony_ciOverview 515bd8deadSopenharmony_ci 525bd8deadSopenharmony_ci This extension provides a single new component format for vertex 535bd8deadSopenharmony_ci arrays to read 4-component unsigned byte vertex attributes with a 545bd8deadSopenharmony_ci BGRA component ordering. 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ci OpenGL expects vertex arrays containing 4 unsigned bytes per 575bd8deadSopenharmony_ci element to be in the RGBA, STRQ, or XYZW order (reading components 585bd8deadSopenharmony_ci left-to-right in their lower address to higher address order). 595bd8deadSopenharmony_ci Essentially the order the components appear in memory is the order 605bd8deadSopenharmony_ci the components appear in the resulting vertex attribute vector. 615bd8deadSopenharmony_ci 625bd8deadSopenharmony_ci However Direct3D has color (diffuse and specular) vertex arrays 635bd8deadSopenharmony_ci containing 4 unsigned bytes per element that are in a BGRA order 645bd8deadSopenharmony_ci (again reading components left-to-right in their lower address 655bd8deadSopenharmony_ci to higher address order). Direct3D calls this "ARGB" reading the 665bd8deadSopenharmony_ci components in the opposite order (reading components left-to-right 675bd8deadSopenharmony_ci in their higher address to lower address order). This ordering is 685bd8deadSopenharmony_ci generalized in the DirectX 10 by the DXGI_FORMAT_B8G8R8A8_UNORM 695bd8deadSopenharmony_ci format. 705bd8deadSopenharmony_ci 715bd8deadSopenharmony_ci For an OpenGL application to source color data from a vertex 725bd8deadSopenharmony_ci buffer formatted for Direct3D's color array format conventions, 735bd8deadSopenharmony_ci the application is forced to either: 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ci 1. Rely on a vertex program or shader to swizzle the color components 765bd8deadSopenharmony_ci from the BGRA to conventional RGBA order. 775bd8deadSopenharmony_ci 785bd8deadSopenharmony_ci 2. Re-order the color data components in the vertex buffer from 795bd8deadSopenharmony_ci Direct3D's native BGRA order to OpenGL's native RGBA order. 805bd8deadSopenharmony_ci 815bd8deadSopenharmony_ci Neither option is entirely satisfactory. 825bd8deadSopenharmony_ci 835bd8deadSopenharmony_ci Option 1 means vertex shaders have to be re-written to source colors 845bd8deadSopenharmony_ci differently. If the same vertex shader is used with vertex arrays 855bd8deadSopenharmony_ci configured to source the color as 4 floating-point color components, 865bd8deadSopenharmony_ci the swizzle for BGRA colors stored as 4 unsigned bytes is no longer 875bd8deadSopenharmony_ci appropriate. The shader's swizzling of colors becomes dependent on 885bd8deadSopenharmony_ci the type and number of color components. Ideally the vertex shader 895bd8deadSopenharmony_ci should be independent from the format and component ordering of the 905bd8deadSopenharmony_ci data it sources. 915bd8deadSopenharmony_ci 925bd8deadSopenharmony_ci Option 2 is expensive because vertex buffers may have to be 935bd8deadSopenharmony_ci reformatted prior to use. OpenGL treats the memory for vertex arrays 945bd8deadSopenharmony_ci (whether client-side memory or buffer objects) as essentially untyped 955bd8deadSopenharmony_ci memory and vertex arrays can be stored separately, interleaved, 965bd8deadSopenharmony_ci or even interwoven (where multiple arrays overlap with differing 975bd8deadSopenharmony_ci strides and formats). 985bd8deadSopenharmony_ci 995bd8deadSopenharmony_ci Rather than force a re-ordering of either vertex array components 1005bd8deadSopenharmony_ci in memory or a vertex array format-dependent re-ordering of vertex 1015bd8deadSopenharmony_ci shader inputs, OpenGL can simply provide a vertex array format that 1025bd8deadSopenharmony_ci matches the Direct3D color component ordering. 1035bd8deadSopenharmony_ci 1045bd8deadSopenharmony_ci This approach mimics that of the EXT_bgra extension for pixel and 1055bd8deadSopenharmony_ci texel formats except for vertex instead of image data. 1065bd8deadSopenharmony_ci 1075bd8deadSopenharmony_ciNew Procedures and Functions 1085bd8deadSopenharmony_ci 1095bd8deadSopenharmony_ci None 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ciNew Tokens 1125bd8deadSopenharmony_ci 1135bd8deadSopenharmony_ci Accepted by the <size> parameter of ColorPointer, 1145bd8deadSopenharmony_ci SecondaryColorPointer, and VertexAttribPointer: 1155bd8deadSopenharmony_ci 1165bd8deadSopenharmony_ci BGRA 0x80E1 1175bd8deadSopenharmony_ci 1185bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 2.1 Specification (OpenGL Operation) 1195bd8deadSopenharmony_ci 1205bd8deadSopenharmony_ci -- Section 2.8 "Vertex Arrays" (page 24) 1215bd8deadSopenharmony_ci 1225bd8deadSopenharmony_ci Replace the sentence beginning "size, when present, ..." with: 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ci "size, when present, indicates the number of values per vertex that 1255bd8deadSopenharmony_ci are stored in the array as well as their component ordering." 1265bd8deadSopenharmony_ci 1275bd8deadSopenharmony_ci Add these final sentences to the end of the same paragraph: 1285bd8deadSopenharmony_ci 1295bd8deadSopenharmony_ci "The error INVALID_VALUE is generated if size is BGRA and type is 1305bd8deadSopenharmony_ci not UNSIGNED_BYTE. The error INVALID_VALUE is generated by 1315bd8deadSopenharmony_ci VertexAttribPointer if size is BGRA and normalized is FALSE." 1325bd8deadSopenharmony_ci 1335bd8deadSopenharmony_ci Edit Table 2.4 "Vertex array sizes (values per vertex) and data types" 1345bd8deadSopenharmony_ci as follows: 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ci * Rename the "Sizes" column to "Sizes and component ordering". 1375bd8deadSopenharmony_ci 1385bd8deadSopenharmony_ci * Add "BGRA" to the "Sizes and component order" column of the 1395bd8deadSopenharmony_ci following rows: ColorPointer, SecondaryColorPointer, and 1405bd8deadSopenharmony_ci VertexAttribPointer. 1415bd8deadSopenharmony_ci 1425bd8deadSopenharmony_ci These are the commands capable of accepting normalized 1435bd8deadSopenharmony_ci coordinates and accepting 4 for "size" plus the special case of 1445bd8deadSopenharmony_ci SecondaryColorPointer command. 1455bd8deadSopenharmony_ci 1465bd8deadSopenharmony_ci * Add the following sentence to the end of the table caption: 1475bd8deadSopenharmony_ci "If the size parameter is BGRA, the vertex array values are always 1485bd8deadSopenharmony_ci normalized irrespective of the Normalized column." 1495bd8deadSopenharmony_ci 1505bd8deadSopenharmony_ci "The one, two, three, or four values in an array that correspond to 1515bd8deadSopenharmony_ci a single vertex comprise an array element. When the BGRA token is 1525bd8deadSopenharmony_ci specified for size, it indicates four values. The values within 1535bd8deadSopenharmony_ci each array element are stored sequentially in memory. However if 1545bd8deadSopenharmony_ci the size is specified with BGRA, the first, second, third, and fourth 1555bd8deadSopenharmony_ci values of each array element are read from the third, second, first, 1565bd8deadSopenharmony_ci and fourth values in memory respectively." 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 2.1 Specification (Rasterization) 1595bd8deadSopenharmony_ci 1605bd8deadSopenharmony_ci None 1615bd8deadSopenharmony_ci 1625bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 2.1 Specification (Per-Fragment 1635bd8deadSopenharmony_ciOperations and the Frame Buffer) 1645bd8deadSopenharmony_ci 1655bd8deadSopenharmony_ci None 1665bd8deadSopenharmony_ci 1675bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 2.1 Specification (Special 1685bd8deadSopenharmony_ciFunctions) 1695bd8deadSopenharmony_ci 1705bd8deadSopenharmony_ci None 1715bd8deadSopenharmony_ci 1725bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 2.1 Specification (State and 1735bd8deadSopenharmony_ciState Requests) 1745bd8deadSopenharmony_ci 1755bd8deadSopenharmony_ci None 1765bd8deadSopenharmony_ci 1775bd8deadSopenharmony_ciAdditions to the AGL/GLX/WGL Specifications 1785bd8deadSopenharmony_ci 1795bd8deadSopenharmony_ci None 1805bd8deadSopenharmony_ci 1815bd8deadSopenharmony_ciAdditions to the OpenGL Shading Language 1825bd8deadSopenharmony_ci 1835bd8deadSopenharmony_ci None 1845bd8deadSopenharmony_ci 1855bd8deadSopenharmony_ciGLX Protocol 1865bd8deadSopenharmony_ci 1875bd8deadSopenharmony_ci None 1885bd8deadSopenharmony_ci 1895bd8deadSopenharmony_ciErrors 1905bd8deadSopenharmony_ci 1915bd8deadSopenharmony_ci The error INVALID_VALUE is generated when ColorPointer, 1925bd8deadSopenharmony_ci SecondaryColorPointer, or VertexAttribPointer is 1935bd8deadSopenharmony_ci called with size set to BGRA and type is not UNSIGNED_BYTE. 1945bd8deadSopenharmony_ci 1955bd8deadSopenharmony_ci The error INVALID_VALUE is generated when VertexAttribPointer is 1965bd8deadSopenharmony_ci called with size set to BGRA and normalized is FALSE. 1975bd8deadSopenharmony_ci 1985bd8deadSopenharmony_ciDependencies on EXT_vertex_array 1995bd8deadSopenharmony_ci 2005bd8deadSopenharmony_ci This extension's additional behavior for ColorPointer apply to 2015bd8deadSopenharmony_ci ColorPointerEXT too. 2025bd8deadSopenharmony_ci 2035bd8deadSopenharmony_ciDependencies on EXT_secondary_color 2045bd8deadSopenharmony_ci 2055bd8deadSopenharmony_ci This extension's additional behavior for SecondaryColorPointer 2065bd8deadSopenharmony_ci applies to SecondaryColorPointerEXT too. 2075bd8deadSopenharmony_ci 2085bd8deadSopenharmony_ciDependencies on NV_vertex_program 2095bd8deadSopenharmony_ci 2105bd8deadSopenharmony_ci This extension's additional behavior for VertexAttribPointer applies 2115bd8deadSopenharmony_ci to VertexAttribPointerNV too. 2125bd8deadSopenharmony_ci 2135bd8deadSopenharmony_ciDependencies on ARB_vertex_program and ARB_vertex_shader 2145bd8deadSopenharmony_ci 2155bd8deadSopenharmony_ci This extension's additional behavior for VertexAttribPointer applies 2165bd8deadSopenharmony_ci to VertexAttribPointerARB too. 2175bd8deadSopenharmony_ci 2185bd8deadSopenharmony_ciNew State 2195bd8deadSopenharmony_ci 2205bd8deadSopenharmony_ci Change tables 6.6 and 6.7 to fix Type column by making the type 2215bd8deadSopenharmony_ci a k-valued integer where k is 3, 2, and 5 for color, secondary, 2225bd8deadSopenharmony_ci and vertex attrib arrays respectively. 2235bd8deadSopenharmony_ci 2245bd8deadSopenharmony_ci(table 6.6, "Vertex Array Data", p. 271) 2255bd8deadSopenharmony_ci Get Value Type Get Command Initial Value Description Sec Attribute 2265bd8deadSopenharmony_ci --------- ---- ----------- ------------- --------------------- --- --------- 2275bd8deadSopenharmony_ci COLOR_ARRAY_SIZE Z3 GetIntegerv 4 Color components 2.8 vertex-array 2285bd8deadSopenharmony_ci per vertex 2295bd8deadSopenharmony_ci SECONDARY_COLOR_ARRAY_SIZE Z2 GetIntegerv 3 Secondary color 2.8 vertex-array 2305bd8deadSopenharmony_ci components per vertex 2315bd8deadSopenharmony_ci 2325bd8deadSopenharmony_ci(table 6.7, "Vertex Array Data (cont.)", p. 272) 2335bd8deadSopenharmony_ci Get Value Type Get Command Initial Value Description Sec Attribute 2345bd8deadSopenharmony_ci --------- ---- ----------- ------------- --------------------- --- --------- 2355bd8deadSopenharmony_ci VERTEX_ATTRIB_ARRAY_SIZE Z5 GetIntegerv 16+ x Z5 Vertex attrib array 2.8 vertex-array 2365bd8deadSopenharmony_ci size 2375bd8deadSopenharmony_ci 2385bd8deadSopenharmony_ciNew Implementation Dependent State 2395bd8deadSopenharmony_ci 2405bd8deadSopenharmony_ci None 2415bd8deadSopenharmony_ci 2425bd8deadSopenharmony_ciIssues 2435bd8deadSopenharmony_ci 2445bd8deadSopenharmony_ci 1. What should this extension be called? 2455bd8deadSopenharmony_ci 2465bd8deadSopenharmony_ci RESOLVED: EXT_vertex_array_bgra 2475bd8deadSopenharmony_ci 2485bd8deadSopenharmony_ci Because the extension adds a new "vertex array" format with the 2495bd8deadSopenharmony_ci "bgra" component ordering and assuming a normalized representation 2505bd8deadSopenharmony_ci as BGRA with UNSIGNED_BYTE would provide for image data. 2515bd8deadSopenharmony_ci 2525bd8deadSopenharmony_ci 2. How should the vertex array API be changed? 2535bd8deadSopenharmony_ci 2545bd8deadSopenharmony_ci RESOLVED: Allow BGRA as a valid token for the size field of 2555bd8deadSopenharmony_ci vertex array specification commands. While the size parameter 2565bd8deadSopenharmony_ci is of type GLint, the valid sizes are in the 1 to 4 range so 2575bd8deadSopenharmony_ci the GL_BGRA token is easily distinguished from the existing 2585bd8deadSopenharmony_ci small integer values. 2595bd8deadSopenharmony_ci 2605bd8deadSopenharmony_ci This mimics the way OpenGL 1.1 changed the "components" field 2615bd8deadSopenharmony_ci of glTexImage1D and glTexImage2D to specify an internalformat 2625bd8deadSopenharmony_ci rather than simply a number of components from 1 to 4. 2635bd8deadSopenharmony_ci 2645bd8deadSopenharmony_ci This approach has the advantage of not adding any new commands 2655bd8deadSopenharmony_ci or tokens since the GL_BGRA token already exists. 2665bd8deadSopenharmony_ci 2675bd8deadSopenharmony_ci 3. What vertex array specification commands should accept the new 2685bd8deadSopenharmony_ci BGRA vertex array format for their size parameter? 2695bd8deadSopenharmony_ci 2705bd8deadSopenharmony_ci RESOLVED: All vertex array specification commands which accept 4 2715bd8deadSopenharmony_ci as a valid size plus the glSecondaryColorPointer command because 2725bd8deadSopenharmony_ci Direct3D allows a BGRA-ordered secondary color (its specular 2735bd8deadSopenharmony_ci vertex attribute) to be specified. 2745bd8deadSopenharmony_ci 2755bd8deadSopenharmony_ci Because DirectX 10 makes its formats highly orthogonal and it 2765bd8deadSopenharmony_ci allows a corresponding format (DXGI_FORMAT_B8G8R8A8_UNORM), 2775bd8deadSopenharmony_ci the BGRA vertex array format should be similarly general. 2785bd8deadSopenharmony_ci 2795bd8deadSopenharmony_ci 4. Should a 4-component BGRA secondary color be allowed? 2805bd8deadSopenharmony_ci 2815bd8deadSopenharmony_ci RESOLVED: Yes. 2825bd8deadSopenharmony_ci 2835bd8deadSopenharmony_ci DirectX 9 supports a 4-component secondary color. All four 2845bd8deadSopenharmony_ci components should be available to a vertex shader or vertex 2855bd8deadSopenharmony_ci program. Fixed-function operation without lighting enabled 2865bd8deadSopenharmony_ci should pass through the secondary color alpha component. However 2875bd8deadSopenharmony_ci fixed-function lighting specifies its output secondary color alpha 2885bd8deadSopenharmony_ci is always output as 1 and ignores the input secondary color alpha. 2895bd8deadSopenharmony_ci 2905bd8deadSopenharmony_ci 5. So should 4 be allowed as a valid size parameter for 2915bd8deadSopenharmony_ci glSecondaryColorPointer? 2925bd8deadSopenharmony_ci 2935bd8deadSopenharmony_ci RESOLVED: Not for this extension. We leave it to another 2945bd8deadSopenharmony_ci extension or core revision could extend the secondary color to 2955bd8deadSopenharmony_ci 4 components. 2965bd8deadSopenharmony_ci 2975bd8deadSopenharmony_ci 6. Should the BGRA vertex array format only work with the 2985bd8deadSopenharmony_ci GL_UNSIGNED_BYTE type? 2995bd8deadSopenharmony_ci 3005bd8deadSopenharmony_ci RESOLVED: Yes. 3015bd8deadSopenharmony_ci 3025bd8deadSopenharmony_ci This is consistent with Direct3D's use of the D3DCOLOR type which 3035bd8deadSopenharmony_ci is defined with a BGRA ordering and 8-bit normalized components. 3045bd8deadSopenharmony_ci 3055bd8deadSopenharmony_ci 7. How should the BGRA vertex array format's normalized behavior 3065bd8deadSopenharmony_ci interact with the "normalized" parameter of glVertexAttribPointer? 3075bd8deadSopenharmony_ci 3085bd8deadSopenharmony_ci RESOLVED: Since BGRA implies normalization, it should be an 3095bd8deadSopenharmony_ci error to request BGRA with the normalized parameter set to false. 3105bd8deadSopenharmony_ci 3115bd8deadSopenharmony_ci This ensures the following statement in the caption of table 2.4 3125bd8deadSopenharmony_ci remains true: "For generic vertex attributes, fixed-point data 3135bd8deadSopenharmony_ci are normalized if and only if the VertexAttribPointer normalized 3145bd8deadSopenharmony_ci flag is set." 3155bd8deadSopenharmony_ci 3165bd8deadSopenharmony_ci 8. Should the glVertexAttribIPointerEXT command accept GL_BGRA for 3175bd8deadSopenharmony_ci its size parameter? 3185bd8deadSopenharmony_ci 3195bd8deadSopenharmony_ci RESOLVED: No. Because the BGRA vertex array format implies 3205bd8deadSopenharmony_ci normalized component values, that is inconsistent with providing 3215bd8deadSopenharmony_ci integer vertex attributes. 3225bd8deadSopenharmony_ci 3235bd8deadSopenharmony_ci 9. Should this apply to glVertexPointer? 3245bd8deadSopenharmony_ci 3255bd8deadSopenharmony_ci RESOLVED: No. glVertexPointer doesn't support GL_UNSIGNED_BYTE 3265bd8deadSopenharmony_ci as a type so GL_BGRA doesn't make sense. 3275bd8deadSopenharmony_ci 3285bd8deadSopenharmony_ci 10. To what vertex arrays should this extension apply? 3295bd8deadSopenharmony_ci 3305bd8deadSopenharmony_ci RESOLVED: Just primary color (glColorPointer), secondary 3315bd8deadSopenharmony_ci color (glSecondaryColorPointer), and generic vertex attribs 3325bd8deadSopenharmony_ci (glVertexAttribPointer). 3335bd8deadSopenharmony_ci 3345bd8deadSopenharmony_ci The rationale is these are the formats that take 4 component 3355bd8deadSopenharmony_ci attributes that can be normalized (making a special exception to 3365bd8deadSopenharmony_ci treat the secondary color array as having 4 components for the 3375bd8deadSopenharmony_ci purpose of BGRA support to match Direct3D). Texture coordinate 3385bd8deadSopenharmony_ci sets and vertex positions are not normalized. Normals are 3395bd8deadSopenharmony_ci normalized but only 4 coordinates. 3405bd8deadSopenharmony_ci 3415bd8deadSopenharmony_ci 11. What Direct3D 9 functionality provides BGRA vertex arrays? 3425bd8deadSopenharmony_ci 3435bd8deadSopenharmony_ci You can specify BGRA vertex arrays with either Flexible Vertex 3445bd8deadSopenharmony_ci Formats (FVFs) or a Direct3D 9 Vertex Declaration. 3455bd8deadSopenharmony_ci 3465bd8deadSopenharmony_ci The FVF formats are D3DFVF_DIFFUSE and D3DFVF_SPECULAR. 3475bd8deadSopenharmony_ci 3485bd8deadSopenharmony_ci The Vertex Declaration declaration data type is 3495bd8deadSopenharmony_ci D3DDECLTYPE_D3DCOLOR. 3505bd8deadSopenharmony_ci 3515bd8deadSopenharmony_ciRevision History 3525bd8deadSopenharmony_ci 3535bd8deadSopenharmony_ci Rev. Date Author Changes 3545bd8deadSopenharmony_ci ---- -------- --------- ---------------------------------------- 3555bd8deadSopenharmony_ci 1 1/11/07 mjk Initial version 3565bd8deadSopenharmony_ci 2 1/31/07 mjk review comments; issue 9 3575bd8deadSopenharmony_ci 3 7/16/08 mjk Removed TexCoordPointer behavior 3585bd8deadSopenharmony_ci Added issues 10 and 11 3595bd8deadSopenharmony_ci 4 10/7/08 mjk Implemented now 3605bd8deadSopenharmony_ci 5 10/28/08 mjk Provide state tabe updates 361