summaryrefslogtreecommitdiffstats
path: root/o3d/tests/basic_system_test
diff options
context:
space:
mode:
authorgspencer@google.com <gspencer@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-27 23:15:42 +0000
committergspencer@google.com <gspencer@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-27 23:15:42 +0000
commit05b47f7a8c5451f858dc220df0e3a97542edace6 (patch)
treea2273d619f0625c9d44d40842845ccce2eac1045 /o3d/tests/basic_system_test
parent5cdc8bdb4c847cefe7f4542bd10c9880c2c557a0 (diff)
downloadchromium_src-05b47f7a8c5451f858dc220df0e3a97542edace6.zip
chromium_src-05b47f7a8c5451f858dc220df0e3a97542edace6.tar.gz
chromium_src-05b47f7a8c5451f858dc220df0e3a97542edace6.tar.bz2
This is the O3D source tree's initial commit to the Chromium tree. It
is not built or referenced at all by the chrome build yet, and doesn't yet build in it's new home. We'll change that shortly. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17035 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'o3d/tests/basic_system_test')
-rw-r--r--o3d/tests/basic_system_test/basic_system_test.cc340
-rw-r--r--o3d/tests/basic_system_test/reference_frames/frame_capture0.pngbin0 -> 2454 bytes
-rw-r--r--o3d/tests/basic_system_test/reference_frames/frame_capture1.pngbin0 -> 2738 bytes
-rw-r--r--o3d/tests/basic_system_test/reference_frames/frame_capture2.pngbin0 -> 2735 bytes
-rw-r--r--o3d/tests/basic_system_test/reference_frames/frame_capture3.pngbin0 -> 2719 bytes
-rw-r--r--o3d/tests/basic_system_test/reference_frames/frame_capture4.pngbin0 -> 2764 bytes
-rw-r--r--o3d/tests/basic_system_test/reference_stream.csv242
7 files changed, 582 insertions, 0 deletions
diff --git a/o3d/tests/basic_system_test/basic_system_test.cc b/o3d/tests/basic_system_test/basic_system_test.cc
new file mode 100644
index 0000000..b37ac8e8
--- /dev/null
+++ b/o3d/tests/basic_system_test/basic_system_test.cc
@@ -0,0 +1,340 @@
+/*
+ * Copyright 2009, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+// Basic O3D system test for constructing and rendering geometry.
+
+#include <math.h>
+
+#include "core/cross/client.h"
+#include "core/cross/counter.h"
+#include "core/cross/draw_context.h"
+#include "core/cross/draw_pass.h"
+#include "core/cross/draw_list.h"
+#include "core/cross/primitive.h"
+#include "core/cross/stream_bank.h"
+#include "core/cross/tree_traversal.h"
+#include "core/cross/clear_buffer.h"
+#include "core/cross/math_utilities.h"
+#include "import/cross/raw_data.h"
+#include "tests/common/win/testing_common.h"
+#include "tests/common/win/system_test.h"
+
+namespace o3d {
+
+float DegreesToRadians(float degrees) {
+ return degrees * kPi / 180.f;
+}
+
+const char kShaderString[] =
+"// World View Projection matrix that will transform the input vertices \n"
+"// to screen space. \n"
+"float4x4 worldViewProjection : WorldViewProjection; \n"
+" \n"
+"// input parameters for our vertex shader \n"
+"struct VertexShaderInput { \n"
+" float4 position : POSITION; \n"
+"}; \n"
+" \n"
+"// input parameters for our pixel shader \n"
+"struct PixelShaderInput { \n"
+" float4 position : POSITION; \n"
+"}; \n"
+"/** \n"
+"* The vertex shader simply transforms the input vertices to screen space. \n"
+"*/ \n"
+"PixelShaderInput vertexShaderFunction(VertexShaderInput input) { \n"
+" PixelShaderInput output; \n"
+" \n"
+" // Multiply the vertex positions by the worldViewProjection matrix to \n"
+" // transform them to screen space. \n"
+" output.position = mul(input.position, worldViewProjection); \n"
+" return output; \n"
+"} \n"
+" \n"
+"/** \n"
+"* This pixel shader just returns the color red. \n"
+"*/ \n"
+"float4 pixelShaderFunction(PixelShaderInput input): COLOR { \n"
+" return float4(1, 0, 0, 1); // Red. \n"
+"} \n"
+" \n"
+"// Here we tell our effect file *which* functions are \n"
+"// our vertex and pixel shaders. \n"
+" \n"
+"// #o3d VertexShaderEntryPoint vertexShaderFunction \n"
+"// #o3d PixelShaderEntryPoint pixelShaderFunction \n"
+"// #o3d MatrixLoadOrder RowMajor \n";
+
+// System-test class for basic o3d geometry construction and render
+// functionality.
+class BasicSystemTest : public testing::Test {
+ protected:
+ BasicSystemTest()
+ : object_manager_(g_service_locator) {}
+
+ virtual void SetUp();
+ virtual void TearDown();
+
+ Client* client() {
+ return client_;
+ }
+
+ Pack* pack() {
+ return pack_;
+ }
+
+ DrawContext* context() {
+ return context_;
+ }
+
+ DrawList* opaque_draw_list() {
+ return opaque_draw_list_;
+ }
+
+ DrawList* transparent_draw_list() {
+ return transparent_draw_list_;
+ }
+
+ // Constructs a cube, and returns the transform node under which
+ // the new cube shape resides.
+ void CreateCube(Material::Ref material, Transform::Ref* transform);
+
+ ServiceDependency<ObjectManager> object_manager_;
+
+ private:
+ Client *client_;
+ Pack* pack_;
+ DrawContext* context_;
+ DrawList* opaque_draw_list_;
+ DrawList* transparent_draw_list_;
+};
+
+void BasicSystemTest::SetUp() {
+ client_ = new o3d::Client(g_service_locator);
+ client_->Init();
+
+ pack_ = object_manager_->CreatePack();
+
+ Transform* root = client_->root();
+
+ // Creates a clear buffer render node and parents it to the root.
+ ClearBuffer* clear_buffer = pack_->Create<ClearBuffer>();
+ clear_buffer->set_priority(0);
+ clear_buffer->set_clear_color(Float4(0.5f, 0.5f, 0.5f, 1.0f));
+ clear_buffer->SetParent(client_->render_graph_root());
+
+ // Create DrawLists
+ opaque_draw_list_ = pack_->Create<DrawList>();
+ transparent_draw_list_ = pack_->Create<DrawList>();
+
+ // Create DrawContext.
+ context_ = pack_->Create<DrawContext>();
+
+ // Creates a TreeTraversal and parents it to the root.
+ TreeTraversal* tree_traversal = pack_->Create<TreeTraversal>();
+ tree_traversal->set_priority(1);
+ tree_traversal->SetParent(client_->render_graph_root());
+
+ // Creates a DrawPass for opaque shapes.
+ DrawPass* opaque_draw_pass = pack_->Create<DrawPass>();
+ opaque_draw_pass->set_priority(2);
+ opaque_draw_pass->set_draw_list(opaque_draw_list_);
+ opaque_draw_pass->SetParent(client_->render_graph_root());
+
+ // Creates a DrawPass for transparent shapes.
+ DrawPass* transparent_draw_pass = pack_->Create<DrawPass>();
+ transparent_draw_pass->set_priority(3);
+ transparent_draw_pass->set_draw_list(transparent_draw_list_);
+ transparent_draw_pass->SetParent(client_->render_graph_root());
+
+ // Register the passlists and drawcontext with the TreeTraversal
+ tree_traversal->RegisterDrawList(opaque_draw_list_, context_, true);
+ tree_traversal->RegisterDrawList(transparent_draw_list_, context_, true);
+ tree_traversal->set_transform(root);
+
+ const Point3 eye(0.0f, 1.0f, 5.0f);
+ const Point3 target(0.0f, 0.0f, 0.0f);
+ const Vector3 up(0.0f, 1.0f, 0.0f);
+
+ const Matrix4 perspective_matrix = Vectormath::Aos::CreatePerspectiveMatrix(
+ DegreesToRadians(60.0f),
+ 1.0f,
+ 1.0f,
+ 1000.0f);
+ const Matrix4 view_matrix = Matrix4::lookAt(eye, target, up);
+
+ context_->set_view(view_matrix);
+ context_->set_projection(perspective_matrix);
+}
+
+void BasicSystemTest::TearDown() {
+ // Force another render to make the stream capture end.
+ client()->RenderClient();
+
+ pack_->Destroy();
+ delete client_;
+}
+
+void BasicSystemTest::CreateCube(Material::Ref material,
+ Transform::Ref* transform) {
+ Shape::Ref cube_shape(pack()->Create<Shape>());
+ ASSERT_FALSE(cube_shape.IsNull());
+
+ Transform::Ref cube_xform(pack()->Create<Transform>());
+ ASSERT_FALSE(cube_xform.IsNull());
+
+ // Create the Primitive that will contain the geometry data for
+ // the cube.
+ Primitive::Ref cube_primitive(pack()->Create<Primitive>());
+ ASSERT_FALSE(cube_primitive.IsNull());
+
+ // Create a StreamBank to hold the streams of vertex data.
+ StreamBank::Ref stream_bank(pack()->Create<StreamBank>());
+ ASSERT_FALSE(stream_bank.IsNull());
+
+ // Assign the material that was passed in to the primitive.
+ cube_primitive->set_material(material);
+
+ // Assign the Primitive to the Shape.
+ cube_primitive->SetOwner(cube_shape);
+
+ // Assign the StreamBank to the Primitive.
+ cube_primitive->set_stream_bank(stream_bank);
+
+ cube_primitive->set_primitive_type(Primitive::TRIANGLELIST);
+ cube_primitive->set_number_primitives(12); // 12 triangles
+ cube_primitive->set_number_vertices(8); // 8 vertices in total
+
+ cube_primitive->CreateDrawElement(pack(), NULL);
+
+ static const float kPositionArray[][3] = {
+ {-0.5, -0.5, 0.5},
+ {0.5, -0.5, 0.5},
+ {-0.5, 0.5, 0.5},
+ {0.5, 0.5, 0.5},
+ {-0.5, 0.5, -0.5},
+ {0.5, 0.5, -0.5},
+ {-0.5, -0.5, -0.5},
+ {0.5, -0.5, -0.5}
+ };
+
+ static const unsigned int kIndicesArray[] = {
+ 0, 1, 2, // face 1
+ 2, 1, 3,
+ 2, 3, 4, // face 2
+ 4, 3, 5,
+ 4, 5, 6, // face 3
+ 6, 5, 7,
+ 6, 7, 0, // face 4
+ 0, 7, 1,
+ 1, 7, 3, // face 5
+ 3, 7, 5,
+ 6, 0, 4, // face 6
+ 4, 0, 2
+ };
+
+ static const unsigned int kNumComponents = arraysize(kPositionArray[0]);
+ static const unsigned int kNumElements = arraysize(kPositionArray);
+ static const unsigned int kStride = kNumComponents;
+
+ VertexBuffer::Ref positions_buffer(pack()->Create<VertexBuffer>());
+
+ FloatField::Ref positions_field(positions_buffer->CreateField(
+ FloatField::GetApparentClass(),
+ 3));
+ ASSERT_FALSE(positions_field.IsNull());
+
+ ASSERT_TRUE(positions_buffer->AllocateElements(kNumElements));
+ positions_field->SetFromFloats(&kPositionArray[0][0], kStride, 0,
+ kNumElements);
+
+ IndexBuffer::Ref index_buffer(pack()->Create<IndexBuffer>());
+ ASSERT_FALSE(index_buffer.IsNull());
+
+ static const unsigned int kNumIndices = arraysize(kIndicesArray);
+ ASSERT_TRUE(index_buffer->AllocateElements(kNumIndices));
+ index_buffer->index_field()->SetFromUInt32s(&kIndicesArray[0], 1,
+ 0, kNumIndices);
+
+ // Associate the positions Buffer with the StreamBank.
+ stream_bank->SetVertexStream(
+ Stream::POSITION, // semantic: This stream stores vertex positions
+ 0, // semantic index: First (and only) position stream
+ positions_field, // field: the field this stream uses.
+ 0); // start_index: How many elements to skip in the
+ // field.
+
+ // Associate the triangle indices Buffer with the primitive.
+ cube_primitive->set_index_buffer(index_buffer);
+
+ cube_xform->AddShape(cube_shape);
+ *transform = cube_xform;
+}
+
+TEST_F(BasicSystemTest, BasicSystemTestCase) {
+ ASSERT_FALSE(client()->root() == NULL);
+
+ Transform *spin_transform = pack()->Create<Transform>();
+ ASSERT_FALSE(spin_transform == NULL);
+
+ Transform* root = client()->root();
+ spin_transform->SetParent(root);
+
+ Material::Ref cube_material(pack()->Create<Material>());
+ ASSERT_FALSE(cube_material.IsNull());
+ cube_material->set_draw_list(opaque_draw_list());
+
+ Effect::Ref effect(pack()->Create<Effect>());
+ effect->LoadFromFXString(kShaderString);
+ cube_material->set_effect(effect);
+
+ Transform::Ref cube_xform;
+ CreateCube(cube_material, &cube_xform);
+ ASSERT_FALSE(cube_xform.IsNull());
+ cube_xform->SetParent(spin_transform);
+
+ ASSERT_FALSE(spin_transform->GetChildren()[0] == NULL);
+
+ // Assert that 5 rendered frames generate both the correct command streams,
+ // and framebuffer contents.
+ BEGIN_ASSERT_STREAM_CAPTURE();
+ for (int frame_count = 0; frame_count < 5; ++frame_count) {
+ client()->RenderClient();
+ ASSERT_FRAMEBUFFER();
+ Matrix4 mat(Matrix4::rotationY(static_cast<float>(frame_count) * 2 *
+ static_cast<float>(M_PI) / 5.0f));
+ spin_transform->set_local_matrix(mat);
+ }
+ END_ASSERT_STREAM_CAPTURE();
+}
+
+} // namespace o3d
diff --git a/o3d/tests/basic_system_test/reference_frames/frame_capture0.png b/o3d/tests/basic_system_test/reference_frames/frame_capture0.png
new file mode 100644
index 0000000..cfe991f
--- /dev/null
+++ b/o3d/tests/basic_system_test/reference_frames/frame_capture0.png
Binary files differ
diff --git a/o3d/tests/basic_system_test/reference_frames/frame_capture1.png b/o3d/tests/basic_system_test/reference_frames/frame_capture1.png
new file mode 100644
index 0000000..3f7baeb
--- /dev/null
+++ b/o3d/tests/basic_system_test/reference_frames/frame_capture1.png
Binary files differ
diff --git a/o3d/tests/basic_system_test/reference_frames/frame_capture2.png b/o3d/tests/basic_system_test/reference_frames/frame_capture2.png
new file mode 100644
index 0000000..b498023
--- /dev/null
+++ b/o3d/tests/basic_system_test/reference_frames/frame_capture2.png
Binary files differ
diff --git a/o3d/tests/basic_system_test/reference_frames/frame_capture3.png b/o3d/tests/basic_system_test/reference_frames/frame_capture3.png
new file mode 100644
index 0000000..fd5719c
--- /dev/null
+++ b/o3d/tests/basic_system_test/reference_frames/frame_capture3.png
Binary files differ
diff --git a/o3d/tests/basic_system_test/reference_frames/frame_capture4.png b/o3d/tests/basic_system_test/reference_frames/frame_capture4.png
new file mode 100644
index 0000000..2fff834
--- /dev/null
+++ b/o3d/tests/basic_system_test/reference_frames/frame_capture4.png
Binary files differ
diff --git a/o3d/tests/basic_system_test/reference_stream.csv b/o3d/tests/basic_system_test/reference_stream.csv
new file mode 100644
index 0000000..eb38ab4
--- /dev/null
+++ b/o3d/tests/basic_system_test/reference_stream.csv
@@ -0,0 +1,242 @@
+Event Type,EID,Event,StartTime,Frame,Duration,FPS
+Session Start,1,Start Session,0,,0,
+Process Start,2,Start Process,0,,0,
+Frame,3,Frame 2,30598216619,2,2655979068,0.4
+Call,4,D3DPERF_GetStatus(),30598284778,,,
+User Marker,5,User Marker: Frame_Capture: 306 : tests\basic_system_test\import_test.cc,31097816048,,0,
+User Marker,6,User Marker: CaptureScreenContents,31097864253,,0,
+Call,7,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x003EBEC4 --> 0x041F4D40)",31097951090,,,
+Call,8,<0x041F4040> IDirect3DDevice9::GetDepthStencilSurface(0x003EBEC8 --> 0x041C7D68),31097999717,,,
+Call,9,<0x041F4040> IDirect3DDevice9::BeginScene(),31098043720,,,
+Call,10,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F3BC --> 0x041F4D40)",31098090625,,,
+Call,11,<0x041F4D40> IDirect3DSurface9::GetDesc(0x0012F394),31098134913,,,
+Call,12,<0x041F4D40> IDirect3DSurface9::Release(),31098179695,,,
+Call,13,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F3BC --> 0x041F4D40)",31098233507,,,
+Call,14,<0x041F4D40> IDirect3DSurface9::GetDesc(0x0012F394),31098277332,,,
+Call,15,<0x041F4D40> IDirect3DSurface9::Release(),31098320525,,,
+Call,16,<0x041F4040> IDirect3DDevice9::SetViewport(0x0012F39C),31098365740,,,
+Call,17,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F6C8 --> 0x041F4D40)",31098432568,,,
+Call,18,<0x041F4040> IDirect3DDevice9::GetDepthStencilSurface(0x0012F6BC --> 0x041C7D68),31098476648,,,
+Call,19,"<0x041F4040> IDirect3DDevice9::Clear(0x00000000, NULL, 0x00000007, D3DCOLOR_ARGB(0xff,0x7f,0x7f,0x7f), 1.000f, 0x00000000)",31098521071,,,
+Call,20,<0x041C7D68> IDirect3DSurface9::Release(),31098568276,,,
+Call,21,<0x041F4D40> IDirect3DSurface9::Release(),31098611436,,,
+Call,22,<0x041F4040> IDirect3DDevice9::SetIndices(0x041C85B8),31098727017,,,
+Call,23,"<0x041F4040> IDirect3DDevice9::SetStreamSource(0, 0x041C84E8, 0, 12)",31098885293,,,
+Call,24,<0x041F4040> IDirect3DDevice9::SetVertexDeclaration(0x041C8820),31098945447,,,
+Call,25,"<0x041C8298> ID3DXEffect::SetMatrix(0xFAC1DD7B, 0x0012EECC)",31099004241,,,
+Call,26,<0x041C8298> ID3DXEffect::GetTechnique(0),31099061461,,,
+Call,27,<0x041C8298> ID3DXEffect::SetTechnique(0xFAC1D0CB),31099114543,,,
+Call,28,"<0x041C8298> ID3DXEffect::Begin(0x0012EF60, 0x00000000)",31099167480,,,
+Call,29,<0x041CACF0> IDirect3DStateBlock9::Capture(),31099185394,,,
+Call,30,<0x041C9AB8> IDirect3DStateBlock9::Capture(),31099249010,,,
+Call,31,<0x041C94E8> IDirect3DStateBlock9::Capture(),31099306834,,,
+Call,32,<0x041CA088> IDirect3DStateBlock9::Capture(),31099362781,,,
+Call,33,<0x041C8948> IDirect3DStateBlock9::Capture(),31099417686,,,
+Call,34,<0x041C8298> ID3DXEffect::BeginPass(0),31099514400,,,
+Call,35,<0x041F4040> IDirect3DDevice9::SetVertexShader(0x041C81E0),31099533107,,,
+Call,36,"<0x041F4040> IDirect3DDevice9::SetVertexShaderConstantF(0, 0x053E22E0, 4)",31099588736,,,
+Call,37,<0x041F4040> IDirect3DDevice9::SetPixelShader(0x041C8128),31099644021,,,
+Call,38,"<0x041F4040> IDirect3DDevice9::DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 8, 0, 12)",31099736770,,,
+Call,39,<0x041C8298> ID3DXEffect::EndPass(),31099825615,,,
+Call,40,<0x041C8298> ID3DXEffect::End(),31099887465,,,
+Call,41,<0x041C8948> IDirect3DStateBlock9::Apply(),31099905619,,,
+Call,42,<0x041CA088> IDirect3DStateBlock9::Apply(),31099959011,,,
+Call,43,<0x041C94E8> IDirect3DStateBlock9::Apply(),31100002488,,,
+Call,44,<0x041C9AB8> IDirect3DStateBlock9::Apply(),31100045426,,,
+Call,45,<0x041CACF0> IDirect3DStateBlock9::Apply(),31100090448,,,
+Call,46,<0x041F4040> IDirect3DDevice9::EndScene(),31100181906,,,
+Call,47,<0x041F4D40> IDirect3DSurface9::Release(),31100226786,,,
+Call,48,<0x041C7D68> IDirect3DSurface9::Release(),31100271023,,,
+Call,49,"<0x041F4040> IDirect3DDevice9::Present(NULL, NULL, NULL, NULL)",31100330032,,,
+Frame,50,Frame 3,33254239772,3,2655502064,0.4
+Call,51,D3DPERF_GetStatus(),33254341389,,,
+User Marker,52,User Marker: Frame_Capture: 306 : tests\basic_system_test\import_test.cc,33754093579,,0,
+User Marker,53,User Marker: CaptureScreenContents,33754168712,,0,
+Call,54,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x003EBEC4 --> 0x041F4D40)",33754242875,,,
+Call,55,<0x041F4040> IDirect3DDevice9::GetDepthStencilSurface(0x003EBEC8 --> 0x041C7D68),33754291635,,,
+Call,56,<0x041F4040> IDirect3DDevice9::BeginScene(),33754335630,,,
+Call,57,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F3BC --> 0x041F4D40)",33754382330,,,
+Call,58,<0x041F4D40> IDirect3DSurface9::GetDesc(0x0012F394),33754426625,,,
+Call,59,<0x041F4D40> IDirect3DSurface9::Release(),33754471340,,,
+Call,60,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F3BC --> 0x041F4D40)",33754516463,,,
+Call,61,<0x041F4D40> IDirect3DSurface9::GetDesc(0x0012F394),33754560173,,,
+Call,62,<0x041F4D40> IDirect3DSurface9::Release(),33754603635,,,
+Call,63,<0x041F4040> IDirect3DDevice9::SetViewport(0x0012F39C),33754648955,,,
+Call,64,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F6C8 --> 0x041F4D40)",33754715152,,,
+Call,65,<0x041F4040> IDirect3DDevice9::GetDepthStencilSurface(0x0012F6BC --> 0x041C7D68),33754758979,,,
+Call,66,"<0x041F4040> IDirect3DDevice9::Clear(0x00000000, NULL, 0x00000007, D3DCOLOR_ARGB(0xff,0x7f,0x7f,0x7f), 1.000f, 0x00000000)",33754803029,,,
+Call,67,<0x041C7D68> IDirect3DSurface9::Release(),33754858946,,,
+Call,68,<0x041F4D40> IDirect3DSurface9::Release(),33754902321,,,
+Call,69,<0x041F4040> IDirect3DDevice9::SetIndices(0x041C85B8),33755087163,,,
+Call,70,"<0x041F4040> IDirect3DDevice9::SetStreamSource(0, 0x041C84E8, 0, 12)",33755142683,,,
+Call,71,<0x041F4040> IDirect3DDevice9::SetVertexDeclaration(0x041C8820),33755189392,,,
+Call,72,"<0x041C8298> ID3DXEffect::SetMatrix(0xFAC1DD7B, 0x0012EECC)",33755236937,,,
+Call,73,<0x041C8298> ID3DXEffect::GetTechnique(0),33755282727,,,
+Call,74,<0x041C8298> ID3DXEffect::SetTechnique(0xFAC1D0CB),33755325955,,,
+Call,75,"<0x041C8298> ID3DXEffect::Begin(0x0012EF60, 0x00000000)",33755369875,,,
+Call,76,<0x041CACF0> IDirect3DStateBlock9::Capture(),33755384392,,,
+Call,77,<0x041C9AB8> IDirect3DStateBlock9::Capture(),33755431049,,,
+Call,78,<0x041C94E8> IDirect3DStateBlock9::Capture(),33755475384,,,
+Call,79,<0x041CA088> IDirect3DStateBlock9::Capture(),33755518354,,,
+Call,80,<0x041C8948> IDirect3DStateBlock9::Capture(),33755561217,,,
+Call,81,<0x041C8298> ID3DXEffect::BeginPass(0),33755635633,,,
+Call,82,<0x041F4040> IDirect3DDevice9::SetVertexShader(0x041C81E0),33755651344,,,
+Call,83,"<0x041F4040> IDirect3DDevice9::SetVertexShaderConstantF(0, 0x053E22E0, 4)",33755697184,,,
+Call,84,<0x041F4040> IDirect3DDevice9::SetPixelShader(0x041C8128),33755742764,,,
+Call,85,"<0x041F4040> IDirect3DDevice9::DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 8, 0, 12)",33755818852,,,
+Call,86,<0x041C8298> ID3DXEffect::EndPass(),33755867400,,,
+Call,87,<0x041C8298> ID3DXEffect::End(),33755910380,,,
+Call,88,<0x041C8948> IDirect3DStateBlock9::Apply(),33755923289,,,
+Call,89,<0x041CA088> IDirect3DStateBlock9::Apply(),33755988713,,,
+Call,90,<0x041C94E8> IDirect3DStateBlock9::Apply(),33756051677,,,
+Call,91,<0x041C9AB8> IDirect3DStateBlock9::Apply(),33756095407,,,
+Call,92,<0x041CACF0> IDirect3DStateBlock9::Apply(),33756140752,,,
+Call,93,<0x041F4040> IDirect3DDevice9::EndScene(),33756230874,,,
+Call,94,<0x041F4D40> IDirect3DSurface9::Release(),33756275152,,,
+Call,95,<0x041C7D68> IDirect3DSurface9::Release(),33756318974,,,
+Call,96,"<0x041F4040> IDirect3DDevice9::Present(NULL, NULL, NULL, NULL)",33756374044,,,
+Frame,97,Frame 4,35909807940,4,2701946354,0.4
+Call,98,D3DPERF_GetStatus(),35909909042,,,
+User Marker,99,User Marker: Frame_Capture: 306 : tests\basic_system_test\import_test.cc,36409267444,,0,
+User Marker,100,User Marker: CaptureScreenContents,36409356534,,0,
+Call,101,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x003EBEC4 --> 0x041F4D40)",36409433720,,,
+Call,102,<0x041F4040> IDirect3DDevice9::GetDepthStencilSurface(0x003EBEC8 --> 0x041C7D68),36409482529,,,
+Call,103,<0x041F4040> IDirect3DDevice9::BeginScene(),36409526599,,,
+Call,104,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F3BC --> 0x041F4D40)",36409573357,,,
+Call,105,<0x041F4D40> IDirect3DSurface9::GetDesc(0x0012F394),36409617609,,,
+Call,106,<0x041F4D40> IDirect3DSurface9::Release(),36409662462,,,
+Call,107,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F3BC --> 0x041F4D40)",36409707537,,,
+Call,108,<0x041F4D40> IDirect3DSurface9::GetDesc(0x0012F394),36409750972,,,
+Call,109,<0x041F4D40> IDirect3DSurface9::Release(),36409794277,,,
+Call,110,<0x041F4040> IDirect3DDevice9::SetViewport(0x0012F39C),36409839547,,,
+Call,111,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F6C8 --> 0x041F4D40)",36409906133,,,
+Call,112,<0x041F4040> IDirect3DDevice9::GetDepthStencilSurface(0x0012F6BC --> 0x041C7D68),36409950343,,,
+Call,113,"<0x041F4040> IDirect3DDevice9::Clear(0x00000000, NULL, 0x00000007, D3DCOLOR_ARGB(0xff,0x7f,0x7f,0x7f), 1.000f, 0x00000000)",36409994496,,,
+Call,114,<0x041C7D68> IDirect3DSurface9::Release(),36410040548,,,
+Call,115,<0x041F4D40> IDirect3DSurface9::Release(),36410083603,,,
+Call,116,<0x041F4040> IDirect3DDevice9::SetIndices(0x041C85B8),36410199387,,,
+Call,117,"<0x041F4040> IDirect3DDevice9::SetStreamSource(0, 0x041C84E8, 0, 12)",36410296534,,,
+Call,118,<0x041F4040> IDirect3DDevice9::SetVertexDeclaration(0x041C8820),36410343771,,,
+Call,119,"<0x041C8298> ID3DXEffect::SetMatrix(0xFAC1DD7B, 0x0012EECC)",36410391106,,,
+Call,120,<0x041C8298> ID3DXEffect::GetTechnique(0),36410437171,,,
+Call,121,<0x041C8298> ID3DXEffect::SetTechnique(0xFAC1D0CB),36410573271,,,
+Call,122,"<0x041C8298> ID3DXEffect::Begin(0x0012EF60, 0x00000000)",36410618823,,,
+Call,123,<0x041CACF0> IDirect3DStateBlock9::Capture(),36410633515,,,
+Call,124,<0x041C9AB8> IDirect3DStateBlock9::Capture(),36410680440,,,
+Call,125,<0x041C94E8> IDirect3DStateBlock9::Capture(),36410725060,,,
+Call,126,<0x041CA088> IDirect3DStateBlock9::Capture(),36410768165,,,
+Call,127,<0x041C8948> IDirect3DStateBlock9::Capture(),36410811430,,,
+Call,128,<0x041C8298> ID3DXEffect::BeginPass(0),36410886131,,,
+Call,129,<0x041F4040> IDirect3DDevice9::SetVertexShader(0x041C81E0),36410901798,,,
+Call,130,"<0x041F4040> IDirect3DDevice9::SetVertexShaderConstantF(0, 0x053E22E0, 4)",36410947800,,,
+Call,131,<0x041F4040> IDirect3DDevice9::SetPixelShader(0x041C8128),36410993338,,,
+Call,132,"<0x041F4040> IDirect3DDevice9::DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 8, 0, 12)",36411069298,,,
+Call,133,<0x041C8298> ID3DXEffect::EndPass(),36411117723,,,
+Call,134,<0x041C8298> ID3DXEffect::End(),36411160953,,,
+Call,135,<0x041C8948> IDirect3DStateBlock9::Apply(),36411174055,,,
+Call,136,<0x041CA088> IDirect3DStateBlock9::Apply(),36411299753,,,
+Call,137,<0x041C94E8> IDirect3DStateBlock9::Apply(),36411354450,,,
+Call,138,<0x041C9AB8> IDirect3DStateBlock9::Apply(),36411407984,,,
+Call,139,<0x041CACF0> IDirect3DStateBlock9::Apply(),36411463799,,,
+Call,140,<0x041F4040> IDirect3DDevice9::EndScene(),36411573417,,,
+Call,141,<0x041F4D40> IDirect3DSurface9::Release(),36411627859,,,
+Call,142,<0x041C7D68> IDirect3DSurface9::Release(),36411680366,,,
+Call,143,"<0x041F4040> IDirect3DDevice9::Present(NULL, NULL, NULL, NULL)",36411737183,,,
+Frame,144,Frame 5,38611822165,5,2704679664,0.4
+Call,145,D3DPERF_GetStatus(),38611921000,,,
+User Marker,146,User Marker: Frame_Capture: 306 : tests\basic_system_test\import_test.cc,39111379596,,0,
+User Marker,147,User Marker: CaptureScreenContents,39111440170,,0,
+Call,148,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x003EBEC4 --> 0x041F4D40)",39111536980,,,
+Call,149,<0x041F4040> IDirect3DDevice9::GetDepthStencilSurface(0x003EBEC8 --> 0x041C7D68),39111596751,,,
+Call,150,<0x041F4040> IDirect3DDevice9::BeginScene(),39111652673,,,
+Call,151,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F3BC --> 0x041F4D40)",39111709028,,,
+Call,152,<0x041F4D40> IDirect3DSurface9::GetDesc(0x0012F394),39111762947,,,
+Call,153,<0x041F4D40> IDirect3DSurface9::Release(),39111820274,,,
+Call,154,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F3BC --> 0x041F4D40)",39111884080,,,
+Call,155,<0x041F4D40> IDirect3DSurface9::GetDesc(0x0012F394),39111938522,,,
+Call,156,<0x041F4D40> IDirect3DSurface9::Release(),39111981857,,,
+Call,157,<0x041F4040> IDirect3DDevice9::SetViewport(0x0012F39C),39112027207,,,
+Call,158,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F6C8 --> 0x041F4D40)",39112093744,,,
+Call,159,<0x041F4040> IDirect3DDevice9::GetDepthStencilSurface(0x0012F6BC --> 0x041C7D68),39112137584,,,
+Call,160,"<0x041F4040> IDirect3DDevice9::Clear(0x00000000, NULL, 0x00000007, D3DCOLOR_ARGB(0xff,0x7f,0x7f,0x7f), 1.000f, 0x00000000)",39112181704,,,
+Call,161,<0x041C7D68> IDirect3DSurface9::Release(),39112227771,,,
+Call,162,<0x041F4D40> IDirect3DSurface9::Release(),39112270774,,,
+Call,163,<0x041F4040> IDirect3DDevice9::SetIndices(0x041C85B8),39112405776,,,
+Call,164,"<0x041F4040> IDirect3DDevice9::SetStreamSource(0, 0x041C84E8, 0, 12)",39112461208,,,
+Call,165,<0x041F4040> IDirect3DDevice9::SetVertexDeclaration(0x041C8820),39112507971,,,
+Call,166,"<0x041C8298> ID3DXEffect::SetMatrix(0xFAC1DD7B, 0x0012EECC)",39112555123,,,
+Call,167,<0x041C8298> ID3DXEffect::GetTechnique(0),39112601068,,,
+Call,168,<0x041C8298> ID3DXEffect::SetTechnique(0xFAC1D0CB),39112644503,,,
+Call,169,"<0x041C8298> ID3DXEffect::Begin(0x0012EF60, 0x00000000)",39112688565,,,
+Call,170,<0x041CACF0> IDirect3DStateBlock9::Capture(),39112703112,,,
+Call,171,<0x041C9AB8> IDirect3DStateBlock9::Capture(),39112749709,,,
+Call,172,<0x041C94E8> IDirect3DStateBlock9::Capture(),39112794005,,,
+Call,173,<0x041CA088> IDirect3DStateBlock9::Capture(),39112837254,,,
+Call,174,<0x041C8948> IDirect3DStateBlock9::Capture(),39112880402,,,
+Call,175,<0x041C8298> ID3DXEffect::BeginPass(0),39112955206,,,
+Call,176,<0x041F4040> IDirect3DDevice9::SetVertexShader(0x041C81E0),39112970822,,,
+Call,177,"<0x041F4040> IDirect3DDevice9::SetVertexShaderConstantF(0, 0x053E22E0, 4)",39113026769,,,
+Call,178,<0x041F4040> IDirect3DDevice9::SetPixelShader(0x041C8128),39113072436,,,
+Call,179,"<0x041F4040> IDirect3DDevice9::DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 8, 0, 12)",39113148480,,,
+Call,180,<0x041C8298> ID3DXEffect::EndPass(),39113196757,,,
+Call,181,<0x041C8298> ID3DXEffect::End(),39113239885,,,
+Call,182,<0x041C8948> IDirect3DStateBlock9::Apply(),39113252804,,,
+Call,183,<0x041CA088> IDirect3DStateBlock9::Apply(),39113297209,,,
+Call,184,<0x041C94E8> IDirect3DStateBlock9::Apply(),39113370402,,,
+Call,185,<0x041C9AB8> IDirect3DStateBlock9::Apply(),39113423302,,,
+Call,186,<0x041CACF0> IDirect3DStateBlock9::Apply(),39113468437,,,
+Call,187,<0x041F4040> IDirect3DDevice9::EndScene(),39113556772,,,
+Call,188,<0x041F4D40> IDirect3DSurface9::Release(),39113600702,,,
+Call,189,<0x041C7D68> IDirect3DSurface9::Release(),39113644717,,,
+Call,190,"<0x041F4040> IDirect3DDevice9::Present(NULL, NULL, NULL, NULL)",39113702049,,,
+Frame,191,Frame 6,41316567158,6,2768584865,0.4
+Call,192,D3DPERF_GetStatus(),41316651078,,,
+User Marker,193,User Marker: Frame_Capture: 306 : tests\basic_system_test\import_test.cc,41816443226,,0,
+User Marker,194,User Marker: CaptureScreenContents,41816519169,,0,
+Call,195,D3DPERF_GetStatus(),41816586445,,,
+User Marker,196,User Marker: EndCommandStreamCapture,41816632693,,0,
+Call,197,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x003EBEC4 --> 0x041F4D40)",41816688500,,,
+Call,198,<0x041F4040> IDirect3DDevice9::GetDepthStencilSurface(0x003EBEC8 --> 0x041C7D68),41816735932,,,
+Call,199,<0x041F4040> IDirect3DDevice9::BeginScene(),41816779852,,,
+Call,200,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F558 --> 0x041F4D40)",41816826552,,,
+Call,201,<0x041F4D40> IDirect3DSurface9::GetDesc(0x0012F530),41816870777,,,
+Call,202,<0x041F4D40> IDirect3DSurface9::Release(),41816915274,,,
+Call,203,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F558 --> 0x041F4D40)",41816960532,,,
+Call,204,<0x041F4D40> IDirect3DSurface9::GetDesc(0x0012F530),41817004137,,,
+Call,205,<0x041F4D40> IDirect3DSurface9::Release(),41817047360,,,
+Call,206,<0x041F4040> IDirect3DDevice9::SetViewport(0x0012F538),41817092544,,,
+Call,207,"<0x041F4040> IDirect3DDevice9::GetRenderTarget(0x00000000, 0x0012F864 --> 0x041F4D40)",41817159118,,,
+Call,208,<0x041F4040> IDirect3DDevice9::GetDepthStencilSurface(0x0012F858 --> 0x041C7D68),41817203298,,,
+Call,209,"<0x041F4040> IDirect3DDevice9::Clear(0x00000000, NULL, 0x00000007, D3DCOLOR_ARGB(0xff,0x7f,0x7f,0x7f), 1.000f, 0x00000000)",41817247511,,,
+Call,210,<0x041C7D68> IDirect3DSurface9::Release(),41817293471,,,
+Call,211,<0x041F4D40> IDirect3DSurface9::Release(),41817336286,,,
+Call,212,<0x041F4040> IDirect3DDevice9::SetIndices(0x041C85B8),41817458434,,,
+Call,213,"<0x041F4040> IDirect3DDevice9::SetStreamSource(0, 0x041C84E8, 0, 12)",41817509654,,,
+Call,214,<0x041F4040> IDirect3DDevice9::SetVertexDeclaration(0x041C8820),41817556511,,,
+Call,215,"<0x041C8298> ID3DXEffect::SetMatrix(0xFAC1DD7B, 0x0012F068)",41817604223,,,
+Call,216,<0x041C8298> ID3DXEffect::GetTechnique(0),41817649908,,,
+Call,217,<0x041C8298> ID3DXEffect::SetTechnique(0xFAC1D0CB),41817693486,,,
+Call,218,"<0x041C8298> ID3DXEffect::Begin(0x0012F0FC, 0x00000000)",41817737806,,,
+Call,219,<0x041CACF0> IDirect3DStateBlock9::Capture(),41817752540,,,
+Call,220,<0x041C9AB8> IDirect3DStateBlock9::Capture(),41817799022,,,
+Call,221,<0x041C94E8> IDirect3DStateBlock9::Capture(),41817843227,,,
+Call,222,<0x041CA088> IDirect3DStateBlock9::Capture(),41817886413,,,
+Call,223,<0x041C8948> IDirect3DStateBlock9::Capture(),41817929598,,,
+Call,224,<0x041C8298> ID3DXEffect::BeginPass(0),41818003948,,,
+Call,225,<0x041F4040> IDirect3DDevice9::SetVertexShader(0x041C81E0),41818019610,,,
+Call,226,"<0x041F4040> IDirect3DDevice9::SetVertexShaderConstantF(0, 0x053E22E0, 4)",41818065208,,,
+Call,227,<0x041F4040> IDirect3DDevice9::SetPixelShader(0x041C8128),41818110687,,,
+Call,228,"<0x041F4040> IDirect3DDevice9::DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 8, 0, 12)",41818186683,,,
+Call,229,<0x041C8298> ID3DXEffect::EndPass(),41818234970,,,
+Call,230,<0x041C8298> ID3DXEffect::End(),41818278298,,,
+Call,231,<0x041C8948> IDirect3DStateBlock9::Apply(),41818291347,,,
+Call,232,<0x041CA088> IDirect3DStateBlock9::Apply(),41818378780,,,
+Call,233,<0x041C94E8> IDirect3DStateBlock9::Apply(),41818435942,,,
+Call,234,<0x041C9AB8> IDirect3DStateBlock9::Apply(),41818479202,,,
+Call,235,<0x041CACF0> IDirect3DStateBlock9::Apply(),41818523972,,,
+Call,236,<0x041F4040> IDirect3DDevice9::EndScene(),41818612302,,,
+Call,237,<0x041F4D40> IDirect3DSurface9::Release(),41818656510,,,
+Call,238,<0x041C7D68> IDirect3DSurface9::Release(),41818700222,,,
+Call,239,"<0x041F4040> IDirect3DDevice9::Present(NULL, NULL, NULL, NULL)",41818754391,,,
+Process End,240,End Process,44103702736,,0,
+Session End,241,End Session,44103702736,,0,