application.Render();
// Test whether noBlend pipeline is set in cache
- uint32_t noBlendFoundCount = 0u;
- for(auto& iterLevel0 : gPipelineCache->level0nodes)
- {
- for(auto& iterLevel1 : iterLevel0.level1nodes)
- {
- if(!iterLevel1.noBlends.empty() && iterLevel1.noBlends.begin()->pipeline != nullptr)
- {
- noBlendFoundCount++;
- }
- }
- }
-
- DALI_TEST_EQUALS(gPipelineCache->level0nodes.size(), 3, TEST_LOCATION);
- DALI_TEST_EQUALS(noBlendFoundCount, 1u, TEST_LOCATION);
+ DALI_TEST_EQUALS((gPipelineCache->level0nodes.size() == 2), true, TEST_LOCATION);
+ DALI_TEST_CHECK(!gPipelineCache->level0nodes.front().level1nodes.front().noBlends.empty());
+ DALI_TEST_EQUALS(gPipelineCache->level0nodes.front().level1nodes.front().noBlends.front().pipeline != nullptr, true, TEST_LOCATION);
// Remove renderer to test whether old pipeline is removed
application.GetScene().Remove(actor1);
application.SendNotification();
application.Render();
- DALI_TEST_EQUALS(gPipelineCache->level0nodes.size(), 2, TEST_LOCATION);
+ DALI_TEST_EQUALS(gPipelineCache->level0nodes.size(), 1, TEST_LOCATION);
END_TEST;
}
}
} // namespace
-PipelineCacheL0Ptr PipelineCache::GetPipelineCacheL0(std::size_t hash, Program* program, Render::Geometry* geometry)
+PipelineCacheL0Ptr PipelineCache::GetPipelineCacheL0(Program* program, Render::Geometry* geometry)
{
- auto it = std::find_if(level0nodes.begin(), level0nodes.end(), [hash, program, geometry](PipelineCacheL0& item) { return ((item.hash == hash && item.program == program && item.geometry == geometry)); });
+ auto it = std::find_if(level0nodes.begin(), level0nodes.end(), [program, geometry](PipelineCacheL0& item) {
+ return ((item.program == program && item.geometry == geometry));
+ });
// Add new node to cache
if(it == level0nodes.end())
++bindingIndex;
}
PipelineCacheL0 level0;
- level0.hash = hash;
level0.program = program;
level0.geometry = geometry;
level0.inputState = vertexInputState;
return mLatestResult[latestUsedCacheIndex];
}
- auto level0 = GetPipelineCacheL0(queryInfo.hash, queryInfo.program, queryInfo.geometry);
+ auto level0 = GetPipelineCacheL0(queryInfo.program, queryInfo.geometry);
auto level1 = level0->GetPipelineCacheL1(queryInfo.renderer, queryInfo.cameraUsingReflection);
PipelineCachePtr level2 = level1->GetPipelineCacheL2(queryInfo.blendingEnabled, queryInfo.alphaPremultiplied, *queryInfo.blendingOptions);
*/
void ClearUnusedCache();
- std::size_t hash{};
Geometry* geometry{};
Program* program{};
Graphics::VertexInputState inputState;
/**
* Retrieves next cache level
*/
- PipelineCacheL0Ptr GetPipelineCacheL0(std::size_t hash, Program* program, Render::Geometry* geometry);
+ PipelineCacheL0Ptr GetPipelineCacheL0(Program* program, Render::Geometry* geometry);
/**
* Retrieves pipeline matching queryInfo struct