Skip to content

Commit 65b0ae3

Browse files
committed
apps/d3d1[01]: More comprehensive map tests.
1 parent f052689 commit 65b0ae3

13 files changed

+687
-108
lines changed

apps/d3d10/CMakeLists.txt

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,12 @@ set (api d3d10)
1212

1313
set (targets
1414
tri
15-
map_no_overwrite
15+
map_buffer
1616
)
1717

1818
foreach (target ${targets})
1919
add_executable (${api}_${target} ${target}.cpp)
2020
set_target_properties (${api}_${target} PROPERTIES OUTPUT_NAME ${target})
21-
22-
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${target}.ref.txt)
23-
add_app_test(
24-
NAME ${api}_${target}
25-
TARGET ${api}_${target}
26-
REF ${target}.ref.txt
27-
)
28-
endif ()
2921
endforeach (target)
3022

23+
add_app_tests ()

apps/d3d10/map_no_overwrite.cpp renamed to apps/d3d10/map_buffer.cpp

Lines changed: 63 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,19 @@ main(int argc, char *argv[])
4848
{
4949
HRESULT hr;
5050

51+
D3D10_USAGE Usage = D3D10_USAGE_DYNAMIC;
52+
for (int i = 1; i < argc; ++i) {
53+
const char *arg = argv[i];
54+
if (strcmp(arg, "-dynamic") == 0) {
55+
Usage = D3D10_USAGE_DYNAMIC;
56+
} else if (strcmp(arg, "-staging") == 0) {
57+
Usage = D3D10_USAGE_STAGING;
58+
} else {
59+
fprintf(stderr, "error: unknown arg %s\n", arg);
60+
exit(1);
61+
}
62+
}
63+
5164
com_ptr<IDXGIFactory> pFactory;
5265
hr = CreateDXGIFactory(IID_IDXGIFactory, (void**)&pFactory);
5366
if (FAILED(hr)) {
@@ -76,35 +89,71 @@ main(int argc, char *argv[])
7689
return 1;
7790
}
7891

92+
UINT NumBuffers = 4;
7993
UINT NumSegments = 8;
8094
UINT SegmentSize = 512;
8195

8296
D3D10_BUFFER_DESC BufferDesc;
8397
ZeroMemory(&BufferDesc, sizeof BufferDesc);
84-
BufferDesc.Usage = D3D10_USAGE_DYNAMIC;
8598
BufferDesc.ByteWidth = NumSegments * SegmentSize;
86-
BufferDesc.BindFlags = D3D10_BIND_VERTEX_BUFFER;
8799
BufferDesc.CPUAccessFlags = D3D10_CPU_ACCESS_WRITE;
88100
BufferDesc.MiscFlags = 0;
89-
90-
com_ptr<ID3D10Buffer> pVertexBuffer;
91-
hr = pDevice->CreateBuffer(&BufferDesc, NULL, &pVertexBuffer);
92-
if (FAILED(hr)) {
93-
return 1;
101+
BufferDesc.Usage = Usage;
102+
if (Usage == D3D10_USAGE_STAGING) {
103+
BufferDesc.BindFlags = 0;
104+
} else {
105+
BufferDesc.BindFlags = D3D10_BIND_VERTEX_BUFFER;
94106
}
95107

96-
for (UINT j = 0; j < NumSegments; ++j) {
97-
D3D10_MAP MapType = j == 0 ? D3D10_MAP_WRITE_DISCARD : D3D10_MAP_WRITE_NO_OVERWRITE;
98-
BYTE *pMap = NULL;
99-
hr = pVertexBuffer->Map(MapType, 0, (void **)&pMap);
108+
D3D10_MAP MapType = D3D10_MAP_WRITE;
109+
for (UINT i = 0; i < NumBuffers; ++i) {
110+
com_ptr<ID3D10Buffer> pVertexBuffer;
111+
hr = pDevice->CreateBuffer(&BufferDesc, NULL, &pVertexBuffer);
112+
if (FAILED(hr)) {
113+
return 1;
114+
}
115+
116+
if (Usage == D3D10_USAGE_DYNAMIC) {
117+
MapType = D3D10_MAP_WRITE_DISCARD;
118+
}
119+
120+
for (UINT j = 0; j < NumSegments; ++j) {
121+
BYTE *pMap = NULL;
122+
hr = pVertexBuffer->Map(MapType, 0, (void **)&pMap);
123+
if (FAILED(hr)) {
124+
return 1;
125+
}
126+
127+
int c = (j % 255) + 1;
128+
memset(pMap + j*SegmentSize, c, SegmentSize);
129+
130+
pVertexBuffer->Unmap();
131+
132+
if (Usage == D3D10_USAGE_DYNAMIC) {
133+
MapType = D3D10_MAP_WRITE_NO_OVERWRITE;
134+
}
135+
}
136+
137+
pDevice->Flush();
138+
139+
D3D10_QUERY_DESC QueryDesc;
140+
QueryDesc.Query = D3D10_QUERY_EVENT;
141+
QueryDesc.MiscFlags = 0;
142+
com_ptr<ID3D10Query> pQuery;
143+
hr = pDevice->CreateQuery(&QueryDesc, &pQuery);
100144
if (FAILED(hr)) {
101145
return 1;
102146
}
147+
148+
pQuery->End();
103149

104-
int c = (j % 255) + 1;
105-
memset(pMap + j*SegmentSize, c, SegmentSize);
150+
do {
151+
hr = pQuery->GetData(NULL, 0, 0);
152+
} while (hr == S_FALSE);
153+
if (FAILED(hr)) {
154+
return 1;
155+
}
106156

107-
pVertexBuffer->Unmap();
108157
}
109158

110159
return 0;
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
//!map_buffer -dynamic
2+
CreateDXGIFactory(riid = {Data1 = 2071029484, Data2 = 8647, Data3 = 17582, Data4 = {178, 26, 201, 174, 50, 26, 227, 105}}, ppFactory = &<pFactory>) = S_OK
3+
IDXGIFactory::EnumAdapters(this = <pFactory>, Adapter = 0, ppAdapter = &<pAdapter>) = S_OK
4+
D3D10CreateDevice(pAdapter = <pAdapter>, DriverType = D3D10_DRIVER_TYPE_HARDWARE, Software = NULL, Flags = <>, SDKVersion = 29, ppDevice = &<pDevice>) = S_OK
5+
6+
ID3D10Device::CreateBuffer(this = <pDevice>, pDesc = &{ByteWidth = 4096, Usage = D3D10_USAGE_DYNAMIC, BindFlags = D3D10_BIND_VERTEX_BUFFER, CPUAccessFlags = D3D10_CPU_ACCESS_WRITE, MiscFlags = 0x0}, pInitialData = NULL, ppBuffer = &<pVertexBuffer0>) = S_OK
7+
ID3D10Buffer::Map(this = <pVertexBuffer0>, MapType = D3D10_MAP_WRITE_DISCARD, MapFlags = 0x0, ppData = &<pMap0>) = S_OK
8+
memcpy(dest = <pMap0>, src = blob(4096), n = 4096)
9+
ID3D10Buffer::Unmap(this = <pVertexBuffer0>)
10+
ID3D10Buffer::Map(this = <pVertexBuffer0>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap0>) = S_OK
11+
memcpy(dest = <pMap0>, src = blob(4096), n = 4096)
12+
ID3D10Buffer::Unmap(this = <pVertexBuffer0>)
13+
ID3D10Buffer::Map(this = <pVertexBuffer0>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap0>) = S_OK
14+
memcpy(dest = <pMap0>, src = blob(4096), n = 4096)
15+
ID3D10Buffer::Unmap(this = <pVertexBuffer0>)
16+
ID3D10Buffer::Map(this = <pVertexBuffer0>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap0>) = S_OK
17+
memcpy(dest = <pMap0>, src = blob(4096), n = 4096)
18+
ID3D10Buffer::Unmap(this = <pVertexBuffer0>)
19+
ID3D10Buffer::Map(this = <pVertexBuffer0>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap0>) = S_OK
20+
memcpy(dest = <pMap0>, src = blob(4096), n = 4096)
21+
ID3D10Buffer::Unmap(this = <pVertexBuffer0>)
22+
ID3D10Buffer::Map(this = <pVertexBuffer0>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap0>) = S_OK
23+
memcpy(dest = <pMap0>, src = blob(4096), n = 4096)
24+
ID3D10Buffer::Unmap(this = <pVertexBuffer0>)
25+
ID3D10Buffer::Map(this = <pVertexBuffer0>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap0>) = S_OK
26+
memcpy(dest = <pMap0>, src = blob(4096), n = 4096)
27+
ID3D10Buffer::Unmap(this = <pVertexBuffer0>)
28+
ID3D10Buffer::Map(this = <pVertexBuffer0>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap0>) = S_OK
29+
memcpy(dest = <pMap0>, src = blob(4096), n = 4096)
30+
ID3D10Buffer::Unmap(this = <pVertexBuffer0>)
31+
ID3D10Device::Flush(this = <pDevice>)
32+
ID3D10Device::CreateQuery(this = <pDevice>, pQueryDesc = &{Query = D3D10_QUERY_EVENT, MiscFlags = 0x0}, ppQuery = &<pQuery0>) = S_OK
33+
ID3D10Query::End(this = <pQuery0>)
34+
ID3D10Query::GetData(this = <pQuery0>, pData = NULL, DataSize = 0, GetDataFlags = 0x0) = S_OK
35+
ID3D10Query::Release(this = <pQuery0>) = 0
36+
ID3D10Buffer::Release(this = <pVertexBuffer0>) = 0
37+
38+
ID3D10Device::CreateBuffer(this = <pDevice>, pDesc = &{ByteWidth = 4096, Usage = D3D10_USAGE_DYNAMIC, BindFlags = D3D10_BIND_VERTEX_BUFFER, CPUAccessFlags = D3D10_CPU_ACCESS_WRITE, MiscFlags = 0x0}, pInitialData = NULL, ppBuffer = &<pVertexBuffer1>) = S_OK
39+
ID3D10Buffer::Map(this = <pVertexBuffer1>, MapType = D3D10_MAP_WRITE_DISCARD, MapFlags = 0x0, ppData = &<pMap1>) = S_OK
40+
memcpy(dest = <pMap1>, src = blob(4096), n = 4096)
41+
ID3D10Buffer::Unmap(this = <pVertexBuffer1>)
42+
ID3D10Buffer::Map(this = <pVertexBuffer1>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap1>) = S_OK
43+
memcpy(dest = <pMap1>, src = blob(4096), n = 4096)
44+
ID3D10Buffer::Unmap(this = <pVertexBuffer1>)
45+
ID3D10Buffer::Map(this = <pVertexBuffer1>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap1>) = S_OK
46+
memcpy(dest = <pMap1>, src = blob(4096), n = 4096)
47+
ID3D10Buffer::Unmap(this = <pVertexBuffer1>)
48+
ID3D10Buffer::Map(this = <pVertexBuffer1>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap1>) = S_OK
49+
memcpy(dest = <pMap1>, src = blob(4096), n = 4096)
50+
ID3D10Buffer::Unmap(this = <pVertexBuffer1>)
51+
ID3D10Buffer::Map(this = <pVertexBuffer1>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap1>) = S_OK
52+
memcpy(dest = <pMap1>, src = blob(4096), n = 4096)
53+
ID3D10Buffer::Unmap(this = <pVertexBuffer1>)
54+
ID3D10Buffer::Map(this = <pVertexBuffer1>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap1>) = S_OK
55+
memcpy(dest = <pMap1>, src = blob(4096), n = 4096)
56+
ID3D10Buffer::Unmap(this = <pVertexBuffer1>)
57+
ID3D10Buffer::Map(this = <pVertexBuffer1>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap1>) = S_OK
58+
memcpy(dest = <pMap1>, src = blob(4096), n = 4096)
59+
ID3D10Buffer::Unmap(this = <pVertexBuffer1>)
60+
ID3D10Buffer::Map(this = <pVertexBuffer1>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap1>) = S_OK
61+
memcpy(dest = <pMap1>, src = blob(4096), n = 4096)
62+
ID3D10Buffer::Unmap(this = <pVertexBuffer1>)
63+
ID3D10Device::Flush(this = <pDevice>)
64+
ID3D10Device::CreateQuery(this = <pDevice>, pQueryDesc = &{Query = D3D10_QUERY_EVENT, MiscFlags = 0x0}, ppQuery = &<pQuery1>) = S_OK
65+
ID3D10Query::End(this = <pQuery1>)
66+
ID3D10Query::GetData(this = <pQuery1>, pData = NULL, DataSize = 0, GetDataFlags = 0x0) = S_OK
67+
ID3D10Query::Release(this = <pQuery1>) = 0
68+
ID3D10Buffer::Release(this = <pVertexBuffer1>) = 0
69+
70+
ID3D10Device::CreateBuffer(this = <pDevice>, pDesc = &{ByteWidth = 4096, Usage = D3D10_USAGE_DYNAMIC, BindFlags = D3D10_BIND_VERTEX_BUFFER, CPUAccessFlags = D3D10_CPU_ACCESS_WRITE, MiscFlags = 0x0}, pInitialData = NULL, ppBuffer = &<pVertexBuffer2>) = S_OK
71+
ID3D10Buffer::Map(this = <pVertexBuffer2>, MapType = D3D10_MAP_WRITE_DISCARD, MapFlags = 0x0, ppData = &<pMap2>) = S_OK
72+
memcpy(dest = <pMap2>, src = blob(4096), n = 4096)
73+
ID3D10Buffer::Unmap(this = <pVertexBuffer2>)
74+
ID3D10Buffer::Map(this = <pVertexBuffer2>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap2>) = S_OK
75+
memcpy(dest = <pMap2>, src = blob(4096), n = 4096)
76+
ID3D10Buffer::Unmap(this = <pVertexBuffer2>)
77+
ID3D10Buffer::Map(this = <pVertexBuffer2>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap2>) = S_OK
78+
memcpy(dest = <pMap2>, src = blob(4096), n = 4096)
79+
ID3D10Buffer::Unmap(this = <pVertexBuffer2>)
80+
ID3D10Buffer::Map(this = <pVertexBuffer2>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap2>) = S_OK
81+
memcpy(dest = <pMap2>, src = blob(4096), n = 4096)
82+
ID3D10Buffer::Unmap(this = <pVertexBuffer2>)
83+
ID3D10Buffer::Map(this = <pVertexBuffer2>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap2>) = S_OK
84+
memcpy(dest = <pMap2>, src = blob(4096), n = 4096)
85+
ID3D10Buffer::Unmap(this = <pVertexBuffer2>)
86+
ID3D10Buffer::Map(this = <pVertexBuffer2>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap2>) = S_OK
87+
memcpy(dest = <pMap2>, src = blob(4096), n = 4096)
88+
ID3D10Buffer::Unmap(this = <pVertexBuffer2>)
89+
ID3D10Buffer::Map(this = <pVertexBuffer2>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap2>) = S_OK
90+
memcpy(dest = <pMap2>, src = blob(4096), n = 4096)
91+
ID3D10Buffer::Unmap(this = <pVertexBuffer2>)
92+
ID3D10Buffer::Map(this = <pVertexBuffer2>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap2>) = S_OK
93+
memcpy(dest = <pMap2>, src = blob(4096), n = 4096)
94+
ID3D10Buffer::Unmap(this = <pVertexBuffer2>)
95+
ID3D10Device::Flush(this = <pDevice>)
96+
ID3D10Device::CreateQuery(this = <pDevice>, pQueryDesc = &{Query = D3D10_QUERY_EVENT, MiscFlags = 0x0}, ppQuery = &<pQuery2>) = S_OK
97+
ID3D10Query::End(this = <pQuery2>)
98+
ID3D10Query::GetData(this = <pQuery2>, pData = NULL, DataSize = 0, GetDataFlags = 0x0) = S_OK
99+
ID3D10Query::Release(this = <pQuery2>) = 0
100+
ID3D10Buffer::Release(this = <pVertexBuffer2>) = 0
101+
102+
ID3D10Device::CreateBuffer(this = <pDevice>, pDesc = &{ByteWidth = 4096, Usage = D3D10_USAGE_DYNAMIC, BindFlags = D3D10_BIND_VERTEX_BUFFER, CPUAccessFlags = D3D10_CPU_ACCESS_WRITE, MiscFlags = 0x0}, pInitialData = NULL, ppBuffer = &<pVertexBuffer3>) = S_OK
103+
ID3D10Buffer::Map(this = <pVertexBuffer3>, MapType = D3D10_MAP_WRITE_DISCARD, MapFlags = 0x0, ppData = &<pMap3>) = S_OK
104+
memcpy(dest = <pMap3>, src = blob(4096), n = 4096)
105+
ID3D10Buffer::Unmap(this = <pVertexBuffer3>)
106+
ID3D10Buffer::Map(this = <pVertexBuffer3>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap3>) = S_OK
107+
memcpy(dest = <pMap3>, src = blob(4096), n = 4096)
108+
ID3D10Buffer::Unmap(this = <pVertexBuffer3>)
109+
ID3D10Buffer::Map(this = <pVertexBuffer3>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap3>) = S_OK
110+
memcpy(dest = <pMap3>, src = blob(4096), n = 4096)
111+
ID3D10Buffer::Unmap(this = <pVertexBuffer3>)
112+
ID3D10Buffer::Map(this = <pVertexBuffer3>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap3>) = S_OK
113+
memcpy(dest = <pMap3>, src = blob(4096), n = 4096)
114+
ID3D10Buffer::Unmap(this = <pVertexBuffer3>)
115+
ID3D10Buffer::Map(this = <pVertexBuffer3>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap3>) = S_OK
116+
memcpy(dest = <pMap3>, src = blob(4096), n = 4096)
117+
ID3D10Buffer::Unmap(this = <pVertexBuffer3>)
118+
ID3D10Buffer::Map(this = <pVertexBuffer3>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap3>) = S_OK
119+
memcpy(dest = <pMap3>, src = blob(4096), n = 4096)
120+
ID3D10Buffer::Unmap(this = <pVertexBuffer3>)
121+
ID3D10Buffer::Map(this = <pVertexBuffer3>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap3>) = S_OK
122+
memcpy(dest = <pMap3>, src = blob(4096), n = 4096)
123+
ID3D10Buffer::Unmap(this = <pVertexBuffer3>)
124+
ID3D10Buffer::Map(this = <pVertexBuffer3>, MapType = D3D10_MAP_WRITE_NO_OVERWRITE, MapFlags = 0x0, ppData = &<pMap3>) = S_OK
125+
memcpy(dest = <pMap3>, src = blob(4096), n = 4096)
126+
ID3D10Buffer::Unmap(this = <pVertexBuffer3>)
127+
ID3D10Device::Flush(this = <pDevice>)
128+
ID3D10Device::CreateQuery(this = <pDevice>, pQueryDesc = &{Query = D3D10_QUERY_EVENT, MiscFlags = 0x0}, ppQuery = &<pQuery3>) = S_OK
129+
ID3D10Query::End(this = <pQuery3>)
130+
ID3D10Query::GetData(this = <pQuery3>, pData = NULL, DataSize = 0, GetDataFlags = 0x0) = S_OK
131+
ID3D10Query::Release(this = <pQuery3>) = 0
132+
ID3D10Buffer::Release(this = <pVertexBuffer3>) = 0
133+
134+
ID3D10Device::Release(this = <pDevice>) = 0
135+
IDXGIAdapter::Release(this = <pAdapter>) = 0
136+
IDXGIFactory::Release(this = <pFactory>) = 0

0 commit comments

Comments
 (0)