Missing function pointers for OES_blend_*_seperate

This topic contains 4 replies, has 4 voices, and was last updated by  vpgfx 5 years, 8 months ago.

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #30285

    rstepinski
    Member

    Hi there,

    This seems to be related to the issue reported in this forum post:

    Problem with glBlendEquationOES

    We are seeing the extensions OES_blend_equation_seperate and OES_blend_func_separate being reported as of SDK version 2.06.26, however, both of the follow function pointers are NULL:

    glBlendEquationSeparateOES

    glBlendFuncSeparateOES

    Will these functions also be handled in the next release?

    Thanks!

    Rob Stepinski

    Software Developer

    Transgaming Technologies Inc.

    #34322

    Gordon
    Moderator

    The release that has just gone live (2.7) has this issue fixed.

    https://www.imgtec.com/powervr/insider/powervr-sdk.asp

    The extensions are only available under SGX profiles – please see the documentation for PVRVFrame for how to select these.

    #34323

    vpgfx
    Member

    I’m using the latest SDK drop but don’t manage to get the function pointer for glBlendFuncSeparateOES. Do I miss something?
    Please find below some test code and its output.

    I already tried different HW profiles like SGX or Generic (using PVRVFrameSetup) but this didn’t make a difference.

    Regards,
    Volker

       {
          char buf[256];
          const char* pszGLVendor = (const char*)glGetString(GL_VENDOR);
          const char* pszGLVersion = (const char*)glGetString(GL_VERSION);
          const char* pszGLRenderer = (const char*)glGetString(GL_RENDERER);
          const char* pszGLExtensions = (const char*)glGetString(GL_EXTENSIONS);

          const char* pszEGLVendor = eglQueryString(eglDisplay, EGL_VENDOR);
          const char* pszEGLVersion = eglQueryString(eglDisplay, EGL_VERSION);
          const char* pszEGLExtensions = eglQueryString(eglDisplay, EGL_EXTENSIONS);

          OutputDebugString(“GL_VENDOR:      “); OutputDebugString(pszGLVendor);
          OutputDebugString(“GL_VERSION:     “); OutputDebugString(pszGLVersion);
          OutputDebugString(“GL_RENDERER:    “); OutputDebugString(pszGLRenderer);
          OutputDebugString(“GL_EXTENSIONS:  “); OutputDebugString(pszGLExtensions);
         
          OutputDebugString(“EGL_VENDOR:     “); OutputDebugString(pszEGLVendor);   
          OutputDebugString(“EGL_VERSION:    “); OutputDebugString(pszEGLVersion);   
          OutputDebugString(“EGL_EXTENSIONS: “); OutputDebugString(pszEGLExtensions);

          if (strstr((char *)pszGLExtensions, “GL_OES_blend_func_separate”))
          {
             OutputDebugString(“GL_OES_blend_func_separate foundn”);

             PFNGLBLENDFUNCSEPARATEOESPROC pglBlendFuncSeparateOES = (PFNGLBLENDFUNCSEPARATEOESPROC)eglGetProcAddress(“glBlendFuncSeparateOES”);
             const int eglError = eglGetError();

             if (pglBlendFuncSeparateOES == NULL)
                sprintf(buf, “glBlendFuncSeparateOES NOT found – error 0x%04xn”, eglError);
             else
                sprintf(buf, “glBlendFuncSeparateOES found – error %d – pointer %pn”, eglError, pglBlendFuncSeparateOES);
             OutputDebugString(buf);
          }
          else
             OutputDebugString(“GL_OES_blend_func_separate NOT foundn”);

          // test same method with other extension pointer:
          if (strstr((char *)pszGLExtensions, “GL_OES_matrix_palette”))
          {
             OutputDebugString(“GL_OES_matrix_palette foundn”);

             PFNGLCURRENTPALETTEMATRIXOESPROC pglCurrentPaletteMatrixOES = (PFNGLCURRENTPALETTEMATRIXOESPROC)eglGetProcAddress(“glCurrentPaletteMatrixOES”);
             const int eglError = eglGetError();

             if (pglCurrentPaletteMatrixOES == NULL)
                sprintf(buf, “glCurrentPaletteMatrixOES NOT found – error 0x%04xn”, eglError);
             else
                sprintf(buf, “glCurrentPaletteMatrixOES found – error 0x%04x – pointer %pn”, eglError, pglCurrentPaletteMatrixOES);
             OutputDebugString(buf);
          }
          else
             OutputDebugString(“GL_OES_matrix_palette NOT foundn”);
       }

    GL_VENDOR:     
    PowerVR PVRVFrame 8.1 SGX (Host GL: `ATI Radeon HD 3400 Series`) SDK Build: 2.09.29.0646
    GL_VERSION:    
    OpenGL ES-CM 1.1
    GL_RENDERER:   
    PowerVR PVRVFrame 8.1 SGX (Host GL: `ATI Radeon HD 3400 Series`) SDK Build: 2.09.29.0646
    GL_EXTENSIONS: 
    GL_OES_byte_coordinates GL_OES_fixed_point GL_OES_query_matrix GL_OES_single_precision GL_OES_matrix_get GL_OES_read_format GL_IMG_read_format GL_OES_point_sprite GL_OES_query_matrix GL_OES_texture_env_crossbar GL_OES_texture_mirrored_repeat GL_OES_blend_subtract GL_OES_blend_func_separate GL_OES_blend_equation_separate GL_OES_stencil_wrap GL_OES_extended_matrix_palette GL_OES_vertex_half_float GL_OES_compressed_ETC1_RGB8_texture GL_OES_compressed_paletted_texture GL_OES_depth24 GL_OES_depth_texture GL_OES_required_internalformat GL_OES_packed_depth_stencil GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_cube_map GL_OES_rgb8_rgba8 GL_OES_stencil8 GL_OES_fragment_precision_high GL_OES_element_index_uint GL_IMG_texture_compression_pvrtc GL_OES_framebuffer_object GL_OES_mapbuffer GL_OES_matrix_palette GL_OES_point_size_array GL_OES_draw_texture GL_EXT_multi_draw_arrays GL_IMG_texture_format_BGRA8888
    EGL_VENDOR:    
    Imagination Technologies
    EGL_VERSION:   
    1.4 PVRVFrame 8.1 (SDK 2.09.29.0620)
    EGL_EXTENSIONS:

    GL_OES_blend_func_separate found
    glBlendFuncSeparateOES NOT found – error 0x3000
    GL_OES_matrix_palette found
    glCurrentPaletteMatrixOES found – error 0x3000 – pointer 02F51830

    vpgfx2012-01-26 15:53:09

    #34324

    chris
    Moderator

    Hi Volker,

    Unfortunately the glBlendFuncSeparateOES extension for OpenGL ES 1.1 is not implemented in the latest version of PVRVFrame. However the identical glBlendFuncSeparate function is supported by the OpenGL ES 2.0 emulation library.

    I believe your ATI Radeon HD 3400 should run OpenGL ES 2.0 emulation just fine, so as a workaround you could use the GLESv2 library and call glBlendFuncSeparate for your testing.

    #34325

    vpgfx
    Member

    Hi Chris,

    Thanks for your confirmation! I can’t switch my app to 2.0 right now but actually wanted to do it anyway later on. So far I’ll go on with simple glBlendFunc(). (Would be nice to have the glBlendFuncSeparateOES function in a later PVRVFrame though.)

    Thanks,
    Volker

Viewing 5 posts - 1 through 5 (of 5 total)
You must be logged in to reply to this topic.