1*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
2*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program OpenGL ES 2.0 Module
3*35238bceSAndroid Build Coastguard Worker * -------------------------------------------------
4*35238bceSAndroid Build Coastguard Worker *
5*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project
6*35238bceSAndroid Build Coastguard Worker *
7*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
8*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
9*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at
10*35238bceSAndroid Build Coastguard Worker *
11*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
12*35238bceSAndroid Build Coastguard Worker *
13*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
14*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
15*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
17*35238bceSAndroid Build Coastguard Worker * limitations under the License.
18*35238bceSAndroid Build Coastguard Worker *
19*35238bceSAndroid Build Coastguard Worker *//*!
20*35238bceSAndroid Build Coastguard Worker * \file
21*35238bceSAndroid Build Coastguard Worker * \brief Memory object stress test
22*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/
23*35238bceSAndroid Build Coastguard Worker
24*35238bceSAndroid Build Coastguard Worker #include "es2sMemoryTests.hpp"
25*35238bceSAndroid Build Coastguard Worker
26*35238bceSAndroid Build Coastguard Worker #include "glsMemoryStressCase.hpp"
27*35238bceSAndroid Build Coastguard Worker #include "deRandom.hpp"
28*35238bceSAndroid Build Coastguard Worker #include "tcuTestLog.hpp"
29*35238bceSAndroid Build Coastguard Worker
30*35238bceSAndroid Build Coastguard Worker #include <vector>
31*35238bceSAndroid Build Coastguard Worker #include <iostream>
32*35238bceSAndroid Build Coastguard Worker
33*35238bceSAndroid Build Coastguard Worker using std::vector;
34*35238bceSAndroid Build Coastguard Worker using tcu::TestLog;
35*35238bceSAndroid Build Coastguard Worker
36*35238bceSAndroid Build Coastguard Worker using namespace deqp::gls;
37*35238bceSAndroid Build Coastguard Worker
38*35238bceSAndroid Build Coastguard Worker namespace deqp
39*35238bceSAndroid Build Coastguard Worker {
40*35238bceSAndroid Build Coastguard Worker namespace gles2
41*35238bceSAndroid Build Coastguard Worker {
42*35238bceSAndroid Build Coastguard Worker namespace Stress
43*35238bceSAndroid Build Coastguard Worker {
44*35238bceSAndroid Build Coastguard Worker
MemoryTests(Context & testCtx)45*35238bceSAndroid Build Coastguard Worker MemoryTests::MemoryTests(Context &testCtx) : TestCaseGroup(testCtx, "memory", "Memory stress tests")
46*35238bceSAndroid Build Coastguard Worker {
47*35238bceSAndroid Build Coastguard Worker }
48*35238bceSAndroid Build Coastguard Worker
~MemoryTests(void)49*35238bceSAndroid Build Coastguard Worker MemoryTests::~MemoryTests(void)
50*35238bceSAndroid Build Coastguard Worker {
51*35238bceSAndroid Build Coastguard Worker }
52*35238bceSAndroid Build Coastguard Worker
init(void)53*35238bceSAndroid Build Coastguard Worker void MemoryTests::init(void)
54*35238bceSAndroid Build Coastguard Worker {
55*35238bceSAndroid Build Coastguard Worker const int MiB = 1024 * 1024;
56*35238bceSAndroid Build Coastguard Worker
57*35238bceSAndroid Build Coastguard Worker // Basic tests
58*35238bceSAndroid Build Coastguard Worker tcu::TestCaseGroup *basicGroup = new TestCaseGroup(m_context, "basic", "Basic allocation stress tests.");
59*35238bceSAndroid Build Coastguard Worker
60*35238bceSAndroid Build Coastguard Worker // Buffers
61*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
62*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 1 * MiB, 1 * MiB, false,
63*35238bceSAndroid Build Coastguard Worker false, false, false, "buffer_1mb_no_write_no_use", "1MiB buffer allocations, no data writes, no use"));
64*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
65*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 1 * MiB, 1 * MiB, true,
66*35238bceSAndroid Build Coastguard Worker false, false, false, "buffer_1mb_write_no_use", "1MiB buffer allocations, data writes, no use"));
67*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
68*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 1 * MiB, 1 * MiB, false,
69*35238bceSAndroid Build Coastguard Worker true, false, false, "buffer_1mb_no_write_use", "1MiB buffer allocations, no data writes, data used"));
70*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
71*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 1 * MiB, 1 * MiB, true,
72*35238bceSAndroid Build Coastguard Worker true, false, false, "buffer_1mb_write_use", "1MiB buffer allocations, data writes, data used"));
73*35238bceSAndroid Build Coastguard Worker
74*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
75*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 8 * MiB, 8 * MiB, false,
76*35238bceSAndroid Build Coastguard Worker false, false, false, "buffer_8mb_no_write_no_use", "8MiB buffer allocations, no data writes, no use"));
77*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
78*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 8 * MiB, 8 * MiB, true,
79*35238bceSAndroid Build Coastguard Worker false, false, false, "buffer_8mb_write_no_use", "8MiB buffer allocations, data writes, no use"));
80*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
81*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 8 * MiB, 8 * MiB, false,
82*35238bceSAndroid Build Coastguard Worker true, false, false, "buffer_8mb_no_write_use", "8MiB buffer allocations, no data writes, data used"));
83*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
84*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 8 * MiB, 8 * MiB, true,
85*35238bceSAndroid Build Coastguard Worker true, false, false, "buffer_8mb_write_use", "8MiB buffer allocations, data writes, data used"));
86*35238bceSAndroid Build Coastguard Worker
87*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
88*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 32 * MiB, 32 * MiB, false,
89*35238bceSAndroid Build Coastguard Worker false, false, false, "buffer_32mb_no_write_no_use", "32MiB buffer allocations, no data writes, no use"));
90*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
91*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 32 * MiB, 32 * MiB, true,
92*35238bceSAndroid Build Coastguard Worker false, false, false, "buffer_32mb_write_no_use", "32MiB buffer allocations, data writes, no use"));
93*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
94*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 32 * MiB, 32 * MiB, false,
95*35238bceSAndroid Build Coastguard Worker true, false, false, "buffer_32mb_no_write_use", "32MiB buffer allocations, no data writes, data used"));
96*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
97*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 32 * MiB, 32 * MiB, true,
98*35238bceSAndroid Build Coastguard Worker true, false, false, "buffer_32mb_write_use", "32MiB buffer allocations, data writes, data used"));
99*35238bceSAndroid Build Coastguard Worker
100*35238bceSAndroid Build Coastguard Worker // Textures
101*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
102*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE, 512, 512, 0, 0, false, false, false, false,
103*35238bceSAndroid Build Coastguard Worker "texture_512x512_rgba_no_write_no_use",
104*35238bceSAndroid Build Coastguard Worker "512x512 RGBA texture allocations, no data writes, no use"));
105*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
106*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 512, 512, 0, 0, true, false,
107*35238bceSAndroid Build Coastguard Worker false, false, "texture_512x512_rgba_write_no_use", "512x512 RGBA texture allocations, data writes, no use"));
108*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
109*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE, 512, 512, 0, 0, false, true, false, false,
110*35238bceSAndroid Build Coastguard Worker "texture_512x512_rgba_no_write_use",
111*35238bceSAndroid Build Coastguard Worker "512x512 RGBA texture allocations, no data writes, data used"));
112*35238bceSAndroid Build Coastguard Worker basicGroup->addChild(new MemoryStressCase(
113*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 512, 512, 0, 0, true, true,
114*35238bceSAndroid Build Coastguard Worker false, false, "texture_512x512_rgba_write_use", "512x512 RGBA texture allocations, data writes, data used"));
115*35238bceSAndroid Build Coastguard Worker
116*35238bceSAndroid Build Coastguard Worker // Random tests
117*35238bceSAndroid Build Coastguard Worker tcu::TestCaseGroup *randomGroup = new TestCaseGroup(m_context, "random", "Random allocation stress tests.");
118*35238bceSAndroid Build Coastguard Worker
119*35238bceSAndroid Build Coastguard Worker // Buffers
120*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
121*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 64, 1 * MiB, false, false,
122*35238bceSAndroid Build Coastguard Worker false, false, "buffer_small_no_write_no_use", "Random small buffer allocations, no data writes, no use"));
123*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
124*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 64, 1 * MiB, true, false,
125*35238bceSAndroid Build Coastguard Worker false, false, "buffer_small_write_no_use", "Random small allocations, data writes, no use"));
126*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
127*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 64, 1 * MiB, false, true,
128*35238bceSAndroid Build Coastguard Worker false, false, "buffer_small_no_write_use", "Random small allocations, no data writes, data used"));
129*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
130*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 64, 1 * MiB, true, true,
131*35238bceSAndroid Build Coastguard Worker false, false, "buffer_small_write_use", "Random small allocations, data writes, data used"));
132*35238bceSAndroid Build Coastguard Worker
133*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
134*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_BUFFER, 0, 0, 2 * MiB, 32 * MiB, false, false, false,
135*35238bceSAndroid Build Coastguard Worker false, "buffer_large_no_write_no_use",
136*35238bceSAndroid Build Coastguard Worker "Random large buffer allocations, no data writes, no use"));
137*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
138*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 2 * MiB, 32 * MiB, true,
139*35238bceSAndroid Build Coastguard Worker false, false, false, "buffer_large_write_no_use", "Random large buffer allocations, data writes, no use"));
140*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
141*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 2 * MiB, 32 * MiB, false,
142*35238bceSAndroid Build Coastguard Worker true, false, false, "buffer_large_no_write_use", "Random large buffer allocations, no data writes, data used"));
143*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
144*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 2 * MiB, 32 * MiB, true,
145*35238bceSAndroid Build Coastguard Worker true, false, false, "buffer_large_write_use", "Random large buffer allocations, data writes, data used"));
146*35238bceSAndroid Build Coastguard Worker
147*35238bceSAndroid Build Coastguard Worker // Textures
148*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
149*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 8, 256, 0, 0, false, false,
150*35238bceSAndroid Build Coastguard Worker false, false, "texture_small_rgba_no_write_no_use", "Small RGBA texture allocations, no data writes, no use"));
151*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
152*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 8, 256, 0, 0, true, false,
153*35238bceSAndroid Build Coastguard Worker false, false, "texture_small_rgba_write_no_use", "Small RGBA texture allocations, data writes, no use"));
154*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
155*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 8, 256, 0, 0, false, true,
156*35238bceSAndroid Build Coastguard Worker false, false, "texture_small_rgba_no_write_use", "Small RGBA texture allocations, no data writes, data used"));
157*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
158*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 8, 256, 0, 0, true, true,
159*35238bceSAndroid Build Coastguard Worker false, false, "texture_small_rgba_write_use", "Small RGBA texture allocations, data writes, data used"));
160*35238bceSAndroid Build Coastguard Worker
161*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
162*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 512, 1024, 0, 0, false, false,
163*35238bceSAndroid Build Coastguard Worker false, false, "texture_large_rgba_no_write_no_use", "Large RGBA texture allocations, no data writes, no use"));
164*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
165*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 512, 1024, 0, 0, true, false,
166*35238bceSAndroid Build Coastguard Worker false, false, "texture_large_rgba_write_no_use", "Large RGBA texture allocations, data writes, no use"));
167*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
168*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 512, 1024, 0, 0, false, true,
169*35238bceSAndroid Build Coastguard Worker false, false, "texture_large_rgba_no_write_use", "Large RGBA texture allocations, no data writes, data used"));
170*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(
171*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 512, 1024, 0, 0, true, true,
172*35238bceSAndroid Build Coastguard Worker false, false, "texture_large_rgba_write_use", "Large RGBA texture allocations, data writes, data used"));
173*35238bceSAndroid Build Coastguard Worker
174*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
175*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 8, 256, 64, 1 * MiB, false,
176*35238bceSAndroid Build Coastguard Worker false, false, false, "mixed_small_rgba_no_write_no_use",
177*35238bceSAndroid Build Coastguard Worker "Small RGBA mixed allocations, no data writes, no use"));
178*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
179*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 8, 256, 64, 1 * MiB, true,
180*35238bceSAndroid Build Coastguard Worker false, false, false, "mixed_small_rgba_write_no_use",
181*35238bceSAndroid Build Coastguard Worker "Small RGBA mixed allocations, data writes, no use"));
182*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
183*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 8, 256, 64, 1 * MiB, false,
184*35238bceSAndroid Build Coastguard Worker true, false, false, "mixed_small_rgba_no_write_use",
185*35238bceSAndroid Build Coastguard Worker "Small RGBA mixed allocations, no data writes, data used"));
186*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
187*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 8, 256, 64, 1 * MiB, true,
188*35238bceSAndroid Build Coastguard Worker true, false, false, "mixed_small_rgba_write_use",
189*35238bceSAndroid Build Coastguard Worker "Small RGBA mixed allocations, data writes, data used"));
190*35238bceSAndroid Build Coastguard Worker
191*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
192*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 512, 1024, 2 * MiB,
193*35238bceSAndroid Build Coastguard Worker 32 * MiB, false, false, false, false, "mixed_large_rgba_no_write_no_use",
194*35238bceSAndroid Build Coastguard Worker "Large RGBA mixed allocations, no data writes, no use"));
195*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
196*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 512, 1024, 2 * MiB,
197*35238bceSAndroid Build Coastguard Worker 32 * MiB, true, false, false, false, "mixed_large_rgba_write_no_use",
198*35238bceSAndroid Build Coastguard Worker "Large RGBA mixed allocations, data writes, no use"));
199*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
200*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 512, 1024, 2 * MiB,
201*35238bceSAndroid Build Coastguard Worker 32 * MiB, false, true, false, false, "mixed_large_rgba_no_write_use",
202*35238bceSAndroid Build Coastguard Worker "Large RGBA mixed allocations, no data writes, data used"));
203*35238bceSAndroid Build Coastguard Worker randomGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
204*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 512, 1024, 2 * MiB,
205*35238bceSAndroid Build Coastguard Worker 32 * MiB, true, true, false, false, "mixed_large_rgba_write_use",
206*35238bceSAndroid Build Coastguard Worker "Large RGBA mixed allocations, data writes, data used"));
207*35238bceSAndroid Build Coastguard Worker
208*35238bceSAndroid Build Coastguard Worker addChild(basicGroup);
209*35238bceSAndroid Build Coastguard Worker addChild(randomGroup);
210*35238bceSAndroid Build Coastguard Worker
211*35238bceSAndroid Build Coastguard Worker // Basic tests with clear
212*35238bceSAndroid Build Coastguard Worker tcu::TestCaseGroup *basicClearGroup =
213*35238bceSAndroid Build Coastguard Worker new TestCaseGroup(m_context, "basic_clear", "Basic allocation stress tests with glClear after OOM.");
214*35238bceSAndroid Build Coastguard Worker
215*35238bceSAndroid Build Coastguard Worker // Buffers
216*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
217*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 1 * MiB, 1 * MiB, false,
218*35238bceSAndroid Build Coastguard Worker false, false, true, "buffer_1mb_no_write_no_use", "1MiB buffer allocations, no data writes, no use"));
219*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
220*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 1 * MiB, 1 * MiB, true,
221*35238bceSAndroid Build Coastguard Worker false, false, true, "buffer_1mb_write_no_use", "1MiB buffer allocations, data writes, no use"));
222*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
223*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 1 * MiB, 1 * MiB, false,
224*35238bceSAndroid Build Coastguard Worker true, false, true, "buffer_1mb_no_write_use", "1MiB buffer allocations, no data writes, data used"));
225*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
226*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 1 * MiB, 1 * MiB, true,
227*35238bceSAndroid Build Coastguard Worker true, false, true, "buffer_1mb_write_use", "1MiB buffer allocations, data writes, data used"));
228*35238bceSAndroid Build Coastguard Worker
229*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
230*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 8 * MiB, 8 * MiB, false,
231*35238bceSAndroid Build Coastguard Worker false, false, true, "buffer_8mb_no_write_no_use", "8MiB buffer allocations, no data writes, no use"));
232*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
233*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 8 * MiB, 8 * MiB, true,
234*35238bceSAndroid Build Coastguard Worker false, false, true, "buffer_8mb_write_no_use", "8MiB buffer allocations, data writes, no use"));
235*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
236*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 8 * MiB, 8 * MiB, false,
237*35238bceSAndroid Build Coastguard Worker true, false, true, "buffer_8mb_no_write_use", "8MiB buffer allocations, no data writes, data used"));
238*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
239*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 8 * MiB, 8 * MiB, true,
240*35238bceSAndroid Build Coastguard Worker true, false, true, "buffer_8mb_write_use", "8MiB buffer allocations, data writes, data used"));
241*35238bceSAndroid Build Coastguard Worker
242*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
243*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 32 * MiB, 32 * MiB, false,
244*35238bceSAndroid Build Coastguard Worker false, false, true, "buffer_32mb_no_write_no_use", "32MiB buffer allocations, no data writes, no use"));
245*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
246*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 32 * MiB, 32 * MiB, true,
247*35238bceSAndroid Build Coastguard Worker false, false, true, "buffer_32mb_write_no_use", "32MiB buffer allocations, data writes, no use"));
248*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
249*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 32 * MiB, 32 * MiB, false,
250*35238bceSAndroid Build Coastguard Worker true, false, true, "buffer_32mb_no_write_use", "32MiB buffer allocations, no data writes, data used"));
251*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
252*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 32 * MiB, 32 * MiB, true,
253*35238bceSAndroid Build Coastguard Worker true, false, true, "buffer_32mb_write_use", "32MiB buffer allocations, data writes, data used"));
254*35238bceSAndroid Build Coastguard Worker
255*35238bceSAndroid Build Coastguard Worker // Textures
256*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
257*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE, 512, 512, 0, 0, false, false, false, true,
258*35238bceSAndroid Build Coastguard Worker "texture_512x512_rgba_no_write_no_use",
259*35238bceSAndroid Build Coastguard Worker "512x512 RGBA texture allocations, no data writes, no use"));
260*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
261*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 512, 512, 0, 0, true, false,
262*35238bceSAndroid Build Coastguard Worker false, true, "texture_512x512_rgba_write_no_use", "512x512 RGBA texture allocations, data writes, no use"));
263*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
264*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE, 512, 512, 0, 0, false, true, false, true,
265*35238bceSAndroid Build Coastguard Worker "texture_512x512_rgba_no_write_use",
266*35238bceSAndroid Build Coastguard Worker "512x512 RGBA texture allocations, no data writes, data used"));
267*35238bceSAndroid Build Coastguard Worker basicClearGroup->addChild(new MemoryStressCase(
268*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 512, 512, 0, 0, true, true,
269*35238bceSAndroid Build Coastguard Worker false, true, "texture_512x512_rgba_write_use", "512x512 RGBA texture allocations, data writes, data used"));
270*35238bceSAndroid Build Coastguard Worker
271*35238bceSAndroid Build Coastguard Worker // Random tests
272*35238bceSAndroid Build Coastguard Worker tcu::TestCaseGroup *randomClearGroup =
273*35238bceSAndroid Build Coastguard Worker new TestCaseGroup(m_context, "random_clear", "Random allocation stress tests with glClear after OOM.");
274*35238bceSAndroid Build Coastguard Worker
275*35238bceSAndroid Build Coastguard Worker // Buffers
276*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
277*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 64, 1 * MiB, false, false,
278*35238bceSAndroid Build Coastguard Worker false, true, "buffer_small_no_write_no_use", "Random small buffer allocations, no data writes, no use"));
279*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
280*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 64, 1 * MiB, true, false,
281*35238bceSAndroid Build Coastguard Worker false, true, "buffer_small_write_no_use", "Random small allocations, data writes, no use"));
282*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
283*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 64, 1 * MiB, false, true,
284*35238bceSAndroid Build Coastguard Worker false, true, "buffer_small_no_write_use", "Random small allocations, no data writes, data used"));
285*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
286*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 64, 1 * MiB, true, true,
287*35238bceSAndroid Build Coastguard Worker false, true, "buffer_small_write_use", "Random small allocations, data writes, data used"));
288*35238bceSAndroid Build Coastguard Worker
289*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
290*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 2 * MiB, 32 * MiB, false,
291*35238bceSAndroid Build Coastguard Worker false, false, true, "buffer_large_no_write_no_use", "Random large buffer allocations, no data writes, no use"));
292*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
293*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 2 * MiB, 32 * MiB, true,
294*35238bceSAndroid Build Coastguard Worker false, false, true, "buffer_large_write_no_use", "Random large buffer allocations, data writes, no use"));
295*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
296*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 2 * MiB, 32 * MiB, false,
297*35238bceSAndroid Build Coastguard Worker true, false, true, "buffer_large_no_write_use", "Random large buffer allocations, no data writes, data used"));
298*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
299*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_BUFFER, 0, 0, 2 * MiB, 32 * MiB, true,
300*35238bceSAndroid Build Coastguard Worker true, false, true, "buffer_large_write_use", "Random large buffer allocations, data writes, data used"));
301*35238bceSAndroid Build Coastguard Worker
302*35238bceSAndroid Build Coastguard Worker // Textures
303*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
304*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 8, 256, 0, 0, false, false,
305*35238bceSAndroid Build Coastguard Worker false, true, "texture_small_rgba_no_write_no_use", "Small RGBA texture allocations, no data writes, no use"));
306*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
307*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 8, 256, 0, 0, true, false,
308*35238bceSAndroid Build Coastguard Worker false, true, "texture_small_rgba_write_no_use", "Small RGBA texture allocations, data writes, no use"));
309*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
310*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 8, 256, 0, 0, false, true,
311*35238bceSAndroid Build Coastguard Worker false, true, "texture_small_rgba_no_write_use", "Small RGBA texture allocations, no data writes, data used"));
312*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
313*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 8, 256, 0, 0, true, true,
314*35238bceSAndroid Build Coastguard Worker false, true, "texture_small_rgba_write_use", "Small RGBA texture allocations, data writes, data used"));
315*35238bceSAndroid Build Coastguard Worker
316*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
317*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 512, 1024, 0, 0, false, false,
318*35238bceSAndroid Build Coastguard Worker false, true, "texture_large_rgba_no_write_no_use", "Large RGBA texture allocations, no data writes, no use"));
319*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
320*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 512, 1024, 0, 0, true, false,
321*35238bceSAndroid Build Coastguard Worker false, true, "texture_large_rgba_write_no_use", "Large RGBA texture allocations, data writes, no use"));
322*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
323*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 512, 1024, 0, 0, false, true,
324*35238bceSAndroid Build Coastguard Worker false, true, "texture_large_rgba_no_write_use", "Large RGBA texture allocations, no data writes, data used"));
325*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
326*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE, 512, 1024, 0, 0, true, true,
327*35238bceSAndroid Build Coastguard Worker false, true, "texture_large_rgba_write_use", "Large RGBA texture allocations, data writes, data used"));
328*35238bceSAndroid Build Coastguard Worker
329*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
330*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 8, 256, 64, 1 * MiB,
331*35238bceSAndroid Build Coastguard Worker false, false, false, true, "mixed_small_rgba_no_write_no_use",
332*35238bceSAndroid Build Coastguard Worker "Small RGBA mixed allocations, no data writes, no use"));
333*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
334*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 8, 256, 64, 1 * MiB,
335*35238bceSAndroid Build Coastguard Worker true, false, false, true, "mixed_small_rgba_write_no_use",
336*35238bceSAndroid Build Coastguard Worker "Small RGBA mixed allocations, data writes, no use"));
337*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
338*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 8, 256, 64, 1 * MiB,
339*35238bceSAndroid Build Coastguard Worker false, true, false, true, "mixed_small_rgba_no_write_use",
340*35238bceSAndroid Build Coastguard Worker "Small RGBA mixed allocations, no data writes, data used"));
341*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
342*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 8, 256, 64, 1 * MiB,
343*35238bceSAndroid Build Coastguard Worker true, true, false, true, "mixed_small_rgba_write_use",
344*35238bceSAndroid Build Coastguard Worker "Small RGBA mixed allocations, data writes, data used"));
345*35238bceSAndroid Build Coastguard Worker
346*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(
347*35238bceSAndroid Build Coastguard Worker m_context.getTestContext(), m_context.getRenderContext(), MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 512,
348*35238bceSAndroid Build Coastguard Worker 1024, 2 * MiB, 32 * MiB, false, false, false, true, "mixed_large_rgba_no_write_no_use",
349*35238bceSAndroid Build Coastguard Worker "Large RGBA mixed allocations, no data writes, no use"));
350*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
351*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 512, 1024, 2 * MiB,
352*35238bceSAndroid Build Coastguard Worker 32 * MiB, true, false, false, true, "mixed_large_rgba_write_no_use",
353*35238bceSAndroid Build Coastguard Worker "Large RGBA mixed allocations, data writes, no use"));
354*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
355*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 512, 1024, 2 * MiB,
356*35238bceSAndroid Build Coastguard Worker 32 * MiB, false, true, false, true, "mixed_large_rgba_no_write_use",
357*35238bceSAndroid Build Coastguard Worker "Large RGBA mixed allocations, no data writes, data used"));
358*35238bceSAndroid Build Coastguard Worker randomClearGroup->addChild(new MemoryStressCase(m_context.getTestContext(), m_context.getRenderContext(),
359*35238bceSAndroid Build Coastguard Worker MEMOBJECTTYPE_TEXTURE | MEMOBJECTTYPE_BUFFER, 512, 1024, 2 * MiB,
360*35238bceSAndroid Build Coastguard Worker 32 * MiB, true, true, false, true, "mixed_large_rgba_write_use",
361*35238bceSAndroid Build Coastguard Worker "Large RGBA mixed allocations, data writes, data used"));
362*35238bceSAndroid Build Coastguard Worker
363*35238bceSAndroid Build Coastguard Worker addChild(basicClearGroup);
364*35238bceSAndroid Build Coastguard Worker addChild(randomClearGroup);
365*35238bceSAndroid Build Coastguard Worker }
366*35238bceSAndroid Build Coastguard Worker
367*35238bceSAndroid Build Coastguard Worker } // namespace Stress
368*35238bceSAndroid Build Coastguard Worker } // namespace gles2
369*35238bceSAndroid Build Coastguard Worker } // namespace deqp
370