sales@scenomics.com +1 650 396 9674

Testing Shader Buffer Read/Write Capabilities

In this exercise you'll learn how to check if your GPU correctly reads and writes values to shader buffers. Driver bugs are infrequent and these tests let you know if there are problems you should be aware of. It's also worth mentioning that Scenomics uses these tests to verify our OpenGL implementation. We've found plenty of our own bugs this way.

Start The Shader Application

  1. Start the Shader app. (Start » Programs » Scenomics » Shader) or (Windows® key and then type 'Shader' to find the app icon.)

    The application displays a splash screen and then the application desktop appears.

    This is a picture of the desktop.

Run Shader Buffer Write/Read Test Command

  1. Examine the main menu and select File » Run Tests.

    The application displays a list of tests that you can run.

  2. Select Test Shader Buffer Read-Write from the listed options and click OK or hit ENTER when you are finished.

    This is going to determine if your GPU is capable of reading and writing shader buffer values correctly. Verification is performed by writing the uniform values and then assigning them to variables of the same type declared in shader storage buffer objects. We'll explore the test code later.

    Note that some GPUs do not support large shaders. If your GPU cannot compile this shader, you'll need to disable some of the code. That is discussed at the end of this exercise.

    //////////////////////////////////////////////////
    // Starting Shader Buffer Tests
    //////////////////////////////////////////////////
    
    Found test GLSL: D:\Release6\Content\Tests\GPU\test_shader_buffer_read_write.glsl
    Setting up program to run compute shader using GLSL #version 430.
    Successfully compiled shader program.
    Successfully set shader program active on rendering device.
    Validated binding index: 'test_buffer' buffer index is: 0
    Validated buffer size: 'test_buffer' buffer size is 15808 bytes.
    Successfully created buffer 'test_buffer' on device.
    
    //////////////////////////////////////////////////
    test_bool
    //////////////////////////////////////////////////
    
    a_bWrite is: true
    a_bRead is:  true
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_bool
    a_oInfo.Index...........................0
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................0
    a_oInfo.Size............................1
    a_oInfo.Type............................35670
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................4
    
    //////////////////////////////////////////////////
    test_bool_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    0,
    1
    
    Read values:
    0,
    1,
    0,
    1
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_bool_array[0]
    a_oInfo.Index...........................1
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................16
    a_oInfo.Size............................4
    a_oInfo.Type............................35670
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_bvec22
    //////////////////////////////////////////////////
    
    Write values:
    1, 0, 0, 0
    
    Read values:
    1, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_bvec2
    a_oInfo.Index...........................2
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................80
    a_oInfo.Size............................1
    a_oInfo.Type............................35671
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................8
    
    //////////////////////////////////////////////////
    test_bvec33
    //////////////////////////////////////////////////
    
    Write values:
    1, 0, 1, 0
    
    Read values:
    1, 0, 1, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_bvec3
    a_oInfo.Index...........................4
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................96
    a_oInfo.Size............................1
    a_oInfo.Type............................35672
    a_oInfo.TypeSize........................12
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................12
    
    //////////////////////////////////////////////////
    test_bvec44
    //////////////////////////////////////////////////
    
    Write values:
    1, 0, 1, 0
    
    Read values:
    1, 0, 1, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_bvec4
    a_oInfo.Index...........................6
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................112
    a_oInfo.Size............................1
    a_oInfo.Type............................35673
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................16
    
    //////////////////////////////////////////////////
    test_bvec2_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    0,
    0,
    1,
    0,
    0,
    0,
    0,
    1,
    0,
    0,
    1,
    0,
    0,
    0
    
    Read values:
    0,
    1,
    0,
    0,
    1,
    0,
    0,
    0,
    0,
    1,
    0,
    0,
    1,
    0,
    0,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_bvec2_array[0]
    a_oInfo.Index...........................3
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................128
    a_oInfo.Size............................4
    a_oInfo.Type............................35671
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_bvec3_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    0,
    0,
    1,
    0,
    1,
    0,
    0,
    1,
    0,
    0,
    1,
    0,
    1,
    0
    
    Read values:
    0,
    1,
    0,
    0,
    1,
    0,
    1,
    0,
    0,
    1,
    0,
    0,
    1,
    0,
    1,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_bvec3_array[0]
    a_oInfo.Index...........................5
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................192
    a_oInfo.Size............................4
    a_oInfo.Type............................35672
    a_oInfo.TypeSize........................12
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_bvec4_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    0,
    1,
    1,
    0,
    1,
    0,
    0,
    1,
    0,
    1,
    1,
    0,
    1,
    0
    
    Read values:
    0,
    1,
    0,
    1,
    1,
    0,
    1,
    0,
    0,
    1,
    0,
    1,
    1,
    0,
    1,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_bvec4_array[0]
    a_oInfo.Index...........................7
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................256
    a_oInfo.Size............................4
    a_oInfo.Type............................35673
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_uint8_t
    //////////////////////////////////////////////////
    
    a_uWrite is: 32
    a_uRead is:  32
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uint8_t
    a_oInfo.Index...........................154
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................320
    a_oInfo.Size............................1
    a_oInfo.Type............................36844
    a_oInfo.TypeSize........................1
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................1
    
    //////////////////////////////////////////////////
    test_uint8_t_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3
    
    Read values:
    0,
    1,
    2,
    3
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uint8_t_array[0]
    a_oInfo.Index...........................155
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................336
    a_oInfo.Size............................4
    a_oInfo.Type............................36844
    a_oInfo.TypeSize........................1
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_u8vec2
    //////////////////////////////////////////////////
    
    Write values:
    32, 64, 0, 0
    
    Read values:
    32, 64, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u8vec2
    a_oInfo.Index...........................142
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................400
    a_oInfo.Size............................1
    a_oInfo.Type............................36845
    a_oInfo.TypeSize........................2
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................2
    
    //////////////////////////////////////////////////
    test_u8vec3
    //////////////////////////////////////////////////
    
    Write values:
    32, 64, 96, 0
    
    Read values:
    32, 64, 96, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u8vec3
    a_oInfo.Index...........................144
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................404
    a_oInfo.Size............................1
    a_oInfo.Type............................36846
    a_oInfo.TypeSize........................3
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................3
    
    //////////////////////////////////////////////////
    test_u8vec4
    //////////////////////////////////////////////////
    
    Write values:
    32, 64, 96, 127
    
    Read values:
    32, 64, 96, 127
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u8vec4
    a_oInfo.Index...........................146
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................408
    a_oInfo.Size............................1
    a_oInfo.Type............................36847
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................4
    
    //////////////////////////////////////////////////
    test_u8vec2_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Read values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u8vec2_array[0]
    a_oInfo.Index...........................143
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................416
    a_oInfo.Size............................4
    a_oInfo.Type............................36845
    a_oInfo.TypeSize........................2
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_u8vec3_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Read values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u8vec3_array[0]
    a_oInfo.Index...........................145
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................480
    a_oInfo.Size............................4
    a_oInfo.Type............................36846
    a_oInfo.TypeSize........................3
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_u8vec4_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Read values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u8vec4_array[0]
    a_oInfo.Index...........................147
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................544
    a_oInfo.Size............................4
    a_oInfo.Type............................36847
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_uint16_t
    //////////////////////////////////////////////////
    
    a_uWrite is: 32
    a_uRead is:  32
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uint16_t
    a_oInfo.Index...........................148
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................608
    a_oInfo.Size............................1
    a_oInfo.Type............................36848
    a_oInfo.TypeSize........................2
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................2
    
    //////////////////////////////////////////////////
    test_uint16_t_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3
    
    Read values:
    0,
    1,
    2,
    3
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uint16_t_array[0]
    a_oInfo.Index...........................149
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................624
    a_oInfo.Size............................4
    a_oInfo.Type............................36848
    a_oInfo.TypeSize........................2
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_u16vec2
    //////////////////////////////////////////////////
    
    Write values:
    32, 64, 0, 0
    
    Read values:
    32, 64, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u16vec2
    a_oInfo.Index...........................130
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................688
    a_oInfo.Size............................1
    a_oInfo.Type............................36849
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................4
    
    //////////////////////////////////////////////////
    test_u16vec3
    //////////////////////////////////////////////////
    
    Write values:
    32, 64, 96, 0
    
    Read values:
    32, 64, 96, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u16vec3
    a_oInfo.Index...........................132
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................696
    a_oInfo.Size............................1
    a_oInfo.Type............................36850
    a_oInfo.TypeSize........................6
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................6
    
    //////////////////////////////////////////////////
    test_u16vec4
    //////////////////////////////////////////////////
    
    Write values:
    32, 64, 96, 127
    
    Read values:
    32, 64, 96, 127
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u16vec4
    a_oInfo.Index...........................134
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................704
    a_oInfo.Size............................1
    a_oInfo.Type............................36851
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................8
    
    //////////////////////////////////////////////////
    test_u16vec2_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Read values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u16vec2_array[0]
    a_oInfo.Index...........................131
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................720
    a_oInfo.Size............................4
    a_oInfo.Type............................36849
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_u16vec3_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Read values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u16vec3_array[0]
    a_oInfo.Index...........................133
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................784
    a_oInfo.Size............................4
    a_oInfo.Type............................36850
    a_oInfo.TypeSize........................6
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_u16vec4_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Read values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u16vec4_array[0]
    a_oInfo.Index...........................135
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................848
    a_oInfo.Size............................4
    a_oInfo.Type............................36851
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_uint32
    //////////////////////////////////////////////////
    
    a_uWrite is: 1128256512
    a_uRead is:  1128256512
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uint32
    a_oInfo.Index...........................150
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................912
    a_oInfo.Size............................1
    a_oInfo.Type............................5125
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................4
    
    //////////////////////////////////////////////////
    test_uint32_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3
    
    Read values:
    0,
    1,
    2,
    3
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uint32_array[0]
    a_oInfo.Index...........................151
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................928
    a_oInfo.Size............................4
    a_oInfo.Type............................5125
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_uvec2
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0
    
    Read values:
    1, 2, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uvec2
    a_oInfo.Index...........................156
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................992
    a_oInfo.Size............................1
    a_oInfo.Type............................36294
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................8
    
    //////////////////////////////////////////////////
    test_uvec3
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0
    
    Read values:
    1, 2, 3, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uvec3
    a_oInfo.Index...........................158
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1008
    a_oInfo.Size............................1
    a_oInfo.Type............................36295
    a_oInfo.TypeSize........................12
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................12
    
    //////////////////////////////////////////////////
    test_uvec4
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4
    
    Read values:
    1, 2, 3, 4
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uvec4
    a_oInfo.Index...........................160
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1024
    a_oInfo.Size............................1
    a_oInfo.Type............................36296
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................16
    
    //////////////////////////////////////////////////
    test_uvec2_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Read values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uvec2_array[0]
    a_oInfo.Index...........................157
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1040
    a_oInfo.Size............................4
    a_oInfo.Type............................36294
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_uvec3_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Read values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uvec3_array[0]
    a_oInfo.Index...........................159
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1104
    a_oInfo.Size............................4
    a_oInfo.Type............................36295
    a_oInfo.TypeSize........................12
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_uvec4_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Read values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uvec4_array[0]
    a_oInfo.Index...........................161
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1168
    a_oInfo.Size............................4
    a_oInfo.Type............................36296
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_uint64_t
    //////////////////////////////////////////////////
    
    a_uWrite is: 80000000000
    a_uRead is:  80000000000
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uint64_t
    a_oInfo.Index...........................152
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1232
    a_oInfo.Size............................1
    a_oInfo.Type............................5135
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................8
    
    //////////////////////////////////////////////////
    test_uint64_t_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3
    
    Read values:
    0,
    1,
    2,
    3
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_uint64_t_array[0]
    a_oInfo.Index...........................153
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1248
    a_oInfo.Size............................4
    a_oInfo.Type............................5135
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_u64vec2
    //////////////////////////////////////////////////
    
    Write values:
    9783498217, 13893274982, 0, 0
    
    Read values:
    9783498217, 13893274982, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u64vec2
    a_oInfo.Index...........................136
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1312
    a_oInfo.Size............................1
    a_oInfo.Type............................36853
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................16
    
    //////////////////////////////////////////////////
    test_u64vec3
    //////////////////////////////////////////////////
    
    Write values:
    9783498217, 13893274982, 18364363, 0
    
    Read values:
    9783498217, 13893274982, 18364363, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u64vec3
    a_oInfo.Index...........................138
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1344
    a_oInfo.Size............................1
    a_oInfo.Type............................36854
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................24
    
    //////////////////////////////////////////////////
    test_u64vec4
    //////////////////////////////////////////////////
    
    Write values:
    9783498217, 13893274982, 18364363, 483734843
    
    Read values:
    9783498217, 13893274982, 18364363, 483734843
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u64vec4
    a_oInfo.Index...........................140
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1376
    a_oInfo.Size............................1
    a_oInfo.Type............................36855
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................32
    
    //////////////////////////////////////////////////
    test_u64vec2_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Read values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u64vec2_array[0]
    a_oInfo.Index...........................137
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1408
    a_oInfo.Size............................4
    a_oInfo.Type............................36853
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_u64vec3_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Read values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u64vec3_array[0]
    a_oInfo.Index...........................139
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1472
    a_oInfo.Size............................4
    a_oInfo.Type............................36854
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_u64vec4_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Read values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_u64vec4_array[0]
    a_oInfo.Index...........................141
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1600
    a_oInfo.Size............................4
    a_oInfo.Type............................36855
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_int8_t
    //////////////////////////////////////////////////
    
    a_iWrite is: 32
    a_iRead is:  32
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_int8_t
    a_oInfo.Index...........................86
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1728
    a_oInfo.Size............................1
    a_oInfo.Type............................36832
    a_oInfo.TypeSize........................1
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................1
    
    //////////////////////////////////////////////////
    test_int8_t_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3
    
    Read values:
    0,
    1,
    2,
    3
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_int8_t_array[0]
    a_oInfo.Index...........................87
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1744
    a_oInfo.Size............................4
    a_oInfo.Type............................36832
    a_oInfo.TypeSize........................1
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_i8vec2
    //////////////////////////////////////////////////
    
    Write values:
    32, 64, 0, 0
    
    Read values:
    32, 64, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i8vec2
    a_oInfo.Index...........................74
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1808
    a_oInfo.Size............................1
    a_oInfo.Type............................36833
    a_oInfo.TypeSize........................2
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................2
    
    //////////////////////////////////////////////////
    test_i8vec3
    //////////////////////////////////////////////////
    
    Write values:
    32, 64, 96, 0
    
    Read values:
    32, 64, 96, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i8vec3
    a_oInfo.Index...........................76
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1812
    a_oInfo.Size............................1
    a_oInfo.Type............................36834
    a_oInfo.TypeSize........................3
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................3
    
    //////////////////////////////////////////////////
    test_i8vec4
    //////////////////////////////////////////////////
    
    Write values:
    32, 64, 96, 127
    
    Read values:
    32, 64, 96, 127
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i8vec4
    a_oInfo.Index...........................78
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1816
    a_oInfo.Size............................1
    a_oInfo.Type............................36835
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................4
    
    //////////////////////////////////////////////////
    test_i8vec2_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Read values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i8vec2_array[0]
    a_oInfo.Index...........................75
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1824
    a_oInfo.Size............................4
    a_oInfo.Type............................36833
    a_oInfo.TypeSize........................2
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_i8vec3_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Read values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i8vec3_array[0]
    a_oInfo.Index...........................77
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1888
    a_oInfo.Size............................4
    a_oInfo.Type............................36834
    a_oInfo.TypeSize........................3
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_i8vec4_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Read values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i8vec4_array[0]
    a_oInfo.Index...........................79
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................1952
    a_oInfo.Size............................4
    a_oInfo.Type............................36835
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_int16_t
    //////////////////////////////////////////////////
    
    a_iWrite is: 32
    a_iRead is:  32
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_int16_t
    a_oInfo.Index...........................80
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2016
    a_oInfo.Size............................1
    a_oInfo.Type............................36836
    a_oInfo.TypeSize........................2
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................2
    
    //////////////////////////////////////////////////
    test_int16_t_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3
    
    Read values:
    0,
    1,
    2,
    3
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_int16_t_array[0]
    a_oInfo.Index...........................81
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2032
    a_oInfo.Size............................4
    a_oInfo.Type............................36836
    a_oInfo.TypeSize........................2
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_i16vec2
    //////////////////////////////////////////////////
    
    Write values:
    32, 64, 0, 0
    
    Read values:
    32, 64, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i16vec2
    a_oInfo.Index...........................62
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2096
    a_oInfo.Size............................1
    a_oInfo.Type............................36837
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................4
    
    //////////////////////////////////////////////////
    test_i16vec3
    //////////////////////////////////////////////////
    
    Write values:
    32, 64, 96, 0
    
    Read values:
    32, 64, 96, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i16vec3
    a_oInfo.Index...........................64
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2104
    a_oInfo.Size............................1
    a_oInfo.Type............................36838
    a_oInfo.TypeSize........................6
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................6
    
    //////////////////////////////////////////////////
    test_i16vec4
    //////////////////////////////////////////////////
    
    Write values:
    32, 64, 96, 127
    
    Read values:
    32, 64, 96, 127
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i16vec4
    a_oInfo.Index...........................66
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2112
    a_oInfo.Size............................1
    a_oInfo.Type............................36839
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................8
    
    //////////////////////////////////////////////////
    test_i16vec2_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Read values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i16vec2_array[0]
    a_oInfo.Index...........................63
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2128
    a_oInfo.Size............................4
    a_oInfo.Type............................36837
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_i16vec3_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Read values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i16vec3_array[0]
    a_oInfo.Index...........................65
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2192
    a_oInfo.Size............................4
    a_oInfo.Type............................36838
    a_oInfo.TypeSize........................6
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_i16vec4_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Read values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i16vec4_array[0]
    a_oInfo.Index...........................67
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2256
    a_oInfo.Size............................4
    a_oInfo.Type............................36839
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_int32
    //////////////////////////////////////////////////
    
    a_iWrite is: 32
    a_iRead is:  32
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_int32
    a_oInfo.Index...........................82
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2320
    a_oInfo.Size............................1
    a_oInfo.Type............................5124
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................4
    
    //////////////////////////////////////////////////
    test_int32_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3
    
    Read values:
    0,
    1,
    2,
    3
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_int32_array[0]
    a_oInfo.Index...........................83
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2336
    a_oInfo.Size............................4
    a_oInfo.Type............................5124
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_ivec2
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0
    
    Read values:
    1, 2, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_ivec2
    a_oInfo.Index...........................88
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2400
    a_oInfo.Size............................1
    a_oInfo.Type............................35667
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................8
    
    //////////////////////////////////////////////////
    test_ivec3
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0
    
    Read values:
    1, 2, 3, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_ivec3
    a_oInfo.Index...........................90
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2416
    a_oInfo.Size............................1
    a_oInfo.Type............................35668
    a_oInfo.TypeSize........................12
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................12
    
    //////////////////////////////////////////////////
    test_ivec4
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4
    
    Read values:
    1, 2, 3, 4
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_ivec4
    a_oInfo.Index...........................92
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2432
    a_oInfo.Size............................1
    a_oInfo.Type............................35669
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................16
    
    //////////////////////////////////////////////////
    test_ivec2_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Read values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_ivec2_array[0]
    a_oInfo.Index...........................89
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2448
    a_oInfo.Size............................4
    a_oInfo.Type............................35667
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_ivec3_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Read values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_ivec3_array[0]
    a_oInfo.Index...........................91
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2512
    a_oInfo.Size............................4
    a_oInfo.Type............................35668
    a_oInfo.TypeSize........................12
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_ivec4_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Read values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_ivec4_array[0]
    a_oInfo.Index...........................93
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2576
    a_oInfo.Size............................4
    a_oInfo.Type............................35669
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_int64_t
    //////////////////////////////////////////////////
    
    a_iWrite is: 80000000000
    a_iRead is:  80000000000
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_int64_t
    a_oInfo.Index...........................84
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2640
    a_oInfo.Size............................1
    a_oInfo.Type............................5134
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................8
    
    //////////////////////////////////////////////////
    test_int64_t_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3
    
    Read values:
    0,
    1,
    2,
    3
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_int64_t_array[0]
    a_oInfo.Index...........................85
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2656
    a_oInfo.Size............................4
    a_oInfo.Type............................5134
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_i64vec2
    //////////////////////////////////////////////////
    
    Write values:
    9783498217, 13893274982, 0, 0
    
    Read values:
    9783498217, 13893274982, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i64vec2
    a_oInfo.Index...........................68
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2720
    a_oInfo.Size............................1
    a_oInfo.Type............................36841
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................16
    
    //////////////////////////////////////////////////
    test_i64vec3
    //////////////////////////////////////////////////
    
    Write values:
    9783498217, 13893274982, -18364363, 0
    
    Read values:
    9783498217, 13893274982, -18364363, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i64vec3
    a_oInfo.Index...........................70
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2752
    a_oInfo.Size............................1
    a_oInfo.Type............................36842
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................24
    
    //////////////////////////////////////////////////
    test_i64vec4
    //////////////////////////////////////////////////
    
    Write values:
    9783498217, 13893274982, -18364363, -483734843
    
    Read values:
    9783498217, 13893274982, -18364363, -483734843
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i64vec4
    a_oInfo.Index...........................72
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2784
    a_oInfo.Size............................1
    a_oInfo.Type............................36843
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................32
    
    //////////////////////////////////////////////////
    test_i64vec2_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Read values:
    0,
    1,
    0,
    0,
    4,
    5,
    0,
    0,
    8,
    9,
    0,
    0,
    12,
    13,
    0,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i64vec2_array[0]
    a_oInfo.Index...........................69
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2816
    a_oInfo.Size............................4
    a_oInfo.Type............................36841
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_i64vec3_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Read values:
    0,
    1,
    2,
    0,
    4,
    5,
    6,
    0,
    8,
    9,
    10,
    0,
    12,
    13,
    14,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i64vec3_array[0]
    a_oInfo.Index...........................71
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................2880
    a_oInfo.Size............................4
    a_oInfo.Type............................36842
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_i64vec4_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Read values:
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_i64vec4_array[0]
    a_oInfo.Index...........................73
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3008
    a_oInfo.Size............................4
    a_oInfo.Type............................36843
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_float16_t
    //////////////////////////////////////////////////
    
    a_fWrite is: 1.50000000000
    a_fRead is:  1.50000000000
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_float16_t
    a_oInfo.Index...........................56
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3136
    a_oInfo.Size............................1
    a_oInfo.Type............................36856
    a_oInfo.TypeSize........................2
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................2
    
    //////////////////////////////////////////////////
    test_float16_t_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3
    
    Read values:
    0,
    1,
    2,
    3
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_float16_t_array[0]
    a_oInfo.Index...........................57
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3152
    a_oInfo.Size............................4
    a_oInfo.Type............................36856
    a_oInfo.TypeSize........................2
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_f16vec2
    //////////////////////////////////////////////////
    
    Write values:
    1.09960937500, 2.25000000000, 0.000000000000, 0.000000000000
    
    Read values:
    1.09960937500, 2.25000000000, 0.000000000000, 0.000000000000
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_f16vec2
    a_oInfo.Index...........................50
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3216
    a_oInfo.Size............................1
    a_oInfo.Type............................36857
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................4
    
    //////////////////////////////////////////////////
    test_f16vec3
    //////////////////////////////////////////////////
    
    Write values:
    1.09960937500, 2.25000000000, 3.32421875000, 0.000000000000
    
    Read values:
    1.09960937500, 2.25000000000, 3.32421875000, 0.000000000000
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_f16vec3
    a_oInfo.Index...........................52
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3224
    a_oInfo.Size............................1
    a_oInfo.Type............................36858
    a_oInfo.TypeSize........................6
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................6
    
    //////////////////////////////////////////////////
    test_f16vec4
    //////////////////////////////////////////////////
    
    Write values:
    1.09960937500, 2.25000000000, 3.32421875000, 4.42187500000
    
    Read values:
    1.09960937500, 2.25000000000, 3.32421875000, 4.42187500000
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_f16vec4
    a_oInfo.Index...........................54
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3232
    a_oInfo.Size............................1
    a_oInfo.Type............................36859
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................8
    
    //////////////////////////////////////////////////
    test_f16vec2_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    14336,
    15872,
    0,
    0,
    17536,
    17792,
    0,
    0,
    18496,
    18624,
    0,
    0,
    19008,
    19136,
    0,
    0
    
    Read values:
    14336,
    15872,
    0,
    0,
    17536,
    17792,
    0,
    0,
    18496,
    18624,
    0,
    0,
    19008,
    19136,
    0,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_f16vec2_array[0]
    a_oInfo.Index...........................51
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3248
    a_oInfo.Size............................4
    a_oInfo.Type............................36857
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_f16vec3_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    14336,
    15872,
    16640,
    0,
    17536,
    17792,
    18048,
    0,
    18496,
    18624,
    18752,
    0,
    19008,
    19136,
    19264,
    0
    
    Read values:
    14336,
    15872,
    16640,
    0,
    17536,
    17792,
    18048,
    0,
    18496,
    18624,
    18752,
    0,
    19008,
    19136,
    19264,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_f16vec3_array[0]
    a_oInfo.Index...........................53
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3312
    a_oInfo.Size............................4
    a_oInfo.Type............................36858
    a_oInfo.TypeSize........................6
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_f16vec4_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    14336,
    15872,
    16640,
    17152,
    17536,
    17792,
    18048,
    18304,
    18496,
    18624,
    18752,
    18880,
    19008,
    19136,
    19264,
    19392
    
    Read values:
    14336,
    15872,
    16640,
    17152,
    17536,
    17792,
    18048,
    18304,
    18496,
    18624,
    18752,
    18880,
    19008,
    19136,
    19264,
    19392
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_f16vec4_array[0]
    a_oInfo.Index...........................55
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3376
    a_oInfo.Size............................4
    a_oInfo.Type............................36859
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_float32
    //////////////////////////////////////////////////
    
    a_fWrite is: 32.3230000000
    a_fRead is:  32.3230018616
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_float32
    a_oInfo.Index...........................58
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3440
    a_oInfo.Size............................1
    a_oInfo.Type............................5126
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................4
    
    //////////////////////////////////////////////////
    test_float32_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3
    
    Read values:
    0,
    1,
    2,
    3
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_float32_array[0]
    a_oInfo.Index...........................59
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3456
    a_oInfo.Size............................4
    a_oInfo.Type............................5126
    a_oInfo.TypeSize........................4
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_vec2
    //////////////////////////////////////////////////
    
    Write values:
    1.00000000000, 2.00000000000, 0.000000000000, 0.000000000000
    
    Read values:
    1.00000000000, 2.00000000000, 0.000000000000, 0.000000000000
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_vec2
    a_oInfo.Index...........................162
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3520
    a_oInfo.Size............................1
    a_oInfo.Type............................35664
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................8
    
    //////////////////////////////////////////////////
    test_vec3
    //////////////////////////////////////////////////
    
    Write values:
    1.00000000000, 2.00000000000, 3.00000000000, 0.000000000000
    
    Read values:
    1.00000000000, 2.00000000000, 3.00000000000, 0.000000000000
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_vec3
    a_oInfo.Index...........................164
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3536
    a_oInfo.Size............................1
    a_oInfo.Type............................35665
    a_oInfo.TypeSize........................12
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................12
    
    //////////////////////////////////////////////////
    test_vec4
    //////////////////////////////////////////////////
    
    Write values:
    1.00000000000, 2.00000000000, 3.00000000000, 4.00000000000
    
    Read values:
    1.00000000000, 2.00000000000, 3.00000000000, 4.00000000000
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_vec4
    a_oInfo.Index...........................166
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3552
    a_oInfo.Size............................1
    a_oInfo.Type............................35666
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................16
    
    //////////////////////////////////////////////////
    test_vec2_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0.5,
    1.5,
    0,
    0,
    4.5,
    5.5,
    0,
    0,
    8.5,
    9.5,
    0,
    0,
    12.5,
    13.5,
    0,
    0
    
    Read values:
    0.5,
    1.5,
    0,
    0,
    4.5,
    5.5,
    0,
    0,
    8.5,
    9.5,
    0,
    0,
    12.5,
    13.5,
    0,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_vec2_array[0]
    a_oInfo.Index...........................163
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3568
    a_oInfo.Size............................4
    a_oInfo.Type............................35664
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_vec3_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0.5,
    1.5,
    2.5,
    0,
    4.5,
    5.5,
    6.5,
    0,
    8.5,
    9.5,
    10.5,
    0,
    12.5,
    13.5,
    14.5,
    0
    
    Read values:
    0.5,
    1.5,
    2.5,
    0,
    4.5,
    5.5,
    6.5,
    0,
    8.5,
    9.5,
    10.5,
    0,
    12.5,
    13.5,
    14.5,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_vec3_array[0]
    a_oInfo.Index...........................165
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3632
    a_oInfo.Size............................4
    a_oInfo.Type............................35665
    a_oInfo.TypeSize........................12
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_vec4_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0.5,
    1.5,
    2.5,
    3.5,
    4.5,
    5.5,
    6.5,
    7.5,
    8.5,
    9.5,
    10.5,
    11.5,
    12.5,
    13.5,
    14.5,
    15.5
    
    Read values:
    0.5,
    1.5,
    2.5,
    3.5,
    4.5,
    5.5,
    6.5,
    7.5,
    8.5,
    9.5,
    10.5,
    11.5,
    12.5,
    13.5,
    14.5,
    15.5
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_vec4_array[0]
    a_oInfo.Index...........................167
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3696
    a_oInfo.Size............................4
    a_oInfo.Type............................35666
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_mat2x2_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 3, 0, 0
    2, 4, 0, 0
    0, 0, 0, 0
    0, 0, 0, 0
    
    Read values:
    1, 3, 0, 0
    2, 4, 0, 0
    0, 0, 0, 0
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat2x2_cm
    a_oInfo.Index...........................96
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3760
    a_oInfo.Size............................1
    a_oInfo.Type............................35674
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................32
    
    //////////////////////////////////////////////////
    test_mat2x3_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 4, 0, 0
    2, 5, 0, 0
    3, 6, 0, 0
    0, 0, 0, 0
    
    Read values:
    1, 4, 0, 0
    2, 5, 0, 0
    3, 6, 0, 0
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat2x3_cm
    a_oInfo.Index...........................100
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3792
    a_oInfo.Size............................1
    a_oInfo.Type............................35685
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................32
    
    //////////////////////////////////////////////////
    test_mat2x4_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 5, 0, 0
    2, 6, 0, 0
    3, 7, 0, 0
    4, 8, 0, 0
    
    Read values:
    1, 5, 0, 0
    2, 6, 0, 0
    3, 7, 0, 0
    4, 8, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat2x4_cm
    a_oInfo.Index...........................104
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3824
    a_oInfo.Size............................1
    a_oInfo.Type............................35686
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................32
    
    //////////////////////////////////////////////////
    test_mat3x2_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 3, 5, 0
    2, 4, 6, 0
    0, 0, 0, 0
    0, 0, 0, 0
    
    Read values:
    1, 3, 5, 0
    2, 4, 6, 0
    0, 0, 0, 0
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat3x2_cm
    a_oInfo.Index...........................108
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3856
    a_oInfo.Size............................1
    a_oInfo.Type............................35687
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................48
    
    //////////////////////////////////////////////////
    test_mat3x3_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 4, 7, 0
    2, 5, 8, 0
    3, 6, 9, 0
    0, 0, 0, 0
    
    Read values:
    1, 4, 7, 0
    2, 5, 8, 0
    3, 6, 9, 0
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat3x3_cm
    a_oInfo.Index...........................112
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3904
    a_oInfo.Size............................1
    a_oInfo.Type............................35675
    a_oInfo.TypeSize........................36
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................48
    
    //////////////////////////////////////////////////
    test_mat3x4_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 5, 9, 0
    2, 6, 10, 0
    3, 7, 11, 0
    4, 8, 12, 0
    
    Read values:
    1, 5, 9, 0
    2, 6, 10, 0
    3, 7, 11, 0
    4, 8, 12, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat3x4_cm
    a_oInfo.Index...........................116
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................3952
    a_oInfo.Size............................1
    a_oInfo.Type............................35688
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................48
    
    //////////////////////////////////////////////////
    test_mat4x2_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 3, 5, 7
    2, 4, 6, 8
    0, 0, 0, 0
    0, 0, 0, 0
    
    Read values:
    1, 3, 5, 7
    2, 4, 6, 8
    0, 0, 0, 0
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat4x2_cm
    a_oInfo.Index...........................120
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4000
    a_oInfo.Size............................1
    a_oInfo.Type............................35689
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_mat4x3_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 4, 7, 10
    2, 5, 8, 11
    3, 6, 9, 12
    0, 0, 0, 0
    
    Read values:
    1, 4, 7, 10
    2, 5, 8, 11
    3, 6, 9, 12
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat4x3_cm
    a_oInfo.Index...........................124
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4064
    a_oInfo.Size............................1
    a_oInfo.Type............................35690
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_mat4x4_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 5, 9, 13
    2, 6, 10, 14
    3, 7, 11, 15
    4, 8, 12, 16
    
    Read values:
    1, 5, 9, 13
    2, 6, 10, 14
    3, 7, 11, 15
    4, 8, 12, 16
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat4x4_cm
    a_oInfo.Index...........................128
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4128
    a_oInfo.Size............................1
    a_oInfo.Type............................35676
    a_oInfo.TypeSize........................64
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_mat2x2_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 3, 0, 0
    2, 4, 0, 0
    0, 0, 0, 0
    0, 0, 0, 0
    
    Read values:
    1, 3, 0, 0
    2, 4, 0, 0
    0, 0, 0, 0
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat2x2_rm
    a_oInfo.Index...........................97
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4192
    a_oInfo.Size............................1
    a_oInfo.Type............................35674
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................32
    
    //////////////////////////////////////////////////
    test_mat2x3_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 4, 0, 0
    2, 5, 0, 0
    3, 6, 0, 0
    0, 0, 0, 0
    
    Read values:
    1, 4, 0, 0
    2, 5, 0, 0
    3, 6, 0, 0
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat2x3_rm
    a_oInfo.Index...........................101
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4224
    a_oInfo.Size............................1
    a_oInfo.Type............................35685
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................48
    
    //////////////////////////////////////////////////
    test_mat2x4_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 5, 0, 0
    2, 6, 0, 0
    3, 7, 0, 0
    4, 8, 0, 0
    
    Read values:
    1, 5, 0, 0
    2, 6, 0, 0
    3, 7, 0, 0
    4, 8, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat2x4_rm
    a_oInfo.Index...........................105
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4272
    a_oInfo.Size............................1
    a_oInfo.Type............................35686
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_mat3x2_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 3, 5, 0
    2, 4, 6, 0
    0, 0, 0, 0
    0, 0, 0, 0
    
    Read values:
    1, 3, 5, 0
    2, 4, 6, 0
    0, 0, 0, 0
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat3x2_rm
    a_oInfo.Index...........................109
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4336
    a_oInfo.Size............................1
    a_oInfo.Type............................35687
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................32
    
    //////////////////////////////////////////////////
    test_mat3x3_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 4, 7, 0
    2, 5, 8, 0
    3, 6, 9, 0
    0, 0, 0, 0
    
    Read values:
    1, 4, 7, 0
    2, 5, 8, 0
    3, 6, 9, 0
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat3x3_rm
    a_oInfo.Index...........................113
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4368
    a_oInfo.Size............................1
    a_oInfo.Type............................35675
    a_oInfo.TypeSize........................36
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................48
    
    //////////////////////////////////////////////////
    test_mat3x4_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 5, 9, 0
    2, 6, 10, 0
    3, 7, 11, 0
    4, 8, 12, 0
    
    Read values:
    1, 5, 9, 0
    2, 6, 10, 0
    3, 7, 11, 0
    4, 8, 12, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat3x4_rm
    a_oInfo.Index...........................117
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4416
    a_oInfo.Size............................1
    a_oInfo.Type............................35688
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_mat4x2_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 3, 5, 7
    2, 4, 6, 8
    0, 0, 0, 0
    0, 0, 0, 0
    
    Read values:
    1, 3, 5, 7
    2, 4, 6, 8
    0, 0, 0, 0
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat4x2_rm
    a_oInfo.Index...........................121
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4480
    a_oInfo.Size............................1
    a_oInfo.Type............................35689
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................32
    
    //////////////////////////////////////////////////
    test_mat4x3_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 4, 7, 10
    2, 5, 8, 11
    3, 6, 9, 12
    0, 0, 0, 0
    
    Read values:
    1, 4, 7, 10
    2, 5, 8, 11
    3, 6, 9, 12
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat4x3_rm
    a_oInfo.Index...........................125
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4512
    a_oInfo.Size............................1
    a_oInfo.Type............................35690
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................48
    
    //////////////////////////////////////////////////
    test_mat4x4_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 5, 9, 13
    2, 6, 10, 14
    3, 7, 11, 15
    4, 8, 12, 16
    
    Read values:
    1, 5, 9, 13
    2, 6, 10, 14
    3, 7, 11, 15
    4, 8, 12, 16
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat4x4_rm
    a_oInfo.Index...........................129
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4560
    a_oInfo.Size............................1
    a_oInfo.Type............................35676
    a_oInfo.TypeSize........................64
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_mat2x2_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat2x2_array_cm[0]
    a_oInfo.Index...........................94
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4624
    a_oInfo.Size............................4
    a_oInfo.Type............................35674
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_mat2x3_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat2x3_array_cm[0]
    a_oInfo.Index...........................98
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4752
    a_oInfo.Size............................4
    a_oInfo.Type............................35685
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_mat2x4_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat2x4_array_cm[0]
    a_oInfo.Index...........................102
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................4880
    a_oInfo.Size............................4
    a_oInfo.Type............................35686
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_mat3x2_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat3x2_array_cm[0]
    a_oInfo.Index...........................106
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................5008
    a_oInfo.Size............................4
    a_oInfo.Type............................35687
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................48
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................192
    
    //////////////////////////////////////////////////
    test_mat3x3_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat3x3_array_cm[0]
    a_oInfo.Index...........................110
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................5200
    a_oInfo.Size............................4
    a_oInfo.Type............................35675
    a_oInfo.TypeSize........................36
    a_oInfo.ArrayStride.....................48
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................192
    
    //////////////////////////////////////////////////
    test_mat3x4_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat3x4_array_cm[0]
    a_oInfo.Index...........................114
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................5392
    a_oInfo.Size............................4
    a_oInfo.Type............................35688
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................48
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................192
    
    //////////////////////////////////////////////////
    test_mat4x2_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat4x2_array_cm[0]
    a_oInfo.Index...........................118
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................5584
    a_oInfo.Size............................4
    a_oInfo.Type............................35689
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................64
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................256
    
    //////////////////////////////////////////////////
    test_mat4x3_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat4x3_array_cm[0]
    a_oInfo.Index...........................122
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................5840
    a_oInfo.Size............................4
    a_oInfo.Type............................35690
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................64
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................256
    
    //////////////////////////////////////////////////
    test_mat4x4_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat4x4_array_cm[0]
    a_oInfo.Index...........................126
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................6096
    a_oInfo.Size............................4
    a_oInfo.Type............................35676
    a_oInfo.TypeSize........................64
    a_oInfo.ArrayStride.....................64
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................256
    
    //////////////////////////////////////////////////
    test_mat2x2_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat2x2_array_rm[0]
    a_oInfo.Index...........................95
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................6352
    a_oInfo.Size............................4
    a_oInfo.Type............................35674
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_mat2x3_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat2x3_array_rm[0]
    a_oInfo.Index...........................99
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................6480
    a_oInfo.Size............................4
    a_oInfo.Type............................35685
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................48
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................192
    
    //////////////////////////////////////////////////
    test_mat2x4_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat2x4_array_rm[0]
    a_oInfo.Index...........................103
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................6672
    a_oInfo.Size............................4
    a_oInfo.Type............................35686
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................64
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................256
    
    //////////////////////////////////////////////////
    test_mat3x2_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat3x2_array_rm[0]
    a_oInfo.Index...........................107
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................6928
    a_oInfo.Size............................4
    a_oInfo.Type............................35687
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_mat3x3_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat3x3_array_rm[0]
    a_oInfo.Index...........................111
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................7056
    a_oInfo.Size............................4
    a_oInfo.Type............................35675
    a_oInfo.TypeSize........................36
    a_oInfo.ArrayStride.....................48
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................192
    
    //////////////////////////////////////////////////
    test_mat3x4_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat3x4_array_rm[0]
    a_oInfo.Index...........................115
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................7248
    a_oInfo.Size............................4
    a_oInfo.Type............................35688
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................64
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................256
    
    //////////////////////////////////////////////////
    test_mat4x2_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat4x2_array_rm[0]
    a_oInfo.Index...........................119
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................7504
    a_oInfo.Size............................4
    a_oInfo.Type............................35689
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_mat4x3_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat4x3_array_rm[0]
    a_oInfo.Index...........................123
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................7632
    a_oInfo.Size............................4
    a_oInfo.Type............................35690
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................48
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................192
    
    //////////////////////////////////////////////////
    test_mat4x4_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_mat4x4_array_rm[0]
    a_oInfo.Index...........................127
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................7824
    a_oInfo.Size............................4
    a_oInfo.Type............................35676
    a_oInfo.TypeSize........................64
    a_oInfo.ArrayStride.....................64
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................256
    
    //////////////////////////////////////////////////
    test_float64
    //////////////////////////////////////////////////
    
    a_dWrite is: 3.00000000000
    a_dRead is:  3.00000000000
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_float64
    a_oInfo.Index...........................60
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8080
    a_oInfo.Size............................1
    a_oInfo.Type............................5130
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................8
    
    //////////////////////////////////////////////////
    test_float64_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0,
    1,
    2,
    3
    
    Read values:
    0,
    1,
    2,
    3
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_float64_array[0]
    a_oInfo.Index...........................61
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8096
    a_oInfo.Size............................4
    a_oInfo.Type............................5130
    a_oInfo.TypeSize........................8
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_dvec2
    //////////////////////////////////////////////////
    
    Write values:
    1.00000000000, 2.00000000000, 0.000000000000, 0.000000000000
    
    Read values:
    1.00000000000, 2.00000000000, 0.000000000000, 0.000000000000
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dvec2
    a_oInfo.Index...........................44
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8160
    a_oInfo.Size............................1
    a_oInfo.Type............................36860
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................16
    
    //////////////////////////////////////////////////
    test_dvec3
    //////////////////////////////////////////////////
    
    Write values:
    1.00000000000, 2.00000000000, 3.00000000000, 0.000000000000
    
    Read values:
    1.00000000000, 2.00000000000, 3.00000000000, 0.000000000000
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dvec3
    a_oInfo.Index...........................46
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8192
    a_oInfo.Size............................1
    a_oInfo.Type............................36861
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................24
    
    //////////////////////////////////////////////////
    test_dvec4
    //////////////////////////////////////////////////
    
    Write values:
    1.00000000000, 2.00000000000, 3.00000000000, 4.00000000000
    
    Read values:
    1.00000000000, 2.00000000000, 3.00000000000, 4.00000000000
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dvec4
    a_oInfo.Index...........................48
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8224
    a_oInfo.Size............................1
    a_oInfo.Type............................36862
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................32
    
    //////////////////////////////////////////////////
    test_dvec2_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0.5,
    1.5,
    0,
    0,
    4.5,
    5.5,
    0,
    0,
    8.5,
    9.5,
    0,
    0,
    12.5,
    13.5,
    0,
    0
    
    Read values:
    0.5,
    1.5,
    0,
    0,
    4.5,
    5.5,
    0,
    0,
    8.5,
    9.5,
    0,
    0,
    12.5,
    13.5,
    0,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dvec2_array[0]
    a_oInfo.Index...........................45
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8256
    a_oInfo.Size............................4
    a_oInfo.Type............................36860
    a_oInfo.TypeSize........................16
    a_oInfo.ArrayStride.....................16
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_dvec3_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0.5,
    1.5,
    2.5,
    0,
    4.5,
    5.5,
    6.5,
    0,
    8.5,
    9.5,
    10.5,
    0,
    12.5,
    13.5,
    14.5,
    0
    
    Read values:
    0.5,
    1.5,
    2.5,
    0,
    4.5,
    5.5,
    6.5,
    0,
    8.5,
    9.5,
    10.5,
    0,
    12.5,
    13.5,
    14.5,
    0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dvec3_array[0]
    a_oInfo.Index...........................47
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8320
    a_oInfo.Size............................4
    a_oInfo.Type............................36861
    a_oInfo.TypeSize........................24
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_dvec4_array[0]
    //////////////////////////////////////////////////
    
    Write values:
    0.5,
    1.5,
    2.5,
    3.5,
    4.5,
    5.5,
    6.5,
    7.5,
    8.5,
    9.5,
    10.5,
    11.5,
    12.5,
    13.5,
    14.5,
    15.5
    
    Read values:
    0.5,
    1.5,
    2.5,
    3.5,
    4.5,
    5.5,
    6.5,
    7.5,
    8.5,
    9.5,
    10.5,
    11.5,
    12.5,
    13.5,
    14.5,
    15.5
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dvec4_array[0]
    a_oInfo.Index...........................49
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8448
    a_oInfo.Size............................4
    a_oInfo.Type............................36862
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................0
    a_oInfo.Rows............................0
    a_oInfo.Cols............................0
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_dmat2x2_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat2x2_cm
    a_oInfo.Index...........................10
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8576
    a_oInfo.Size............................1
    a_oInfo.Type............................36678
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................32
    
    //////////////////////////////////////////////////
    test_dmat2x3_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat2x3_cm
    a_oInfo.Index...........................14
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8608
    a_oInfo.Size............................1
    a_oInfo.Type............................36681
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................3
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_dmat2x4_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat2x4_cm
    a_oInfo.Index...........................18
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8672
    a_oInfo.Size............................1
    a_oInfo.Type............................36682
    a_oInfo.TypeSize........................64
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................4
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_dmat3x2_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat3x2_cm
    a_oInfo.Index...........................22
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8736
    a_oInfo.Size............................1
    a_oInfo.Type............................36683
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................48
    
    //////////////////////////////////////////////////
    test_dmat3x3_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat3x3_cm
    a_oInfo.Index...........................26
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8800
    a_oInfo.Size............................1
    a_oInfo.Type............................36679
    a_oInfo.TypeSize........................72
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................3
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................96
    
    //////////////////////////////////////////////////
    test_dmat3x4_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat3x4_cm
    a_oInfo.Index...........................30
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8896
    a_oInfo.Size............................1
    a_oInfo.Type............................36684
    a_oInfo.TypeSize........................96
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................4
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................96
    
    //////////////////////////////////////////////////
    test_dmat4x2_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat4x2_cm
    a_oInfo.Index...........................34
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................8992
    a_oInfo.Size............................1
    a_oInfo.Type............................36685
    a_oInfo.TypeSize........................64
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_dmat4x3_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat4x3_cm
    a_oInfo.Index...........................38
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................9056
    a_oInfo.Size............................1
    a_oInfo.Type............................36686
    a_oInfo.TypeSize........................96
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................3
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_dmat4x4_cm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat4x4_cm
    a_oInfo.Index...........................42
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................9184
    a_oInfo.Size............................1
    a_oInfo.Type............................36680
    a_oInfo.TypeSize........................128
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................4
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_dmat2x2_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat2x2_rm
    a_oInfo.Index...........................11
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................9312
    a_oInfo.Size............................1
    a_oInfo.Type............................36678
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................32
    
    //////////////////////////////////////////////////
    test_dmat2x3_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat2x3_rm
    a_oInfo.Index...........................15
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................9344
    a_oInfo.Size............................1
    a_oInfo.Type............................36681
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................48
    
    //////////////////////////////////////////////////
    test_dmat2x4_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat2x4_rm
    a_oInfo.Index...........................19
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................9392
    a_oInfo.Size............................1
    a_oInfo.Type............................36682
    a_oInfo.TypeSize........................64
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_dmat3x2_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat3x2_rm
    a_oInfo.Index...........................23
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................9472
    a_oInfo.Size............................1
    a_oInfo.Type............................36683
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................2
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_dmat3x3_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat3x3_rm
    a_oInfo.Index...........................27
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................9536
    a_oInfo.Size............................1
    a_oInfo.Type............................36679
    a_oInfo.TypeSize........................72
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................3
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................96
    
    //////////////////////////////////////////////////
    test_dmat3x4_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat3x4_rm
    a_oInfo.Index...........................31
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................9632
    a_oInfo.Size............................1
    a_oInfo.Type............................36684
    a_oInfo.TypeSize........................96
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................4
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_dmat4x2_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat4x2_rm
    a_oInfo.Index...........................35
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................9760
    a_oInfo.Size............................1
    a_oInfo.Type............................36685
    a_oInfo.TypeSize........................64
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................2
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................64
    
    //////////////////////////////////////////////////
    test_dmat4x3_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat4x3_rm
    a_oInfo.Index...........................39
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................9824
    a_oInfo.Size............................1
    a_oInfo.Type............................36686
    a_oInfo.TypeSize........................96
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................3
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................96
    
    //////////////////////////////////////////////////
    test_dmat4x4_rm
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat4x4_rm
    a_oInfo.Index...........................43
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................9920
    a_oInfo.Size............................1
    a_oInfo.Type............................36680
    a_oInfo.TypeSize........................128
    a_oInfo.ArrayStride.....................0
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................4
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_dmat2x2_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat2x2_array_cm[0]
    a_oInfo.Index...........................8
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................10048
    a_oInfo.Size............................4
    a_oInfo.Type............................36678
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_dmat2x3_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat2x3_array_cm[0]
    a_oInfo.Index...........................12
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................10176
    a_oInfo.Size............................4
    a_oInfo.Type............................36681
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................64
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................3
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................256
    
    //////////////////////////////////////////////////
    test_dmat2x4_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat2x4_array_cm[0]
    a_oInfo.Index...........................16
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................10432
    a_oInfo.Size............................4
    a_oInfo.Type............................36682
    a_oInfo.TypeSize........................64
    a_oInfo.ArrayStride.....................64
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................4
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................256
    
    //////////////////////////////////////////////////
    test_dmat3x2_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat3x2_array_cm[0]
    a_oInfo.Index...........................20
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................10688
    a_oInfo.Size............................4
    a_oInfo.Type............................36683
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................48
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................192
    
    //////////////////////////////////////////////////
    test_dmat3x3_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat3x3_array_cm[0]
    a_oInfo.Index...........................24
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................10880
    a_oInfo.Size............................4
    a_oInfo.Type............................36679
    a_oInfo.TypeSize........................72
    a_oInfo.ArrayStride.....................96
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................3
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................384
    
    //////////////////////////////////////////////////
    test_dmat3x4_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat3x4_array_cm[0]
    a_oInfo.Index...........................28
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................11264
    a_oInfo.Size............................4
    a_oInfo.Type............................36684
    a_oInfo.TypeSize........................96
    a_oInfo.ArrayStride.....................96
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................4
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................384
    
    //////////////////////////////////////////////////
    test_dmat4x2_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat4x2_array_cm[0]
    a_oInfo.Index...........................32
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................11648
    a_oInfo.Size............................4
    a_oInfo.Type............................36685
    a_oInfo.TypeSize........................64
    a_oInfo.ArrayStride.....................64
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................256
    
    //////////////////////////////////////////////////
    test_dmat4x3_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat4x3_array_cm[0]
    a_oInfo.Index...........................36
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................11904
    a_oInfo.Size............................4
    a_oInfo.Type............................36686
    a_oInfo.TypeSize........................96
    a_oInfo.ArrayStride.....................128
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................3
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................512
    
    //////////////////////////////////////////////////
    test_dmat4x4_array_cm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat4x4_array_cm[0]
    a_oInfo.Index...........................40
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................12416
    a_oInfo.Size............................4
    a_oInfo.Type............................36680
    a_oInfo.TypeSize........................128
    a_oInfo.ArrayStride.....................128
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................4
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................0
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................512
    
    //////////////////////////////////////////////////
    test_dmat2x2_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat2x2_array_rm[0]
    a_oInfo.Index...........................9
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................12928
    a_oInfo.Size............................4
    a_oInfo.Type............................36678
    a_oInfo.TypeSize........................32
    a_oInfo.ArrayStride.....................32
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................2
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................128
    
    //////////////////////////////////////////////////
    test_dmat2x3_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat2x3_array_rm[0]
    a_oInfo.Index...........................13
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................13056
    a_oInfo.Size............................4
    a_oInfo.Type............................36681
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................48
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................3
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................192
    
    //////////////////////////////////////////////////
    test_dmat2x4_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    0, 0, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat2x4_array_rm[0]
    a_oInfo.Index...........................17
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................13248
    a_oInfo.Size............................4
    a_oInfo.Type............................36682
    a_oInfo.TypeSize........................64
    a_oInfo.ArrayStride.....................64
    a_oInfo.MatrixStride....................16
    a_oInfo.Rows............................4
    a_oInfo.Cols............................2
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................256
    
    //////////////////////////////////////////////////
    test_dmat3x2_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat3x2_array_rm[0]
    a_oInfo.Index...........................21
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................13504
    a_oInfo.Size............................4
    a_oInfo.Type............................36683
    a_oInfo.TypeSize........................48
    a_oInfo.ArrayStride.....................64
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................2
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................256
    
    //////////////////////////////////////////////////
    test_dmat3x3_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat3x3_array_rm[0]
    a_oInfo.Index...........................25
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................13760
    a_oInfo.Size............................4
    a_oInfo.Type............................36679
    a_oInfo.TypeSize........................72
    a_oInfo.ArrayStride.....................96
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................3
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................384
    
    //////////////////////////////////////////////////
    test_dmat3x4_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    0, 0, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat3x4_array_rm[0]
    a_oInfo.Index...........................29
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................14144
    a_oInfo.Size............................4
    a_oInfo.Type............................36684
    a_oInfo.TypeSize........................96
    a_oInfo.ArrayStride.....................128
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................4
    a_oInfo.Cols............................3
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................512
    
    //////////////////////////////////////////////////
    test_dmat4x2_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    
    Read values:
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0,
    1, 2, 0, 0,
    3, 4, 0, 0,
    5, 6, 0, 0,
    7, 8, 0, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat4x2_array_rm[0]
    a_oInfo.Index...........................33
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................14656
    a_oInfo.Size............................4
    a_oInfo.Type............................36685
    a_oInfo.TypeSize........................64
    a_oInfo.ArrayStride.....................64
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................2
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................256
    
    //////////////////////////////////////////////////
    test_dmat4x3_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    
    Read values:
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0,
    1, 2, 3, 0,
    4, 5, 6, 0,
    7, 8, 9, 0,
    10, 11, 12, 0
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat4x3_array_rm[0]
    a_oInfo.Index...........................37
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................14912
    a_oInfo.Size............................4
    a_oInfo.Type............................36686
    a_oInfo.TypeSize........................96
    a_oInfo.ArrayStride.....................96
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................3
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................384
    
    //////////////////////////////////////////////////
    test_dmat4x4_array_rm[0]
    //////////////////////////////////////////////////
    
    Write values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    
    Read values:
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16,
    1, 2, 3, 4,
    5, 6, 7, 8,
    9, 10, 11, 12,
    13, 14, 15, 16
    
    Result of memcmp(): 0 [ 0 = passed, any non-zero = fail ]
    
    a_oInfo.Name............................test_dmat4x4_array_rm[0]
    a_oInfo.Index...........................41
    a_oInfo.BufferIndex.....................0
    a_oInfo.BufferBinding...................-1
    a_oInfo.BufferType......................4
    a_oInfo.Location........................-1
    a_oInfo.Offset..........................15296
    a_oInfo.Size............................4
    a_oInfo.Type............................36680
    a_oInfo.TypeSize........................128
    a_oInfo.ArrayStride.....................128
    a_oInfo.MatrixStride....................32
    a_oInfo.Rows............................4
    a_oInfo.Cols............................4
    a_oInfo.RowMajor........................1
    a_oInfo.TopLevelArraySize...............1
    a_oInfo.TopLevelArrayStride.............0
    a_oInfo.IsMemberOfTopLevelArray.........0
    a_oInfo.IsMemberOfTopLevelUnsizedArray..0
    a_oInfo.GetTotalSize....................512
    
    Executed: ApplicationRunTests
    
    test_bool test status: 0 [ 0 = passed, any non-zero = fail ]
    test_bool_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_bvec2 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_bvec3 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_bvec4 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_bvec2_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_bvec3_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_bvec4_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uint8_t test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uint8_t_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u8vec2 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u8vec3 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u8vec4 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u8vec2_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u8vec3_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u8vec4_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uint16_t test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uint16_t_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u16vec2 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u16vec3 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u16vec4 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u16vec2_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u16vec3_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u16vec4_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uint32 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uint32_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uvec2 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uvec3 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uvec4 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uvec2_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uvec3_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uvec4_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uint64_t test status: 0 [ 0 = passed, any non-zero = fail ]
    test_uint64_t_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u64vec2 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u64vec3 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u64vec4 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u64vec2_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u64vec3_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_u64vec4_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_int8_t test status: 0 [ 0 = passed, any non-zero = fail ]
    test_int8_t_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i8vec2 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i8vec3 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i8vec4 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i8vec2_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i8vec3_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i8vec4_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_int16_t test status: 0 [ 0 = passed, any non-zero = fail ]
    test_int16_t_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i16vec2 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i16vec3 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i16vec4 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i16vec2_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i16vec3_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i16vec4_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_int32 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_int32_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_ivec2 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_ivec3 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_ivec4 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_ivec2_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_ivec3_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_ivec4_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_int64_t test status: 0 [ 0 = passed, any non-zero = fail ]
    test_int64_t_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i64vec2 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i64vec3 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i64vec4 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i64vec2_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i64vec3_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_i64vec4_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_float16_t test status: 0 [ 0 = passed, any non-zero = fail ]
    test_float16_t_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_f16vec2 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_f16vec3 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_f16vec4 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_f16vec2_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_f16vec3_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_f16vec4_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_float32 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_float32_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_vec2 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_vec3 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_vec4 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_vec2_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_vec3_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_vec4_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat2x2_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat2x3_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat2x4_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat3x2_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat3x3_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat3x4_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat4x2_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat4x3_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat4x4_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat2x2_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat2x3_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat2x4_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat3x2_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat3x3_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat3x4_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat4x2_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat4x3_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat4x4_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat2x2_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat2x3_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat2x4_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat3x2_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat3x3_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat3x4_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat4x2_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat4x3_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat4x4_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat2x2_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat2x3_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat2x4_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat3x2_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat3x3_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat3x4_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat4x2_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat4x3_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_mat4x4_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_float64 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_float64_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dvec2 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dvec3 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dvec4 test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dvec2_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dvec3_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dvec4_array[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat2x2_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat2x3_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat2x4_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat3x2_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat3x3_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat3x4_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat4x2_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat4x3_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat4x4_cm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat2x2_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat2x3_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat2x4_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat3x2_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat3x3_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat3x4_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat4x2_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat4x3_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat4x4_rm test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat2x2_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat2x3_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat2x4_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat3x2_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat3x3_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat3x4_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat4x2_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat4x3_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat4x4_array_cm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat2x2_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat2x3_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat2x4_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat3x2_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat3x3_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat3x4_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat4x2_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat4x3_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
    test_dmat4x4_array_rm[0] test status: 0 [ 0 = passed, any non-zero = fail ]
             

    This is how you can verify that your hardware successfully reads and writes shader buffers. You can search this log for the word "FAILED" to find any tests that did not pass.

Get The Test Code Path

  1. Select File » Get Application Script Path... from the main menu.

    The software displays a dialog that allows you to select a script.

    This is a picture of the desktop.
  2. Type app_service_test_shader_buffer_util.ssl and left click the script when it appears.
  3. Click OK or hit ENTER when you are finished.

    The software copies the full path to the script to the Windows¯ clipboard.

Examine The Test Code 'Execute' Function

  1. Start a text editor of your choice and select the option to open a file from disk.
  2. Select CTRL + V to paste the fragment shader file path (into the place in the dialog where you specify the file to open) and open the file.
  3. Use the text editor search feature to find a function named Execute. There are a few clearly delineated sections.
    1. Set up a shader program.
    2. Set up a shader buffer for testing.
    3. Set up a memory barrier.
    4. A section for testing a single function at a time.
    5. A section that performs all tests.
    ///////////////////////////////////////////////////////////////////////////////
    // function
    ///////////////////////////////////////////////////////////////////////////////
    
    function bool Execute()
    {
       //////////////////////////////////////////////////
       // Set up the shader program.
       //////////////////////////////////////////////////
    
       auto GpuTestDevice a_oParams;
    
       Render3D a_oAccel = Application.GetAccelerate3D();
       a_oParams.m_pAccel = a_oAccel;
    
       auto Program a_oProgram;
       a_oParams.m_pProgram = a_oProgram;
    
       // Create and bind the uniform buffer.
       a_oParams.m_sGlslTestFile = "test_shader_buffer_read_write.glsl";
       a_oParams.m_sBufferName = "test_buffer";
    
       a_oParams.m_slInfo.Add( LibAppServiceTest.Bar() );
       a_oParams.m_slInfo.Add( "// Starting Shader Buffer Tests" );
       a_oParams.m_slInfo.Add( LibAppServiceTest.Bar() );
       a_oParams.m_slInfo.AddBlank();
    
       bool a_bInit = LibAppServiceTest.Initialize( a_oParams );
       if( !( a_bInit ) )
       {
          return false;
       }
    
       Console.Clear();
    
       //////////////////////////////////////////////////
       // Create and bind the shader buffer.
       //////////////////////////////////////////////////
    
       auto ShaderBufferNode a_oShaderBuffer;
    
       auto ShaderBufferInfo a_oShaderBufferInfo;
       a_oShaderBufferInfo.m_pAccel = a_oAccel;
       a_oShaderBufferInfo.m_pRenderInfo = a_oParams.m_pRenderInfo;
       a_oShaderBufferInfo.m_pBuffer = a_oShaderBuffer;
       a_oShaderBufferInfo.m_pProgram = a_oProgram;
       a_oShaderBufferInfo.m_sBufferName = "test_buffer";
       a_oShaderBufferInfo.m_eBufferUsage = Enum.RBU_DynamicDraw();
    
       bool a_bCreatedBuffer = LibRender3D.CreateShaderBuffer(
          a_oShaderBufferInfo, a_oParams.m_slInfo );
    
       if( !( a_bCreatedBuffer ) )
       {
          a_oParams.m_slInfo.AddBlank();
          a_oParams.m_slInfo.Add( LibAssert.PrintCallStack() );
          LibAppServiceBuild.Out( a_oParams.m_slInfo );
          return false;
       }
    
       //////////////////////////////////////////////////
       // Set up the memory barrier.
       //////////////////////////////////////////////////
    
       // Since we're writing to a shader buffer, we
       // need to use a memory barrier between
       // accesses to the buffer.
       auto MemoryBarrier m;
       m.GlShaderStorageBarrierBit = true;
    
       //////////////////////////////////////////////////
       // Execute single tests.
       //////////////////////////////////////////////////
    
       if( false )
       {
          TestFloat32Matrix( a_oParams, m, 2, 2, false );
          /*
          // Column Major
          TestFloat32Matrix( a_oParams, m, 2, 2, false );
          TestFloat32Matrix( a_oParams, m, 2, 3, false );
          TestFloat32Matrix( a_oParams, m, 2, 4, false );
          TestFloat32Matrix( a_oParams, m, 3, 2, false );
          TestFloat32Matrix( a_oParams, m, 3, 3, false );
          TestFloat32Matrix( a_oParams, m, 3, 4, false );
          TestFloat32Matrix( a_oParams, m, 4, 2, false );
          TestFloat32Matrix( a_oParams, m, 4, 3, false );
          TestFloat32Matrix( a_oParams, m, 4, 4, false );
          */
    
          /*
          // Row Major
          TestFloat32Matrix( a_oParams, m, 2, 2, true );
          TestFloat32Matrix( a_oParams, m, 2, 3, true );
          TestFloat32Matrix( a_oParams, m, 2, 4, true );
          TestFloat32Matrix( a_oParams, m, 3, 2, true );
          TestFloat32Matrix( a_oParams, m, 3, 3, true );
          TestFloat32Matrix( a_oParams, m, 3, 4, true );
          TestFloat32Matrix( a_oParams, m, 4, 2, true );
          TestFloat32Matrix( a_oParams, m, 4, 3, true );
          TestFloat32Matrix( a_oParams, m, 4, 4, true );
          */
    
          LibAppServiceBuild.Out( a_oParams.m_slInfo );
    
          // Do cleanup.
          //Console.Alert( "DESTROYING PROGRAM AND BUFFER!" );
          a_oAccel.DeleteProgram( a_oProgram.GetHandle() );
          a_oAccel.DestroyShaderBuffer( a_oShaderBuffer.GetParams() );
          delete a_oParams.m_pRenderInfo;
    
          return false;
       }
    
       //////////////////////////////////////////////////
       // Execute all tests.
       //////////////////////////////////////////////////
    
       // This only works on hardware with
       // the 8-bit signed/unsigned, 16-bit signed/unsigned
       // 16-bit FP, and 64-bit signed/unsigned extension.
    
       // Check extensions.
       RenderDeviceCaps a_oCaps = a_oAccel.GetDeviceCapabilities();
    
       bool a_bNvGpuShader5       = a_oCaps.QueryExtension( "GL_NV_gpu_shader5" );
       bool a_bAmdInt64           = a_oCaps.QueryExtension( "GL_AMD_gpu_shader_int64" );
       bool a_bArbInt64           = a_oCaps.QueryExtension( "GL_ARB_gpu_shader_int64" );
    
       bool a_bHighPrecInt  = a_bNvGpuShader5 || a_bAmdInt64 || a_bArbInt64;
       bool a_bLowPrecInt   = a_bNvGpuShader5;
       bool a_bLowPrecFloat = a_bNvGpuShader5;
    
       // Begin tests.
       TestBool( a_oParams, m );
       TestBoolArray( a_oParams, m );
       TestBoolVector( a_oParams, m, 2 );
       TestBoolVector( a_oParams, m, 3 );
       TestBoolVector( a_oParams, m, 4 );
       TestBoolVectorArray( a_oParams, m, 2 );
       TestBoolVectorArray( a_oParams, m, 3 );
       TestBoolVectorArray( a_oParams, m, 4 );
    
       if( a_bLowPrecInt )
       {
          TestUint8( a_oParams, m );
          TestUint8Array( a_oParams, m );
          TestUint8Vector( a_oParams, m, 2 );
          TestUint8Vector( a_oParams, m, 3 );
          TestUint8Vector( a_oParams, m, 4 );
          TestUint8VectorArray( a_oParams, m, 2 );
          TestUint8VectorArray( a_oParams, m, 3 );
          TestUint8VectorArray( a_oParams, m, 4 );
    
          TestUint16( a_oParams, m );
          TestUint16Array( a_oParams, m );
          TestUint16Vector( a_oParams, m, 2 );
          TestUint16Vector( a_oParams, m, 3 );
          TestUint16Vector( a_oParams, m, 4 );
          TestUint16VectorArray( a_oParams, m, 2 );
          TestUint16VectorArray( a_oParams, m, 3 );
          TestUint16VectorArray( a_oParams, m, 4 );
       }
    
       TestUint32( a_oParams, m );
       TestUint32Array( a_oParams, m );
       TestUint32Vector( a_oParams, m, 2 );
       TestUint32Vector( a_oParams, m, 3 );
       TestUint32Vector( a_oParams, m, 4 );
       TestUint32VectorArray( a_oParams, m, 2 );
       TestUint32VectorArray( a_oParams, m, 3 );
       TestUint32VectorArray( a_oParams, m, 4 );
    
       if( a_bHighPrecInt )
       {
          TestUint64( a_oParams, m );
          TestUint64Array( a_oParams, m );
          TestUint64Vector( a_oParams, m, 2 );
          TestUint64Vector( a_oParams, m, 3 );
          TestUint64Vector( a_oParams, m, 4 );
          TestUint64VectorArray( a_oParams, m, 2 );
          TestUint64VectorArray( a_oParams, m, 3 );
          TestUint64VectorArray( a_oParams, m, 4 );
       }
    
       if( a_bLowPrecInt )
       {
          TestInt8( a_oParams, m );
          TestInt8Array( a_oParams, m );
          TestInt8Vector( a_oParams, m, 2 );
          TestInt8Vector( a_oParams, m, 3 );
          TestInt8Vector( a_oParams, m, 4 );
          TestInt8VectorArray( a_oParams, m, 2 );
          TestInt8VectorArray( a_oParams, m, 3 );
          TestInt8VectorArray( a_oParams, m, 4 );
    
          TestInt16( a_oParams, m );
          TestInt16Array( a_oParams, m );
          TestInt16Vector( a_oParams, m, 2 );
          TestInt16Vector( a_oParams, m, 3 );
          TestInt16Vector( a_oParams, m, 4 );
          TestInt16VectorArray( a_oParams, m, 2 );
          TestInt16VectorArray( a_oParams, m, 3 );
          TestInt16VectorArray( a_oParams, m, 4 );
       }
    
       TestInt32( a_oParams, m );
       TestInt32Array( a_oParams, m );
       TestInt32Vector( a_oParams, m, 2 );
       TestInt32Vector( a_oParams, m, 3 );
       TestInt32Vector( a_oParams, m, 4 );
       TestInt32VectorArray( a_oParams, m, 2 );
       TestInt32VectorArray( a_oParams, m, 3 );
       TestInt32VectorArray( a_oParams, m, 4 );
    
       if( a_bHighPrecInt )
       {
          TestInt64( a_oParams, m );
          TestInt64Array( a_oParams, m );
          TestInt64Vector( a_oParams, m, 2 );
          TestInt64Vector( a_oParams, m, 3 );
          TestInt64Vector( a_oParams, m, 4 );
          TestInt64VectorArray( a_oParams, m, 2 );
          TestInt64VectorArray( a_oParams, m, 3 );
          TestInt64VectorArray( a_oParams, m, 4 );
       }
    
       if( a_bLowPrecFloat )
       {
          TestFloat16( a_oParams, m );
          TestFloat16Array( a_oParams, m );
          TestFloat16Vector( a_oParams, m, 2 );
          TestFloat16Vector( a_oParams, m, 3 );
          TestFloat16Vector( a_oParams, m, 4 );
          TestFloat16VectorArray( a_oParams, m, 2 );
          TestFloat16VectorArray( a_oParams, m, 3 );
          TestFloat16VectorArray( a_oParams, m, 4 );
       }
    
       TestFloat32( a_oParams, m );
       TestFloat32Array( a_oParams, m );
       TestFloat32Vector( a_oParams, m, 2 );
       TestFloat32Vector( a_oParams, m, 3 );
       TestFloat32Vector( a_oParams, m, 4 );
       TestFloat32VectorArray( a_oParams, m, 2 );
       TestFloat32VectorArray( a_oParams, m, 3 );
       TestFloat32VectorArray( a_oParams, m, 4 );
    
       // Column Major
       TestFloat32Matrix( a_oParams, m, 2, 2, false );
       TestFloat32Matrix( a_oParams, m, 2, 3, false );
       TestFloat32Matrix( a_oParams, m, 2, 4, false );
       TestFloat32Matrix( a_oParams, m, 3, 2, false );
       TestFloat32Matrix( a_oParams, m, 3, 3, false );
       TestFloat32Matrix( a_oParams, m, 3, 4, false );
       TestFloat32Matrix( a_oParams, m, 4, 2, false );
       TestFloat32Matrix( a_oParams, m, 4, 3, false );
       TestFloat32Matrix( a_oParams, m, 4, 4, false );
    
       // Row Major
       TestFloat32Matrix( a_oParams, m, 2, 2, true );
       TestFloat32Matrix( a_oParams, m, 2, 3, true );
       TestFloat32Matrix( a_oParams, m, 2, 4, true );
       TestFloat32Matrix( a_oParams, m, 3, 2, true );
       TestFloat32Matrix( a_oParams, m, 3, 3, true );
       TestFloat32Matrix( a_oParams, m, 3, 4, true );
       TestFloat32Matrix( a_oParams, m, 4, 2, true );
       TestFloat32Matrix( a_oParams, m, 4, 3, true );
       TestFloat32Matrix( a_oParams, m, 4, 4, true );
    
       // Column Major
       TestFloat32MatrixArray( a_oParams, m, 2, 2, false );
       TestFloat32MatrixArray( a_oParams, m, 2, 3, false );
       TestFloat32MatrixArray( a_oParams, m, 2, 4, false );
       TestFloat32MatrixArray( a_oParams, m, 3, 2, false );
       TestFloat32MatrixArray( a_oParams, m, 3, 3, false );
       TestFloat32MatrixArray( a_oParams, m, 3, 4, false );
       TestFloat32MatrixArray( a_oParams, m, 4, 2, false );
       TestFloat32MatrixArray( a_oParams, m, 4, 3, false );
       TestFloat32MatrixArray( a_oParams, m, 4, 4, false );
    
       // Row Major
       TestFloat32MatrixArray( a_oParams, m, 2, 2, true );
       TestFloat32MatrixArray( a_oParams, m, 2, 3, true );
       TestFloat32MatrixArray( a_oParams, m, 2, 4, true );
       TestFloat32MatrixArray( a_oParams, m, 3, 2, true );
       TestFloat32MatrixArray( a_oParams, m, 3, 3, true );
       TestFloat32MatrixArray( a_oParams, m, 3, 4, true );
       TestFloat32MatrixArray( a_oParams, m, 4, 2, true );
       TestFloat32MatrixArray( a_oParams, m, 4, 3, true );
       TestFloat32MatrixArray( a_oParams, m, 4, 4, true );
    
       TestFloat64( a_oParams, m );
       TestFloat64Array( a_oParams, m );
       TestFloat64Vector( a_oParams, m, 2 );
       TestFloat64Vector( a_oParams, m, 3 );
       TestFloat64Vector( a_oParams, m, 4 );
       TestFloat64VectorArray( a_oParams, m, 2 );
       TestFloat64VectorArray( a_oParams, m, 3 );
       TestFloat64VectorArray( a_oParams, m, 4 );
    
       // Column Major
       TestFloat64Matrix( a_oParams, m, 2, 2, false );
       TestFloat64Matrix( a_oParams, m, 2, 3, false );
       TestFloat64Matrix( a_oParams, m, 2, 4, false );
       TestFloat64Matrix( a_oParams, m, 3, 2, false );
       TestFloat64Matrix( a_oParams, m, 3, 3, false );
       TestFloat64Matrix( a_oParams, m, 3, 4, false );
       TestFloat64Matrix( a_oParams, m, 4, 2, false );
       TestFloat64Matrix( a_oParams, m, 4, 3, false );
       TestFloat64Matrix( a_oParams, m, 4, 4, false );
    
       // Row Major
       TestFloat64Matrix( a_oParams, m, 2, 2, true );
       TestFloat64Matrix( a_oParams, m, 2, 3, true );
       TestFloat64Matrix( a_oParams, m, 2, 4, true );
       TestFloat64Matrix( a_oParams, m, 3, 2, true );
       TestFloat64Matrix( a_oParams, m, 3, 3, true );
       TestFloat64Matrix( a_oParams, m, 3, 4, true );
       TestFloat64Matrix( a_oParams, m, 4, 2, true );
       TestFloat64Matrix( a_oParams, m, 4, 3, true );
       TestFloat64Matrix( a_oParams, m, 4, 4, true );
    
       // Column Major
       TestFloat64MatrixArray( a_oParams, m, 2, 2, false );
       TestFloat64MatrixArray( a_oParams, m, 2, 3, false );
       TestFloat64MatrixArray( a_oParams, m, 2, 4, false );
       TestFloat64MatrixArray( a_oParams, m, 3, 2, false );
       TestFloat64MatrixArray( a_oParams, m, 3, 3, false );
       TestFloat64MatrixArray( a_oParams, m, 3, 4, false );
       TestFloat64MatrixArray( a_oParams, m, 4, 2, false );
       TestFloat64MatrixArray( a_oParams, m, 4, 3, false );
       TestFloat64MatrixArray( a_oParams, m, 4, 4, false );
    
       // Row Major
       TestFloat64MatrixArray( a_oParams, m, 2, 2, true );
       TestFloat64MatrixArray( a_oParams, m, 2, 3, true );
       TestFloat64MatrixArray( a_oParams, m, 2, 4, true );
       TestFloat64MatrixArray( a_oParams, m, 3, 2, true );
       TestFloat64MatrixArray( a_oParams, m, 3, 3, true );
       TestFloat64MatrixArray( a_oParams, m, 3, 4, true );
       TestFloat64MatrixArray( a_oParams, m, 4, 2, true );
       TestFloat64MatrixArray( a_oParams, m, 4, 3, true );
       TestFloat64MatrixArray( a_oParams, m, 4, 4, true );
    
       // Do cleanup.
       //Console.Alert( "DESTROYING PROGRAM AND BUFFER!" );
       a_oAccel.DeleteProgram( a_oProgram.GetHandle() );
       a_oAccel.DestroyShaderBuffer( a_oShaderBuffer.GetParams() );
    
       delete a_oParams.m_pRenderInfo;
    
       //////////////////////////////////////////////////
       // Finis~
       //////////////////////////////////////////////////
    
       LibAppServiceBuild.Out( a_oParams.m_slInfo );
    
       Console.Blank();
       Console.Out( "Executed: " + Script.Runtime.CurrentFunction.Name );
       Console.Out( "" );
    
       LibAppServiceBuild.Out( a_oParams.m_slTestStatus );
    
       return true;
    }
    

Examine The Test Code 'TestFloat32Matrix' Function

  1. Use the text editor search feature to find a function named TestFloat32Matrix. There are a few key sections.

    1. Create the variable name.
    2. Get reflection information for the buffer variable or return upon failure.
    3. Create the data we want to write and declare storage for the readback.
    4. Write data the device and execute the shader program.
    5. Read back the values that were written to the shader buffer variable during program execution.
    6. Print data.
    7. Print test results.
    8. Print shader buffer variable reflection information.

    ///////////////////////////////////////////////////////////////////////////////
    // function
    ///////////////////////////////////////////////////////////////////////////////
    
    function void TestFloat32Matrix( GpuTestDevice p_oTest, MemoryBarrier m, int p_nCols, int p_nRows, bool p_bRowMajor )
    {
       string a_sName = "test_mat" + p_nCols + "x" + p_nRows;
       a_sName += AppendMatrixLayout( p_bRowMajor );
    
       LibAppServiceTest.MakeHeader(
          p_oTest.m_slInfo, a_sName, "" );
    
       auto ProgramConstantInfo a_oInfo;
       bool a_bValid = GetConstantInfo( p_oTest, a_oInfo, a_sName );
       if( !( a_bValid ) )
       {
          return;
       }
    
       ////////////////////////////////////////
       // Create Data
       ////////////////////////////////////////
    
       auto Float32ArrayAlgorithms a_afAlgorithms;
       auto Float32MatrixAlgorithms a_mfAlgorithms;
    
       auto Float32Matrix a_mfWrite;
       a_mfWrite.Fill( 0.0 );
    
       LibFloat32Matrix.Iota( a_mfWrite, p_nCols, p_nRows );
    
       auto Float32Matrix a_mfRead;
       a_mfRead.Fill( 0.0 );
    
       auto Float32ArrayView src_view = a_mfWrite.GetView();
       auto Float32ArrayView dst_view = a_mfRead.GetView();
    
       ////////////////////////////////////////
       // Write Data
       ////////////////////////////////////////
    
       bool a_bZeroMemory = true;
    
       int a_nWriteSize = a_mfAlgorithms.GetWriteSizeInBytes(
          a_oInfo, a_mfWrite, p_nCols, p_nRows );
       //Console.Alert( a_nWriteSize );
    
       auto Float32Array a_afWriteData;
       a_afWriteData.ConvertBytesToCount( a_nWriteSize );
       auto Float32Iterator it_dst = a_afWriteData.First();
    
       a_mfAlgorithms.ConvertToGpuMemoryLayout(
          a_oInfo, a_bZeroMemory, p_nCols, p_nRows,
          src_view.First, src_view.Last, it_dst );
       //LibFloat32Array.Out( a_afWriteData );
    
       auto MemoryPointer a_oSrcPtr = a_afWriteData.GetPointer();
    
       p_oTest.m_pAccel.WriteShaderSubBuffer(
          a_oInfo.Offset, a_nWriteSize, a_oSrcPtr );
    
       ////////////////////////////////////////
       // Execute Program
       ////////////////////////////////////////
    
       p_oTest.m_pAccel.ExecuteProgram( true, 128, 128, 1, 32, 32, 1 );
       p_oTest.m_pAccel.InsertMemoryBarrier( m );
    
       ////////////////////////////////////////
       // Read Data
       ////////////////////////////////////////
    
       auto Float32Array a_afReadData;
       a_afReadData.Count = a_afWriteData.GetCount();
       a_afReadData.Fill( 0.0 );
    
       auto MemoryPointer a_oDstPtr = a_afReadData.GetPointer();
    
       p_oTest.m_pAccel.ReadShaderSubBuffer(
          a_oInfo.Offset, a_oDstPtr.SizeInBytes(), a_oDstPtr );
       //LibFloat32Array.Out( a_afReadData );
    
       auto Float32ArrayView read_view = a_afReadData.GetView();
    
       a_mfAlgorithms.ConvertToCpuMemoryLayout(
          a_oInfo, a_bZeroMemory, p_nCols, p_nRows,
          read_view.First, read_view.Last, dst_view.First );
    
       ////////////////////////////////////////
       // Test Data
       ////////////////////////////////////////
    
       p_oTest.m_slInfo.Add( "Write values:" );
       /*
       auto Float32Iterator first;
       auto Float32Iterator last;
    
       LibFloat32Matrix.ConvertToCsv(
       a_mfWrite, p_oTest.m_slInfo );
       */
       LibFloat32Matrix.ConvertToCsv(
          a_mfWrite, p_oTest.m_slInfo );
    
       p_oTest.m_slInfo.AddBlank();
    
       p_oTest.m_slInfo.Add( "Read values:" );
       LibFloat32Matrix.ConvertToCsv(
          a_mfRead, p_oTest.m_slInfo );
    
       int a_nRes = a_afAlgorithms.Memcmp(
          src_view.First, dst_view.First, a_mfWrite.SizeInBytes() );
       LibAppServiceTest.DoMemcmp( p_oTest.m_slInfo, a_nRes );
    
       LibProgramConstantInfo.Print( a_oInfo, p_oTest.m_slInfo );
    
       p_oTest.m_slTestStatus.Add( a_sName + " test status: " +
          a_nRes + LibAppServiceTest.GetTestHint() );
    }
    

    This exercise is complete. Return to tutorials.