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