diff --git a/shell/platform/tizen/tizen_renderer.cc b/shell/platform/tizen/tizen_renderer.cc index dc618b255b44a..bdf807550d74d 100644 --- a/shell/platform/tizen/tizen_renderer.cc +++ b/shell/platform/tizen/tizen_renderer.cc @@ -544,16 +544,6 @@ uint32_t TizenRenderer::OnGetFBO() { return 0; } -// There was a problem with gles support in a device that supports open gl -// es 3.1, so it is forcibly used with 2.1 -const unsigned char gles_str[14] = "OpenGL ES 2.1"; -const GLubyte* CustomGlGetString(GLenum name) { - if (name == GL_VERSION) { - return gles_str; - } - return glGetString(name); -} - #define GL_FUNC(FunctionName) \ else if (strcmp(name, #FunctionName) == 0) { \ return reinterpret_cast(FunctionName); \ @@ -572,17 +562,21 @@ void* TizenRenderer::OnProcResolver(const char* name) { GL_FUNC(glBindTexture) GL_FUNC(glBlendColor) GL_FUNC(glBlendEquation) + GL_FUNC(glBlendEquationSeparate) GL_FUNC(glBlendFunc) + GL_FUNC(glBlendFuncSeparate) GL_FUNC(glBufferData) GL_FUNC(glBufferSubData) GL_FUNC(glCheckFramebufferStatus) GL_FUNC(glClear) GL_FUNC(glClearColor) + GL_FUNC(glClearDepthf) GL_FUNC(glClearStencil) GL_FUNC(glColorMask) GL_FUNC(glCompileShader) GL_FUNC(glCompressedTexImage2D) GL_FUNC(glCompressedTexSubImage2D) + GL_FUNC(glCopyTexImage2D) GL_FUNC(glCopyTexSubImage2D) GL_FUNC(glCreateProgram) GL_FUNC(glCreateShader) @@ -593,7 +587,10 @@ void* TizenRenderer::OnProcResolver(const char* name) { GL_FUNC(glDeleteRenderbuffers) GL_FUNC(glDeleteShader) GL_FUNC(glDeleteTextures) + GL_FUNC(glDepthFunc) GL_FUNC(glDepthMask) + GL_FUNC(glDepthRangef) + GL_FUNC(glDetachShader) GL_FUNC(glDisable) GL_FUNC(glDisableVertexAttribArray) GL_FUNC(glDrawArrays) @@ -610,25 +607,50 @@ void* TizenRenderer::OnProcResolver(const char* name) { GL_FUNC(glGenFramebuffers) GL_FUNC(glGenRenderbuffers) GL_FUNC(glGenTextures) + GL_FUNC(glGetActiveAttrib) + GL_FUNC(glGetActiveUniform) + GL_FUNC(glGetAttachedShaders) + GL_FUNC(glGetAttribLocation) + GL_FUNC(glGetBooleanv) GL_FUNC(glGetBufferParameteriv) GL_FUNC(glGetError) + GL_FUNC(glGetFloatv) GL_FUNC(glGetFramebufferAttachmentParameteriv) GL_FUNC(glGetIntegerv) - GL_FUNC(glGetProgramInfoLog) GL_FUNC(glGetProgramiv) + GL_FUNC(glGetProgramInfoLog) GL_FUNC(glGetRenderbufferParameteriv) - GL_FUNC(glGetShaderInfoLog) GL_FUNC(glGetShaderiv) + GL_FUNC(glGetShaderInfoLog) GL_FUNC(glGetShaderPrecisionFormat) - // GL_FUNC(glGetString) + GL_FUNC(glGetShaderSource) + GL_FUNC(glGetString) + GL_FUNC(glGetTexParameterfv) + GL_FUNC(glGetTexParameteriv) + GL_FUNC(glGetUniformfv) + GL_FUNC(glGetUniformiv) GL_FUNC(glGetUniformLocation) + GL_FUNC(glGetVertexAttribfv) + GL_FUNC(glGetVertexAttribiv) + GL_FUNC(glGetVertexAttribPointerv) + GL_FUNC(glHint) + GL_FUNC(glIsBuffer) + GL_FUNC(glIsEnabled) + GL_FUNC(glIsFramebuffer) + GL_FUNC(glIsProgram) + GL_FUNC(glIsRenderbuffer) + GL_FUNC(glIsShader) GL_FUNC(glIsTexture) GL_FUNC(glLineWidth) GL_FUNC(glLinkProgram) GL_FUNC(glPixelStorei) + GL_FUNC(glPolygonOffset) GL_FUNC(glReadPixels) + GL_FUNC(glReleaseShaderCompiler) GL_FUNC(glRenderbufferStorage) + GL_FUNC(glSampleCoverage) GL_FUNC(glScissor) + GL_FUNC(glShaderBinary) GL_FUNC(glShaderSource) GL_FUNC(glStencilFunc) GL_FUNC(glStencilFuncSeparate) @@ -662,16 +684,315 @@ void* TizenRenderer::OnProcResolver(const char* name) { GL_FUNC(glUniformMatrix3fv) GL_FUNC(glUniformMatrix4fv) GL_FUNC(glUseProgram) + GL_FUNC(glValidateProgram) GL_FUNC(glVertexAttrib1f) + GL_FUNC(glVertexAttrib1fv) + GL_FUNC(glVertexAttrib2f) GL_FUNC(glVertexAttrib2fv) + GL_FUNC(glVertexAttrib3f) GL_FUNC(glVertexAttrib3fv) + GL_FUNC(glVertexAttrib4f) GL_FUNC(glVertexAttrib4fv) GL_FUNC(glVertexAttribPointer) GL_FUNC(glViewport) + GL_FUNC(glGetProgramBinaryOES) + GL_FUNC(glProgramBinaryOES) + GL_FUNC(glMapBufferOES) + GL_FUNC(glUnmapBufferOES) + GL_FUNC(glGetBufferPointervOES) + GL_FUNC(glTexImage3DOES) + GL_FUNC(glTexSubImage3DOES) + GL_FUNC(glCopyTexSubImage3DOES) + GL_FUNC(glCompressedTexImage3DOES) + GL_FUNC(glCompressedTexSubImage3DOES) + GL_FUNC(glFramebufferTexture3DOES) + GL_FUNC(glBindVertexArrayOES) + GL_FUNC(glDeleteVertexArraysOES) + GL_FUNC(glGenVertexArraysOES) + GL_FUNC(glIsVertexArrayOES) + GL_FUNC(glGetPerfMonitorGroupsAMD) + GL_FUNC(glGetPerfMonitorCountersAMD) + GL_FUNC(glGetPerfMonitorGroupStringAMD) + GL_FUNC(glGetPerfMonitorCounterStringAMD) + GL_FUNC(glGetPerfMonitorCounterInfoAMD) + GL_FUNC(glGenPerfMonitorsAMD) + GL_FUNC(glDeletePerfMonitorsAMD) + GL_FUNC(glSelectPerfMonitorCountersAMD) + GL_FUNC(glBeginPerfMonitorAMD) + GL_FUNC(glEndPerfMonitorAMD) + GL_FUNC(glGetPerfMonitorCounterDataAMD) + GL_FUNC(glCopyTextureLevelsAPPLE) + GL_FUNC(glRenderbufferStorageMultisampleAPPLE) + GL_FUNC(glResolveMultisampleFramebufferAPPLE) + GL_FUNC(glFenceSyncAPPLE) + GL_FUNC(glIsSyncAPPLE) + GL_FUNC(glDeleteSyncAPPLE) + GL_FUNC(glClientWaitSyncAPPLE) + GL_FUNC(glWaitSyncAPPLE) + GL_FUNC(glGetInteger64vAPPLE) + GL_FUNC(glGetSyncivAPPLE) + GL_FUNC(glDiscardFramebufferEXT) + GL_FUNC(glMapBufferRangeEXT) + GL_FUNC(glFlushMappedBufferRangeEXT) + GL_FUNC(glMultiDrawArraysEXT) + GL_FUNC(glMultiDrawElementsEXT) + GL_FUNC(glRenderbufferStorageMultisampleEXT) + GL_FUNC(glFramebufferTexture2DMultisampleEXT) + GL_FUNC(glGetGraphicsResetStatusEXT) + GL_FUNC(glReadnPixelsEXT) + GL_FUNC(glGetnUniformfvEXT) + GL_FUNC(glGetnUniformivEXT) + GL_FUNC(glTexStorage1DEXT) + GL_FUNC(glTexStorage2DEXT) + GL_FUNC(glTexStorage3DEXT) + GL_FUNC(glTextureStorage1DEXT) + GL_FUNC(glTextureStorage2DEXT) + GL_FUNC(glTextureStorage3DEXT) + GL_FUNC(glRenderbufferStorageMultisampleIMG) + GL_FUNC(glFramebufferTexture2DMultisampleIMG) + GL_FUNC(glDeleteFencesNV) + GL_FUNC(glGenFencesNV) + GL_FUNC(glIsFenceNV) + GL_FUNC(glTestFenceNV) + GL_FUNC(glGetFenceivNV) + GL_FUNC(glFinishFenceNV) + GL_FUNC(glSetFenceNV) + GL_FUNC(glGetDriverControlsQCOM) + GL_FUNC(glGetDriverControlStringQCOM) + GL_FUNC(glEnableDriverControlQCOM) + GL_FUNC(glDisableDriverControlQCOM) + GL_FUNC(glExtGetTexturesQCOM) + GL_FUNC(glExtGetBuffersQCOM) + GL_FUNC(glExtGetRenderbuffersQCOM) + GL_FUNC(glExtGetFramebuffersQCOM) + GL_FUNC(glExtGetTexLevelParameterivQCOM) + GL_FUNC(glExtTexObjectStateOverrideiQCOM) + GL_FUNC(glExtGetTexSubImageQCOM) + GL_FUNC(glExtGetBufferPointervQCOM) + GL_FUNC(glExtGetShadersQCOM) + GL_FUNC(glExtGetProgramsQCOM) + GL_FUNC(glExtIsProgramBinaryQCOM) + GL_FUNC(glExtGetProgramBinarySourceQCOM) + GL_FUNC(glStartTilingQCOM) + GL_FUNC(glEndTilingQCOM) + GL_FUNC(glEvasGLImageTargetTexture2DOES) + GL_FUNC(glEvasGLImageTargetRenderbufferStorageOES) + GL_FUNC(glBeginQuery) + GL_FUNC(glBeginTransformFeedback) + GL_FUNC(glBindBufferBase) + GL_FUNC(glBindBufferRange) + GL_FUNC(glBindSampler) + GL_FUNC(glBindTransformFeedback) + GL_FUNC(glBindVertexArray) + GL_FUNC(glBlitFramebuffer) + GL_FUNC(glClearBufferfi) + GL_FUNC(glClearBufferfv) + GL_FUNC(glClearBufferiv) + GL_FUNC(glClearBufferuiv) + GL_FUNC(glClientWaitSync) + GL_FUNC(glCompressedTexImage3D) + GL_FUNC(glCompressedTexSubImage3D) + GL_FUNC(glCopyBufferSubData) + GL_FUNC(glCopyTexSubImage3D) + GL_FUNC(glDeleteQueries) + GL_FUNC(glDeleteSamplers) + GL_FUNC(glDeleteSync) + GL_FUNC(glDeleteTransformFeedbacks) + GL_FUNC(glDeleteVertexArrays) + GL_FUNC(glDrawArraysInstanced) + GL_FUNC(glDrawBuffers) + GL_FUNC(glDrawElementsInstanced) + GL_FUNC(glDrawRangeElements) + GL_FUNC(glEndQuery) + GL_FUNC(glEndTransformFeedback) + GL_FUNC(glFenceSync) + GL_FUNC(glFlushMappedBufferRange) + GL_FUNC(glFramebufferTextureLayer) + GL_FUNC(glGenQueries) + GL_FUNC(glGenSamplers) + GL_FUNC(glGenTransformFeedbacks) + GL_FUNC(glGenVertexArrays) + GL_FUNC(glGetActiveUniformBlockiv) + GL_FUNC(glGetActiveUniformBlockName) + GL_FUNC(glGetActiveUniformsiv) + GL_FUNC(glGetBufferParameteri64v) + GL_FUNC(glGetBufferPointerv) + GL_FUNC(glGetFragDataLocation) + GL_FUNC(glGetInteger64i_v) + GL_FUNC(glGetInteger64v) + GL_FUNC(glGetIntegeri_v) + GL_FUNC(glGetInternalformativ) + GL_FUNC(glGetProgramBinary) + GL_FUNC(glGetQueryiv) + GL_FUNC(glGetQueryObjectuiv) + GL_FUNC(glGetSamplerParameterfv) + GL_FUNC(glGetSamplerParameteriv) GL_FUNC(glGetStringi) - else if (strcmp(name, "glGetString") == 0) { - return reinterpret_cast(CustomGlGetString); - } + GL_FUNC(glGetSynciv) + GL_FUNC(glGetTransformFeedbackVarying) + GL_FUNC(glGetUniformBlockIndex) + GL_FUNC(glGetUniformIndices) + GL_FUNC(glGetUniformuiv) + GL_FUNC(glGetVertexAttribIiv) + GL_FUNC(glGetVertexAttribIuiv) + GL_FUNC(glInvalidateFramebuffer) + GL_FUNC(glInvalidateSubFramebuffer) + GL_FUNC(glIsQuery) + GL_FUNC(glIsSampler) + GL_FUNC(glIsSync) + GL_FUNC(glIsTransformFeedback) + GL_FUNC(glIsVertexArray) + GL_FUNC(glMapBufferRange) + GL_FUNC(glPauseTransformFeedback) + GL_FUNC(glProgramBinary) + GL_FUNC(glProgramParameteri) + GL_FUNC(glReadBuffer) + GL_FUNC(glRenderbufferStorageMultisample) + GL_FUNC(glResumeTransformFeedback) + GL_FUNC(glSamplerParameterf) + GL_FUNC(glSamplerParameterfv) + GL_FUNC(glSamplerParameteri) + GL_FUNC(glSamplerParameteriv) + GL_FUNC(glTexImage3D) + GL_FUNC(glTexStorage2D) + GL_FUNC(glTexStorage3D) + GL_FUNC(glTexSubImage3D) + GL_FUNC(glTransformFeedbackVaryings) + GL_FUNC(glUniform1ui) + GL_FUNC(glUniform1uiv) + GL_FUNC(glUniform2ui) + GL_FUNC(glUniform2uiv) + GL_FUNC(glUniform3ui) + GL_FUNC(glUniform3uiv) + GL_FUNC(glUniform4ui) + GL_FUNC(glUniform4uiv) + GL_FUNC(glUniformBlockBinding) + GL_FUNC(glUniformMatrix2x3fv) + GL_FUNC(glUniformMatrix3x2fv) + GL_FUNC(glUniformMatrix2x4fv) + GL_FUNC(glUniformMatrix4x2fv) + GL_FUNC(glUniformMatrix3x4fv) + GL_FUNC(glUniformMatrix4x3fv) + GL_FUNC(glUnmapBuffer) + GL_FUNC(glVertexAttribDivisor) + GL_FUNC(glVertexAttribI4i) + GL_FUNC(glVertexAttribI4iv) + GL_FUNC(glVertexAttribI4ui) + GL_FUNC(glVertexAttribI4uiv) + GL_FUNC(glVertexAttribIPointer) + GL_FUNC(glWaitSync) + GL_FUNC(glDispatchCompute) + GL_FUNC(glDispatchComputeIndirect) + GL_FUNC(glDrawArraysIndirect) + GL_FUNC(glDrawElementsIndirect) + GL_FUNC(glFramebufferParameteri) + GL_FUNC(glGetFramebufferParameteriv) + GL_FUNC(glGetProgramInterfaceiv) + GL_FUNC(glGetProgramResourceIndex) + GL_FUNC(glGetProgramResourceName) + GL_FUNC(glGetProgramResourceiv) + GL_FUNC(glGetProgramResourceLocation) + GL_FUNC(glUseProgramStages) + GL_FUNC(glActiveShaderProgram) + GL_FUNC(glCreateShaderProgramv) + GL_FUNC(glBindProgramPipeline) + GL_FUNC(glDeleteProgramPipelines) + GL_FUNC(glGenProgramPipelines) + GL_FUNC(glIsProgramPipeline) + GL_FUNC(glGetProgramPipelineiv) + GL_FUNC(glProgramUniform1i) + GL_FUNC(glProgramUniform2i) + GL_FUNC(glProgramUniform3i) + GL_FUNC(glProgramUniform4i) + GL_FUNC(glProgramUniform1ui) + GL_FUNC(glProgramUniform2ui) + GL_FUNC(glProgramUniform3ui) + GL_FUNC(glProgramUniform4ui) + GL_FUNC(glProgramUniform1f) + GL_FUNC(glProgramUniform2f) + GL_FUNC(glProgramUniform3f) + GL_FUNC(glProgramUniform4f) + GL_FUNC(glProgramUniform1iv) + GL_FUNC(glProgramUniform2iv) + GL_FUNC(glProgramUniform3iv) + GL_FUNC(glProgramUniform4iv) + GL_FUNC(glProgramUniform1uiv) + GL_FUNC(glProgramUniform2uiv) + GL_FUNC(glProgramUniform3uiv) + GL_FUNC(glProgramUniform4uiv) + GL_FUNC(glProgramUniform1fv) + GL_FUNC(glProgramUniform2fv) + GL_FUNC(glProgramUniform3fv) + GL_FUNC(glProgramUniform4fv) + GL_FUNC(glProgramUniformMatrix2fv) + GL_FUNC(glProgramUniformMatrix3fv) + GL_FUNC(glProgramUniformMatrix4fv) + GL_FUNC(glProgramUniformMatrix2x3fv) + GL_FUNC(glProgramUniformMatrix3x2fv) + GL_FUNC(glProgramUniformMatrix2x4fv) + GL_FUNC(glProgramUniformMatrix4x2fv) + GL_FUNC(glProgramUniformMatrix3x4fv) + GL_FUNC(glProgramUniformMatrix4x3fv) + GL_FUNC(glValidateProgramPipeline) + GL_FUNC(glGetProgramPipelineInfoLog) + GL_FUNC(glBindImageTexture) + GL_FUNC(glGetBooleani_v) + GL_FUNC(glMemoryBarrier) + GL_FUNC(glMemoryBarrierByRegion) + GL_FUNC(glTexStorage2DMultisample) + GL_FUNC(glGetMultisamplefv) + GL_FUNC(glSampleMaski) + GL_FUNC(glGetTexLevelParameteriv) + GL_FUNC(glGetTexLevelParameterfv) + GL_FUNC(glBindVertexBuffer) + GL_FUNC(glVertexAttribFormat) + GL_FUNC(glVertexAttribIFormat) + GL_FUNC(glVertexAttribBinding) + GL_FUNC(glVertexBindingDivisor) + GL_FUNC(glBlendBarrier) + GL_FUNC(glCopyImageSubData) + GL_FUNC(glDebugMessageControl) + GL_FUNC(glDebugMessageInsert) + GL_FUNC(glDebugMessageCallback) + GL_FUNC(glGetDebugMessageLog) + GL_FUNC(glPushDebugGroup) + GL_FUNC(glPopDebugGroup) + GL_FUNC(glObjectLabel) + GL_FUNC(glGetObjectLabel) + GL_FUNC(glObjectPtrLabel) + GL_FUNC(glGetObjectPtrLabel) + GL_FUNC(glGetPointerv) + GL_FUNC(glEnablei) + GL_FUNC(glDisablei) + GL_FUNC(glBlendEquationi) + GL_FUNC(glBlendEquationSeparatei) + GL_FUNC(glBlendFunci) + GL_FUNC(glBlendFuncSeparatei) + GL_FUNC(glColorMaski) + GL_FUNC(glIsEnabledi) + GL_FUNC(glDrawElementsBaseVertex) + GL_FUNC(glDrawRangeElementsBaseVertex) + GL_FUNC(glDrawElementsInstancedBaseVertex) + GL_FUNC(glFramebufferTexture) + GL_FUNC(glPrimitiveBoundingBox) + GL_FUNC(glGetGraphicsResetStatus) + GL_FUNC(glReadnPixels) + GL_FUNC(glGetnUniformfv) + GL_FUNC(glGetnUniformiv) + GL_FUNC(glGetnUniformuiv) + GL_FUNC(glMinSampleShading) + GL_FUNC(glPatchParameteri) + GL_FUNC(glTexParameterIiv) + GL_FUNC(glTexParameterIuiv) + GL_FUNC(glGetTexParameterIiv) + GL_FUNC(glGetTexParameterIuiv) + GL_FUNC(glSamplerParameterIiv) + GL_FUNC(glSamplerParameterIuiv) + GL_FUNC(glGetSamplerParameterIiv) + GL_FUNC(glGetSamplerParameterIuiv) + GL_FUNC(glTexBuffer) + GL_FUNC(glTexBufferRange) + GL_FUNC(glTexStorage3DMultisample) FT_LOGD("Could not resolve: %s", name); return nullptr; } @@ -715,8 +1036,25 @@ bool TizenRenderer::SetupEvasGL(int32_t x, int32_t y, int32_t w, int32_t h) { // EVAS_GL_OPTIONS_DIRECT_MEMORY_OPTIMIZE | // EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION); - gl_context_ = evas_gl_context_create(evas_gl_, NULL); - gl_resource_context_ = evas_gl_context_create(evas_gl_, gl_context_); + gl_context_ = + evas_gl_context_version_create(evas_gl_, NULL, EVAS_GL_GLES_3_X); + gl_resource_context_ = + evas_gl_context_version_create(evas_gl_, gl_context_, EVAS_GL_GLES_3_X); + + if (gl_context_ == nullptr) { + FT_LOGW( + "Failed to create evas gl context with EVAS_GL_GLES_3_X, try to use " + "EVAS_GL_GLES_2_X,"); + gl_context_ = + evas_gl_context_version_create(evas_gl_, NULL, EVAS_GL_GLES_2_X); + gl_resource_context_ = + evas_gl_context_version_create(evas_gl_, gl_context_, EVAS_GL_GLES_2_X); + } + if (gl_context_ == nullptr) { + FT_LOGE("Failed to create evas gl context!"); + FT_RELEASE_ASSERT_NOT_REACHED(); + } + EVAS_GL_GLOBAL_GLES3_USE(g_evas_gl, gl_context_); gl_surface_ = evas_gl_surface_create(evas_gl_, gl_config_, w, h);