X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftest-graphics-controller.cpp;h=51f0721432e4e1cd728b3a2769d944ab1139b006;hp=f970525e448142d938c4ff1b4f57f5de3ecf5a0c;hb=e3c6384a98d24c40ac6fd04f4bd091035cc9df6a;hpb=f1876c34a8f667f79182fa8a772ee889e27290c1 diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-controller.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-controller.cpp index f970525..51f0721 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-controller.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-controller.cpp @@ -180,7 +180,9 @@ public: : mCallStack(callStack), mBuffer(buffer), mMappedOffset(mappedOffset), - mMappedSize(mappedSize) + mMappedSize(mappedSize), + mLockedOffset(0u), + mLockedSize(0u) { } @@ -463,18 +465,18 @@ void TestGraphicsController::SubmitCommandBuffers(const Graphics::SubmitInfo& su if(!value.empty()) { // must be fixed - for (auto &binding : value[0]->bindTextures.textureBindings) + for(auto& binding : value[0]->data.bindTextures.textureBindings) { - if (binding.texture) + if(binding.texture) { auto texture = Uncast(binding.texture); texture->Bind(binding.binding); - if (binding.sampler) + if(binding.sampler) { auto sampler = Uncast(binding.sampler); - if (sampler) + if(sampler) { sampler->Apply(texture->GetTarget()); } @@ -487,10 +489,10 @@ void TestGraphicsController::SubmitCommandBuffers(const Graphics::SubmitInfo& su // IndexBuffer binding, auto bindIndexBufferCmds = commandBuffer->GetCommandsByType(0 | CommandType::BIND_INDEX_BUFFER); - if (!bindIndexBufferCmds.empty()) + if(!bindIndexBufferCmds.empty()) { - auto &indexBufferBinding = bindIndexBufferCmds[0]->bindIndexBuffer; - if (indexBufferBinding.buffer) + auto& indexBufferBinding = bindIndexBufferCmds[0]->data.bindIndexBuffer; + if(indexBufferBinding.buffer) { auto buffer = Uncast(indexBufferBinding.buffer); buffer->Bind(); @@ -499,22 +501,54 @@ void TestGraphicsController::SubmitCommandBuffers(const Graphics::SubmitInfo& su // VertexBuffer binding, auto bindVertexBufferCmds = commandBuffer->GetCommandsByType(0 | CommandType::BIND_VERTEX_BUFFERS); - if (!bindVertexBufferCmds.empty()) + if(!bindVertexBufferCmds.empty()) { - for (auto &binding : bindVertexBufferCmds[0]->bindVertexBuffers.vertexBufferBindings) + for(auto& binding : bindVertexBufferCmds[0]->data.bindVertexBuffers.vertexBufferBindings) { auto graphicsBuffer = binding.buffer; auto vertexBuffer = Uncast(graphicsBuffer); vertexBuffer->Bind(); } } + + bool scissorEnabled = false; + + auto scissorTestList = commandBuffer->GetCommandsByType(0 | CommandType::SET_SCISSOR_TEST); + if(!scissorTestList.empty()) + { + if(scissorTestList[0]->data.scissorTest.enable) + { + mGl.Enable(GL_SCISSOR_TEST); + scissorEnabled = true; + } + else + { + mGl.Disable(GL_SCISSOR_TEST); + } + } + + auto scissorList = commandBuffer->GetCommandsByType(0 | CommandType::SET_SCISSOR); + if(!scissorList.empty() && scissorEnabled) + { + auto& rect = scissorList[0]->data.scissor.region; + mGl.Scissor(rect.x, rect.y, rect.width, rect.height); + } + + auto viewportList = commandBuffer->GetCommandsByType(0 | CommandType::SET_VIEWPORT); + if(!viewportList.empty()) + { + mGl.Viewport(viewportList[0]->data.viewport.region.x, viewportList[0]->data.viewport.region.y, viewportList[0]->data.viewport.region.width, viewportList[0]->data.viewport.region.height); + } + + // ignore viewport enable + // Pipeline attribute setup - auto bindPipelineCmds = commandBuffer->GetCommandsByType(0 | CommandType::BIND_PIPELINE); - if (!bindPipelineCmds.empty()) + auto bindPipelineCmds = commandBuffer->GetCommandsByType(0 | CommandType::BIND_PIPELINE); + if(!bindPipelineCmds.empty()) { - auto pipeline = bindPipelineCmds[0]->bindPipeline.pipeline; - auto &vi = pipeline->vertexInputState; - for (auto &attribute : vi.attributes) + auto pipeline = bindPipelineCmds[0]->data.bindPipeline.pipeline; + auto& vi = pipeline->vertexInputState; + for(auto& attribute : vi.attributes) { mGl.EnableVertexAttribArray(attribute.location); uint32_t attributeOffset = attribute.offset; @@ -525,11 +559,12 @@ void TestGraphicsController::SubmitCommandBuffers(const Graphics::SubmitInfo& su GetGlType(attribute.format), GL_FALSE, // Not normalized stride, - reinterpret_cast(attributeOffset)); + reinterpret_cast(attributeOffset)); } + // Cull face setup - auto &rasterizationState = pipeline->rasterizationState; - if (rasterizationState.cullMode == Graphics::CullMode::NONE) + auto& rasterizationState = pipeline->rasterizationState; + if(rasterizationState.cullMode == Graphics::CullMode::NONE) { mGl.Disable(GL_CULL_FACE); } @@ -544,8 +579,8 @@ void TestGraphicsController::SubmitCommandBuffers(const Graphics::SubmitInfo& su // so it isn't present in the API (and won't have any tests!) // Blending setup - auto &colorBlendState = pipeline->colorBlendState; - if (colorBlendState.blendEnable) + auto& colorBlendState = pipeline->colorBlendState; + if(colorBlendState.blendEnable) { mGl.Enable(GL_BLEND); @@ -553,7 +588,7 @@ void TestGraphicsController::SubmitCommandBuffers(const Graphics::SubmitInfo& su GetBlendFactor(colorBlendState.dstColorBlendFactor), GetBlendFactor(colorBlendState.srcAlphaBlendFactor), GetBlendFactor(colorBlendState.dstAlphaBlendFactor)); - if (colorBlendState.colorBlendOp != colorBlendState.alphaBlendOp) + if(colorBlendState.colorBlendOp != colorBlendState.alphaBlendOp) { mGl.BlendEquationSeparate(GetBlendOp(colorBlendState.colorBlendOp), GetBlendOp(colorBlendState.alphaBlendOp)); } @@ -576,35 +611,35 @@ void TestGraphicsController::SubmitCommandBuffers(const Graphics::SubmitInfo& su // UniformBuffer binding (once we know pipeline) auto bindUniformBuffersCmds = commandBuffer->GetCommandsByType(0 | CommandType::BIND_UNIFORM_BUFFER); - if (!bindUniformBuffersCmds.empty()) + if(!bindUniformBuffersCmds.empty()) { - auto buffer = bindUniformBuffersCmds[0]->bindUniformBuffers.standaloneUniformsBufferBinding; + auto buffer = bindUniformBuffersCmds[0]->data.bindUniformBuffers.standaloneUniformsBufferBinding; // based on reflection, issue gl calls - buffer.buffer->BindAsUniformBuffer( static_cast(pipeline->programState.program) ); + buffer.buffer->BindAsUniformBuffer(static_cast(pipeline->programState.program)); } - auto drawCmds = commandBuffer->GetCommandsByType( 0 | - CommandType::DRAW | - CommandType::DRAW_INDEXED_INDIRECT | - CommandType::DRAW_INDEXED ); + auto drawCmds = commandBuffer->GetCommandsByType(0 | + CommandType::DRAW | + CommandType::DRAW_INDEXED_INDIRECT | + CommandType::DRAW_INDEXED); if(!drawCmds.empty()) { - if (drawCmds[0]->draw.type == DrawCallDescriptor::Type::DRAW_INDEXED ) + if(drawCmds[0]->data.draw.type == DrawCallDescriptor::Type::DRAW_INDEXED) { mGl.DrawElements(GetTopology(topology), - static_cast(drawCmds[0]->draw.drawIndexed.indexCount), + static_cast(drawCmds[0]->data.draw.drawIndexed.indexCount), GL_UNSIGNED_SHORT, - reinterpret_cast(drawCmds[0]->draw.drawIndexed.firstIndex)); + reinterpret_cast(drawCmds[0]->data.draw.drawIndexed.firstIndex)); } else { - mGl.DrawArrays(GetTopology(topology), 0, drawCmds[0]->draw.draw.vertexCount); + mGl.DrawArrays(GetTopology(topology), 0, drawCmds[0]->data.draw.draw.vertexCount); } } // attribute clear - for (auto &attribute : vi.attributes) + for(auto& attribute : vi.attributes) { mGl.DisableVertexAttribArray(attribute.location); } @@ -647,6 +682,16 @@ void TestGraphicsController::Resume() mCallStack.PushCall("Resume", ""); } +void TestGraphicsController::Shutdown() +{ + mCallStack.PushCall("Shutdown", ""); +} + +void TestGraphicsController::Destroy() +{ + mCallStack.PushCall("Destroy", ""); +} + void TestGraphicsController::UpdateTextures(const std::vector& updateInfoList, const std::vector& sourceList) { @@ -758,7 +803,7 @@ Graphics::UniquePtr TestGraphicsController::CreateProgram(con bool found = true; for(auto& shader : *(programCreateInfo.shaderState)) { - auto graphicsShader = Uncast(shader.shader); + auto graphicsShader = Uncast(shader.shader); std::vector source; source.resize(graphicsShader->mCreateInfo.sourceSize); memcpy(&source[0], graphicsShader->mCreateInfo.sourceData, graphicsShader->mCreateInfo.sourceSize); @@ -779,8 +824,8 @@ Graphics::UniquePtr TestGraphicsController::CreateProgram(con mProgramCache.back().programImpl = new TestGraphicsProgramImpl(mGl, programCreateInfo, mVertexFormats, mCustomUniforms); for(auto& shader : *(programCreateInfo.shaderState)) { - auto graphicsShader = Uncast(shader.shader); - mProgramCache.back().shaders[shader.pipelineStage].resize( graphicsShader->mCreateInfo.sourceSize ); + auto graphicsShader = Uncast(shader.shader); + mProgramCache.back().shaders[shader.pipelineStage].resize(graphicsShader->mCreateInfo.sourceSize); memcpy(&mProgramCache.back().shaders[shader.pipelineStage][0], graphicsShader->mCreateInfo.sourceData, graphicsShader->mCreateInfo.sourceSize); } return Graphics::MakeUnique(mProgramCache.back().programImpl);