Since most of cases will use valid gl objects.
So let we ensure the gl validation by DALI_LIKELY markers.
Change-Id: Ieb7e9b8734ab0ac353b8b33422b776dd88007972
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
{
MemoryRequirements requirements{};
- auto gl = GetGL();
- if(gl)
+ auto* gl = GetGL();
+ if(DALI_LIKELY(gl))
{
GLint align;
gl->GetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, &align);
void InitializeGlState()
{
auto* gl = GetGL();
- if(gl)
+ if(DALI_LIKELY(gl))
{
mGlStateCache.mClearColorSet = false;
mGlStateCache.mColorMask = true;
void FlushVertexAttributeLocations()
{
auto* gl = GetGL();
- if(gl)
+ if(DALI_LIKELY(gl))
{
for(unsigned int i = 0; i < MAX_ATTRIBUTE_CACHE_SIZE; ++i)
{
void SetVertexAttributeLocation(unsigned int location, bool state)
{
auto* gl = GetGL();
- if(gl)
+ if(DALI_LIKELY(gl))
{
if(location >= MAX_ATTRIBUTE_CACHE_SIZE)
{
{
GLES::Framebuffer* framebuffer = mImpl->mCurrentRenderTarget->GetFramebuffer();
auto* gl = mImpl->GetGL();
- if(framebuffer && gl)
+ if(DALI_LIKELY(gl) && framebuffer)
{
/* @todo Full dependency checking would need to store textures in Begin, and create
* fence objects here; but we're going to draw all fbos on shared context in serial,
{
GLES::Framebuffer* framebuffer = mImpl->mCurrentRenderTarget->GetFramebuffer();
auto* gl = mImpl->GetGL();
- if(framebuffer && gl)
+ if(DALI_LIKELY(gl) && framebuffer)
{
gl->Finish(); // To guarantee ReadPixels.
gl->ReadPixels(0, 0, framebuffer->GetCreateInfo().size.width, framebuffer->GetCreateInfo().size.height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
void Context::ColorMask(bool enabled)
{
auto* gl = mImpl->GetGL();
- if(gl && enabled != mImpl->mGlStateCache.mColorMask)
+ if(DALI_LIKELY(gl) && enabled != mImpl->mGlStateCache.mColorMask)
{
mImpl->mGlStateCache.mColorMask = enabled;
gl->ColorMask(enabled, enabled, enabled, enabled);
{
mask = mImpl->mGlStateCache.mFrameBufferStateCache.GetClearMask(mask, forceClear, mImpl->mGlStateCache.mScissorTestEnabled);
auto* gl = mImpl->GetGL();
- if(mask > 0 && gl)
+ if(DALI_LIKELY(gl) && mask > 0)
{
gl->Clear(mask);
}
void Context::InvalidateDepthStencilBuffers()
{
#ifndef DALI_PROFILE_TV
- if(auto* gl = mImpl->GetGL())
+ auto* gl = mImpl->GetGL();
+ if(DALI_LIKELY(gl))
{
GLenum attachments[] = {GL_DEPTH, GL_STENCIL};
gl->InvalidateFramebuffer(GL_FRAMEBUFFER, 2, attachments);
void Context::SetScissorTestEnabled(bool scissorEnabled)
{
auto* gl = mImpl->GetGL();
- if(gl && mImpl->mGlStateCache.mScissorTestEnabled != scissorEnabled)
+ if(DALI_LIKELY(gl) && mImpl->mGlStateCache.mScissorTestEnabled != scissorEnabled)
{
mImpl->mGlStateCache.mScissorTestEnabled = scissorEnabled;
void Context::SetStencilTestEnable(bool stencilEnable)
{
auto* gl = mImpl->GetGL();
- if(gl && stencilEnable != mImpl->mGlStateCache.mStencilBufferEnabled)
+ if(DALI_LIKELY(gl) && stencilEnable != mImpl->mGlStateCache.mStencilBufferEnabled)
{
mImpl->mGlStateCache.mStencilBufferEnabled = stencilEnable;
void Context::StencilMask(uint32_t writeMask)
{
auto* gl = mImpl->GetGL();
- if(gl && writeMask != mImpl->mGlStateCache.mStencilMask)
+ if(DALI_LIKELY(gl) && writeMask != mImpl->mGlStateCache.mStencilMask)
{
mImpl->mGlStateCache.mStencilMask = writeMask;
uint32_t compareMask)
{
auto* gl = mImpl->GetGL();
- if(gl &&
+ if(DALI_LIKELY(gl) &&
(compareOp != mImpl->mGlStateCache.mStencilFunc ||
reference != mImpl->mGlStateCache.mStencilFuncRef ||
compareMask != mImpl->mGlStateCache.mStencilFuncMask))
Graphics::StencilOp passOp)
{
auto* gl = mImpl->GetGL();
- if(gl &&
+ if(DALI_LIKELY(gl) &&
(failOp != mImpl->mGlStateCache.mStencilOpFail ||
depthFailOp != mImpl->mGlStateCache.mStencilOpDepthFail ||
passOp != mImpl->mGlStateCache.mStencilOpDepthPass))
void Context::SetDepthCompareOp(Graphics::CompareOp compareOp)
{
auto* gl = mImpl->GetGL();
- if(gl && compareOp != mImpl->mGlStateCache.mDepthFunction)
+ if(DALI_LIKELY(gl) && compareOp != mImpl->mGlStateCache.mDepthFunction)
{
mImpl->mGlStateCache.mDepthFunction = compareOp;
void Context::SetDepthTestEnable(bool depthTestEnable)
{
auto* gl = mImpl->GetGL();
- if(gl && depthTestEnable != mImpl->mGlStateCache.mDepthBufferEnabled)
+ if(DALI_LIKELY(gl) && depthTestEnable != mImpl->mGlStateCache.mDepthBufferEnabled)
{
mImpl->mGlStateCache.mDepthBufferEnabled = depthTestEnable;
void Context::SetDepthWriteEnable(bool depthWriteEnable)
{
auto* gl = mImpl->GetGL();
- if(gl && depthWriteEnable != mImpl->mGlStateCache.mDepthMaskEnabled)
+ if(DALI_LIKELY(gl) && depthWriteEnable != mImpl->mGlStateCache.mDepthMaskEnabled)
{
mImpl->mGlStateCache.mDepthMaskEnabled = depthWriteEnable;
void Context::ActiveTexture(uint32_t textureBindingIndex)
{
auto* gl = mImpl->GetGL();
- if(gl && mImpl->mGlStateCache.mActiveTextureUnit != textureBindingIndex)
+ if(DALI_LIKELY(gl) && mImpl->mGlStateCache.mActiveTextureUnit != textureBindingIndex)
{
mImpl->mGlStateCache.mActiveTextureUnit = textureBindingIndex;
{
uint32_t typeId = static_cast<uint32_t>(textureTypeId);
auto* gl = mImpl->GetGL();
- if(gl && mImpl->mGlStateCache.mBoundTextureId[mImpl->mGlStateCache.mActiveTextureUnit][typeId] != textureId)
+ if(DALI_LIKELY(gl) && mImpl->mGlStateCache.mBoundTextureId[mImpl->mGlStateCache.mActiveTextureUnit][typeId] != textureId)
{
mImpl->mGlStateCache.mBoundTextureId[mImpl->mGlStateCache.mActiveTextureUnit][typeId] = textureId;
void Context::GenerateMipmap(GLenum target)
{
- if(auto* gl = mImpl->GetGL())
+ auto* gl = mImpl->GetGL();
+ if(DALI_LIKELY(gl))
{
gl->GenerateMipmap(target);
}
bool Context::BindBuffer(GLenum target, uint32_t bufferId)
{
- if(auto* gl = mImpl->GetGL())
+ auto* gl = mImpl->GetGL();
+ if(DALI_LIKELY(gl))
{
switch(target)
{
// Remove cached VAO map
auto* gl = mImpl->GetGL();
- if(gl)
+ if(DALI_LIKELY(gl))
{
const auto* program = pipeline->GetCreateInfo().programState->program;
if(program)
return;
}
- auto context = mController.GetCurrentContext();
- auto gl = mController.GetGL();
- if(!gl || !context)
+ auto* context = mController.GetCurrentContext();
+ auto* gl = mController.GetGL();
+ if(DALI_UNLIKELY(!gl || !context))
{
return;
}
{
if(DALI_LIKELY(!EglGraphicsController::IsShuttingDown()))
{
- auto gl = mController.GetGL();
- if(gl)
+ auto* gl = mController.GetGL();
+ if(DALI_LIKELY(gl))
{
gl->DeleteBuffers(1, &mBufferId);
}
void Buffer::Bind(Graphics::BufferUsage bindingTarget) const
{
- auto context = mController.GetCurrentContext();
- auto gl = mController.GetGL();
- if(!gl || !context)
+ auto* context = mController.GetCurrentContext();
+ auto* gl = mController.GetGL();
+ if(DALI_UNLIKELY(!gl || !context))
{
return;
}
bool Framebuffer::InitializeResource()
{
- auto gl = mController.GetGL();
- if(gl && mSharedContext && !mInitialized)
+ auto* gl = mController.GetGL();
+ if(DALI_LIKELY(gl) && mSharedContext && !mInitialized)
{
DALI_ASSERT_DEBUG(mSharedContext == mController.GetCurrentContext() && "Framebuffer is create at another context!");
mInitialized = true;
{
if(DALI_LIKELY(!EglGraphicsController::IsShuttingDown()))
{
- auto gl = mController.GetGL();
- if(gl && mInitialized)
+ auto* gl = mController.GetGL();
+ if(DALI_LIKELY(gl) && mInitialized)
{
if(mDepthBufferId)
{
void Framebuffer::Bind() const
{
- auto gl = mController.GetGL();
- if(gl && mSharedContext)
+ auto* gl = mController.GetGL();
+ if(DALI_LIKELY(gl) && mSharedContext)
{
DALI_ASSERT_DEBUG(mSharedContext == mController.GetCurrentContext() && "Framebuffer is bound to another context!");
gl->BindFramebuffer(GL_FRAMEBUFFER, mFramebufferId);
void Framebuffer::AttachTexture(const Graphics::Texture* texture, uint32_t attachmentId, uint32_t layerId, uint32_t levelId)
{
- auto gl = mController.GetGL();
- if(gl)
+ auto* gl = mController.GetGL();
+ if(DALI_LIKELY(gl))
{
auto graphicsTexture = static_cast<const GLES::Texture*>(texture);
auto textarget = (graphicsTexture->GetCreateInfo().textureType == Graphics::TextureType::TEXTURE_2D) ? graphicsTexture->GetGlTarget() : GL_TEXTURE_CUBE_MAP_POSITIVE_X + layerId;
/*
- * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
return; // Early out if shutting down
}
- if(auto gl = GetController().GetGL())
+ auto* gl = GetController().GetGL();
+ if(DALI_LIKELY(gl))
{
gl->UseProgram(glProgram);
}
if(mImpl->glProgram)
{
- auto gl = mImpl->controller.GetGL();
- if(!gl)
+ auto* gl = mImpl->controller.GetGL();
+ if(DALI_LIKELY(gl))
{
- return false;
+ gl->DeleteProgram(mImpl->glProgram);
+ return true;
}
- gl->DeleteProgram(mImpl->glProgram);
- return true;
}
return false;
}
void ProgramImpl::Preprocess()
{
auto* gl = mImpl->controller.GetGL();
- bool advancedBlending = !gl ? false : gl->IsAdvancedBlendEquationSupported();
+ bool advancedBlending = DALI_LIKELY(gl) ? gl->IsAdvancedBlendEquationSupported() : false;
// For now only Vertex and Fragment shader stages supported
// and one per stage
std::string vertexString;
bool ProgramImpl::Create()
{
// Create and link new program
- auto gl = mImpl->controller.GetGL();
- if(!gl)
+ auto* gl = mImpl->controller.GetGL();
+ if(DALI_UNLIKELY(!gl))
{
// Do nothing during shutdown
return false;
}
auto* gl = GetController().GetGL();
- if(!gl)
+ if(DALI_UNLIKELY(!gl))
{
return; // Early out if no GL found
}
return false;
}
- auto gl = mImpl->controller.GetGL();
- if(!gl)
+ auto* gl = mImpl->controller.GetGL();
+ if(DALI_UNLIKELY(!gl))
{
DALI_LOG_ERROR("Can't Get GL \n");
return false;
GLint binaryLength{0u};
GLint binarySize{0u};
GLenum format;
- auto gl = mImpl->controller.GetGL();
- if(!gl)
+ auto* gl = mImpl->controller.GetGL();
+ if(DALI_UNLIKELY(!gl))
{
DALI_LOG_ERROR("Can't Get GL \n");
return;
/*
- * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
GLenum type;
char* name;
- auto gl = mController.GetGL();
- if(!gl)
+ auto* gl = mController.GetGL();
+ if(DALI_UNLIKELY(!gl))
{
// Do nothing during shutdown
return;
void Reflection::BuildUniformBlockReflection()
{
- auto gl = mController.GetGL();
- auto glProgram = mProgram.GetGlProgram();
- char* name;
- int numUniformBlocks = 0;
-
- if(!gl)
+ auto* gl = mController.GetGL();
+ if(DALI_UNLIKELY(!gl))
{
// Do nothing during shutdown
return;
}
+ auto glProgram = mProgram.GetGlProgram();
+ char* name;
+ int numUniformBlocks = 0;
+
DALI_LOG_INFO(gGraphicsReflectionLogFilter, Debug::General, "Build uniform block reflection for glProgram : %u\n", glProgram);
int maxUniformNameLength;
{
auto version = Graphics::ShaderLanguage::GLSL_3_2;
- auto gl = mController.GetGL();
- if(!gl)
+ auto* gl = mController.GetGL();
+ if(DALI_UNLIKELY(!gl))
{
// Do nothing during shutdown
return version;
bool Compile()
{
- auto gl = controller.GetGL();
+ auto* gl = controller.GetGL();
- if(!gl)
+ if(DALI_UNLIKELY(!gl))
{
return false;
}
void Destroy()
{
- auto gl = controller.GetGL();
+ auto* gl = controller.GetGL();
- if(gl && glShader)
+ if(DALI_LIKELY(gl) && glShader)
{
gl->DeleteShader(glShader);
glShader = 0;
bool Texture::InitializeNativeImage()
{
- auto context = mController.GetCurrentContext();
- auto gl = mController.GetGL();
+ auto* context = mController.GetCurrentContext();
+ auto* gl = mController.GetGL();
GLuint texture{0};
- if(!gl || !context)
+ if(DALI_UNLIKELY(!gl || !context))
{
// Do nothing during shutdown
return false;
bool Texture::InitializeTexture()
{
- auto context = mController.GetCurrentContext();
- auto gl = mController.GetGL();
- if(!gl || !context)
+ auto* context = mController.GetCurrentContext();
+ auto* gl = mController.GetGL();
+ if(DALI_UNLIKELY(!gl || !context))
{
// Do nothing during shutdown
return false;
{
if(DALI_LIKELY(!EglGraphicsController::IsShuttingDown()))
{
- auto gl = mController.GetGL();
- if(!gl)
+ auto* gl = mController.GetGL();
+ if(DALI_UNLIKELY(!gl))
{
return;
}
void Texture::Bind(const TextureBinding& binding) const
{
- auto context = mController.GetCurrentContext();
- auto gl = mController.GetGL();
- if(!gl || !context)
+ auto* context = mController.GetCurrentContext();
+ auto* gl = mController.GetGL();
+ if(DALI_UNLIKELY(!gl || !context))
{
// Do nothing during shutdown
return;
void Texture::SetSamplerParameter(uint32_t param, uint32_t& cacheValue, uint32_t value) const
{
- auto gl = mController.GetGL();
- if(gl && cacheValue != value)
+ auto* gl = mController.GetGL();
+ if(DALI_LIKELY(gl) && cacheValue != value)
{
gl->TexParameteri(mGlTarget, param, value);
cacheValue = value;
/*
- * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
{
if(DALI_LIKELY(!EglGraphicsController::IsShuttingDown()))
{
- auto gl = mController.GetGL();
- if(gl)
+ auto* gl = mController.GetGL();
+ if(DALI_LIKELY(gl))
{
gl->DeleteSync(mGlSyncObject);
}
bool SyncObject::InitializeResource()
{
// Initialized not from a resource queue, but from a command.
- auto gl = mController.GetGL();
- if(gl)
+ auto* gl = mController.GetGL();
+ if(DALI_LIKELY(gl))
{
mGlSyncObject = gl->FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
}
bool SyncObject::IsSynced()
{
- auto gl = mController.GetGL();
- if(gl && mGlSyncObject)
+ auto* gl = mController.GetGL();
+ if(DALI_LIKELY(gl) && mGlSyncObject)
{
GLenum result = gl->ClientWaitSync(mGlSyncObject, 0, 0ull);
return result == GL_ALREADY_SIGNALED || result == GL_CONDITION_SATISFIED;
/*
- * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
}
else
{
- auto gl = controller.GetGL();
- if(gl)
+ auto* gl = controller.GetGL();
+ if(DALI_LIKELY(gl))
{
glSyncObject = gl->FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
}
}
else
{
- auto gl = controller.GetGL();
- if(gl && glSyncObject != nullptr)
+ auto* gl = controller.GetGL();
+ if(DALI_LIKELY(gl) && glSyncObject != nullptr)
{
gl->DeleteSync(glSyncObject);
}
}
else
{
- auto gl = controller.GetGL();
- if(gl && glSyncObject)
+ auto* gl = controller.GetGL();
+ if(DALI_LIKELY(gl) && glSyncObject)
{
DALI_LOG_INFO(gLogSyncFilter, Debug::Verbose, "AgingSyncObject::IsSynced(); glClientWaitSync 0ms\n");
const GLuint64 TIMEOUT = 0; //0ms!
}
else
{
- auto gl = controller.GetGL();
- if(gl && glSyncObject)
+ auto* gl = controller.GetGL();
+ if(DALI_LIKELY(gl) && glSyncObject)
{
DALI_LOG_INFO(gLogSyncFilter, Debug::Verbose, "AgingSyncObject::ClientWait(); glClientWaitSync 1ms\n");
const GLuint64 TIMEOUT = 1000000; //1ms!
}
else
{
- auto gl = controller.GetGL();
- if(gl && glSyncObject)
+ auto* gl = controller.GetGL();
+ if(DALI_LIKELY(gl) && glSyncObject)
{
DALI_LOG_INFO(gLogSyncFilter, Debug::Verbose, "AgingSyncObject::Wait(); glWaitSync\n");
gl->WaitSync(glSyncObject, 0, 0ull);
/*
- * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
{
if(DALI_LIKELY(!EglGraphicsController::IsShuttingDown()))
{
- if(auto gl = mController.GetGL())
+ auto* gl = mController.GetGL();
+ if(DALI_LIKELY(gl))
{
// for buffer...
if(mMapObjectType == MapObjectType::BUFFER && mMappedPointer)
/*
- * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
{
if(DALI_LIKELY(!EglGraphicsController::IsShuttingDown()))
{
- if(auto gl = mController.GetGL())
+ auto* gl = mController.GetGL();
+ if(DALI_LIKELY(gl))
{
if(mMapObjectType == MapObjectType::BUFFER)
{
{
if(DALI_LIKELY(!EglGraphicsController::IsShuttingDown()))
{
- if(auto gl = mController.GetGL())
+ auto* gl = mController.GetGL();
+ if(DALI_LIKELY(gl))
{
if(mMapObjectType == MapObjectType::BUFFER && mMappedPointer)
{