Lines Matching full:clear
21 * \brief Depth and stencil clear tests.
66 struct Clear struct
68 Clear(void) in Clear() argument
139 void generateClears(vector<Clear> &dst, uint32_t seed);
140 void renderGL(tcu::Surface &dst, const vector<Clear> &clears);
141 void renderReference(tcu::Surface &dst, const vector<Clear> &clears);
217 vector<Clear> clears; in iterate()
237 void DepthStencilClearCase::generateClears(vector<Clear> &clears, uint32_t seed) in generateClears()
246 for (vector<Clear>::iterator clear = clears.begin(); clear != clears.end(); clear++) in generateClears() local
255 clear->useScissor = true; // \todo [pyry] Should we randomize? in generateClears()
256 clear->scissor = tcu::IVec4(x, y, w, h); in generateClears()
259 clear->useScissor = false; in generateClears()
261 clear->clearDepth = rnd.getFloat(-0.2f, 1.2f); in generateClears()
262 clear->clearStencil = rnd.getUint32(); in generateClears()
264 clear->depthMask = m_masked ? rnd.getBool() : true; in generateClears()
265 clear->stencilMask = m_masked ? rnd.getUint32() : 0xffffffffu; in generateClears()
272 clear->clearMask = GL_DEPTH_BUFFER_BIT; in generateClears()
275 clear->clearMask = GL_STENCIL_BUFFER_BIT; in generateClears()
278 clear->clearMask = GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT; in generateClears()
283 clear->clearMask = GL_DEPTH_BUFFER_BIT; in generateClears()
287 clear->clearMask = GL_STENCIL_BUFFER_BIT; in generateClears()
292 void DepthStencilClearCase::renderGL(tcu::Surface &dst, const vector<Clear> &clears) in renderGL()
299 // Clear with default values. in renderGL()
303 gl.clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); in renderGL()
307 for (vector<Clear>::const_iterator clear = clears.begin(); clear != clears.end(); clear++) in renderGL() local
309 if (clear->useScissor) in renderGL()
312 … gl.scissor(clear->scissor.x(), clear->scissor.y(), clear->scissor.z(), clear->scissor.w()); in renderGL()
315 // Clear values. in renderGL()
316 gl.clearDepthf(clear->clearDepth); in renderGL()
317 gl.clearStencil(clear->clearStencil); in renderGL()
320 gl.depthMask(clear->depthMask ? GL_TRUE : GL_FALSE); in renderGL()
321 gl.stencilMask(clear->stencilMask); in renderGL()
323 // Execute clear. in renderGL()
324 gl.clear(clear->clearMask); in renderGL()
326 if (clear->useScissor) in renderGL()
401 void DepthStencilClearCase::renderReference(tcu::Surface &dst, const vector<Clear> &clears) in renderReference()
406 // Clear surface to red. in renderReference()
407 tcu::clear(dst.getAccess(), tcu::RGBA::red().toVec()); in renderReference()
417 // Clear to default value. in renderReference()
422 … for (vector<Clear>::const_iterator clear = clears.begin(); clear != clears.end(); clear++) in renderReference() local
424 // Clear / mask test. in renderReference()
425 if ((clear->clearMask & GL_DEPTH_BUFFER_BIT) == 0 || !clear->depthMask) in renderReference()
429 … clear->useScissor ? clear->scissor : tcu::IVec4(0, 0, dst.getWidth(), dst.getHeight()); in renderReference()
436 rowAccess.setPixDepth(de::clamp(clear->clearDepth, 0.0f, 1.0f), x, 0); in renderReference()
464 // Clear to default value. in renderReference()
469 … for (vector<Clear>::const_iterator clear = clears.begin(); clear != clears.end(); clear++) in renderReference() local
471 // Clear / mask test. in renderReference()
472 if ((clear->clearMask & GL_STENCIL_BUFFER_BIT) == 0 || clear->stencilMask == 0) in renderReference()
476 … clear->useScissor ? clear->scissor : tcu::IVec4(0, 0, dst.getWidth(), dst.getHeight()); in renderReference()
486 … ((oldVal & ~clear->stencilMask) | (clear->clearStencil & clear->stencilMask)) & bufMask; in renderReference()
508 : TestCaseGroup(context, "depth_stencil_clear", "Depth and stencil clear tests") in DepthStencilClearTests()