vlc | branch: master | Thomas Guillem <[email protected]> | Fri Aug 25 13:14:58 2017 +0200| [bb0b174ed162dfc56b13226eccb6e0045fb29fdd] | committer: Thomas Guillem
gl: rename opengl_shaders_api_t to opengl_vtable_t > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=bb0b174ed162dfc56b13226eccb6e0045fb29fdd --- modules/video_output/opengl/converter_android.c | 10 +- modules/video_output/opengl/converters.c | 100 ++++++------- modules/video_output/opengl/internal.h | 8 +- modules/video_output/opengl/vout_helper.c | 184 ++++++++++++------------ 4 files changed, 150 insertions(+), 152 deletions(-) diff --git a/modules/video_output/opengl/converter_android.c b/modules/video_output/opengl/converter_android.c index 46bec5462a..7132d818a0 100644 --- a/modules/video_output/opengl/converter_android.c +++ b/modules/video_output/opengl/converter_android.c @@ -164,7 +164,7 @@ static int tc_anop_fetch_locations(opengl_tex_converter_t *tc, GLuint program) { struct priv *priv = tc->priv; - priv->uloc.uSTMatrix = tc->api->GetUniformLocation(program, "uSTMatrix"); + priv->uloc.uSTMatrix = tc->vt->GetUniformLocation(program, "uSTMatrix"); return priv->uloc.uSTMatrix != -1 ? VLC_SUCCESS : VLC_EGENERIC; } @@ -176,7 +176,7 @@ tc_anop_prepare_shader(const opengl_tex_converter_t *tc, (void) tex_width; (void) tex_height; (void) alpha; struct priv *priv = tc->priv; if (priv->transform_mtx != NULL) - tc->api->UniformMatrix4fv(priv->uloc.uSTMatrix, 1, GL_FALSE, + tc->vt->UniformMatrix4fv(priv->uloc.uSTMatrix, 1, GL_FALSE, priv->transform_mtx); } @@ -261,9 +261,9 @@ opengl_tex_converter_anop_init(opengl_tex_converter_t *tc) "{ " " gl_FragColor = texture2D(sTexture, (uSTMatrix * vec4(TexCoord0, 1, 1)).xy);" "}"; - GLuint fragment_shader = tc->api->CreateShader(GL_FRAGMENT_SHADER); - tc->api->ShaderSource(fragment_shader, 1, &code, NULL); - tc->api->CompileShader(fragment_shader); + GLuint fragment_shader = tc->vt->CreateShader(GL_FRAGMENT_SHADER); + tc->vt->ShaderSource(fragment_shader, 1, &code, NULL); + tc->vt->CompileShader(fragment_shader); tc->fshader = fragment_shader; return VLC_SUCCESS; diff --git a/modules/video_output/opengl/converters.c b/modules/video_output/opengl/converters.c index bd71fbe73f..e3f768f1b3 100644 --- a/modules/video_output/opengl/converters.c +++ b/modules/video_output/opengl/converters.c @@ -302,7 +302,7 @@ tc_base_fetch_locations(opengl_tex_converter_t *tc, GLuint program) { if (tc->yuv_color) { - tc->uloc.Coefficients = tc->api->GetUniformLocation(program, + tc->uloc.Coefficients = tc->vt->GetUniformLocation(program, "Coefficients"); if (tc->uloc.Coefficients == -1) return VLC_EGENERIC; @@ -312,21 +312,21 @@ tc_base_fetch_locations(opengl_tex_converter_t *tc, GLuint program) { char name[sizeof("TextureX")]; snprintf(name, sizeof(name), "Texture%1u", i); - tc->uloc.Texture[i] = tc->api->GetUniformLocation(program, name); + tc->uloc.Texture[i] = tc->vt->GetUniformLocation(program, name); if (tc->uloc.Texture[i] == -1) return VLC_EGENERIC; #ifdef GL_TEXTURE_RECTANGLE if (tc->tex_target == GL_TEXTURE_RECTANGLE) { snprintf(name, sizeof(name), "TexSize%1u", i); - tc->uloc.TexSize[i] = tc->api->GetUniformLocation(program, name); + tc->uloc.TexSize[i] = tc->vt->GetUniformLocation(program, name); if (tc->uloc.TexSize[i] == -1) return VLC_EGENERIC; } #endif } - tc->uloc.FillColor = tc->api->GetUniformLocation(program, "FillColor"); + tc->uloc.FillColor = tc->vt->GetUniformLocation(program, "FillColor"); if (tc->uloc.FillColor == -1) return VLC_EGENERIC; return VLC_SUCCESS; @@ -340,18 +340,18 @@ tc_base_prepare_shader(const opengl_tex_converter_t *tc, (void) tex_width; (void) tex_height; if (tc->yuv_color) - tc->api->Uniform4fv(tc->uloc.Coefficients, 4, tc->yuv_coefficients); + tc->vt->Uniform4fv(tc->uloc.Coefficients, 4, tc->yuv_coefficients); for (unsigned i = 0; i < tc->tex_count; ++i) - tc->api->Uniform1i(tc->uloc.Texture[i], i); + tc->vt->Uniform1i(tc->uloc.Texture[i], i); - tc->api->Uniform4f(tc->uloc.FillColor, 1.0f, 1.0f, 1.0f, alpha); + tc->vt->Uniform4f(tc->uloc.FillColor, 1.0f, 1.0f, 1.0f, alpha); #ifdef GL_TEXTURE_RECTANGLE if (tc->tex_target == GL_TEXTURE_RECTANGLE) { for (unsigned i = 0; i < tc->tex_count; ++i) - tc->api->Uniform2f(tc->uloc.TexSize[i], tex_width[i], + tc->vt->Uniform2f(tc->uloc.TexSize[i], tex_width[i], tex_height[i]); } #endif @@ -489,15 +489,15 @@ opengl_fragment_shader_init(opengl_tex_converter_t *tc, GLenum tex_target, if (vlc_memstream_close(&ms) != 0) return 0; - GLuint fragment_shader = tc->api->CreateShader(GL_FRAGMENT_SHADER); + GLuint fragment_shader = tc->vt->CreateShader(GL_FRAGMENT_SHADER); if (fragment_shader == 0) { free(ms.ptr); return 0; } GLint length = ms.length; - tc->api->ShaderSource(fragment_shader, 1, (const char **)&ms.ptr, &length); - tc->api->CompileShader(fragment_shader); + tc->vt->ShaderSource(fragment_shader, 1, (const char **)&ms.ptr, &length); + tc->vt->CompileShader(fragment_shader); free(ms.ptr); tc->tex_target = tex_target; @@ -562,18 +562,18 @@ pbo_data_alloc(const opengl_tex_converter_t *tc, picture_t *pic) picture_sys_t *picsys = pic->p_sys; glGetError(); - tc->api->GenBuffers(pic->i_planes, picsys->buffers); + tc->vt->GenBuffers(pic->i_planes, picsys->buffers); for (int i = 0; i < pic->i_planes; ++i) { - tc->api->BindBuffer(GL_PIXEL_UNPACK_BUFFER, picsys->buffers[i]); - tc->api->BufferData(GL_PIXEL_UNPACK_BUFFER, picsys->bytes[i], NULL, + tc->vt->BindBuffer(GL_PIXEL_UNPACK_BUFFER, picsys->buffers[i]); + tc->vt->BufferData(GL_PIXEL_UNPACK_BUFFER, picsys->bytes[i], NULL, GL_DYNAMIC_DRAW); if (glGetError() != GL_NO_ERROR) { msg_Err(tc->gl, "could not alloc PBO buffers"); - tc->api->DeleteBuffers(i, picsys->buffers); + tc->vt->DeleteBuffers(i, picsys->buffers); return VLC_EGENERIC; } } @@ -587,7 +587,7 @@ picture_pbo_destroy_cb(picture_t *pic) const opengl_tex_converter_t *tc = picsys->tc; if (picsys->buffers[0] != 0) - tc->api->DeleteBuffers(pic->i_planes, picsys->buffers); + tc->vt->DeleteBuffers(pic->i_planes, picsys->buffers); free(picsys); free(pic); } @@ -608,7 +608,7 @@ pbo_pics_alloc(const opengl_tex_converter_t *tc) } /* turn off pbo */ - tc->api->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + tc->vt->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); return VLC_SUCCESS; error: @@ -632,9 +632,9 @@ tc_pbo_update(const opengl_tex_converter_t *tc, GLuint *textures, { GLsizeiptr size = pic->p[i].i_lines * pic->p[i].i_pitch; const GLvoid *data = pic->p[i].p_pixels; - tc->api->BindBuffer(GL_PIXEL_UNPACK_BUFFER, + tc->vt->BindBuffer(GL_PIXEL_UNPACK_BUFFER, display_pic->p_sys->buffers[i]); - tc->api->BufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, size, data); + tc->vt->BufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, size, data); glActiveTexture(GL_TEXTURE0 + i); glClientActiveTexture(GL_TEXTURE0 + i); @@ -648,7 +648,7 @@ tc_pbo_update(const opengl_tex_converter_t *tc, GLuint *textures, } /* turn off pbo */ - tc->api->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + tc->vt->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); return VLC_SUCCESS; } @@ -668,18 +668,18 @@ persistent_map(const opengl_tex_converter_t *tc, picture_t *pic) { picture_sys_t *picsys = pic->p_sys; - tc->api->GenBuffers(pic->i_planes, picsys->buffers); + tc->vt->GenBuffers(pic->i_planes, picsys->buffers); const GLbitfield access = GL_MAP_READ_BIT | GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT; for (int i = 0; i < pic->i_planes; ++i) { - tc->api->BindBuffer(GL_PIXEL_UNPACK_BUFFER, picsys->buffers[i]); - tc->api->BufferStorage(GL_PIXEL_UNPACK_BUFFER, picsys->bytes[i], NULL, + tc->vt->BindBuffer(GL_PIXEL_UNPACK_BUFFER, picsys->buffers[i]); + tc->vt->BufferStorage(GL_PIXEL_UNPACK_BUFFER, picsys->bytes[i], NULL, access | GL_CLIENT_STORAGE_BIT); pic->p[i].p_pixels = - tc->api->MapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, picsys->bytes[i], + tc->vt->MapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, picsys->bytes[i], access | GL_MAP_FLUSH_EXPLICIT_BIT); if (pic->p[i].p_pixels == NULL) @@ -687,11 +687,11 @@ persistent_map(const opengl_tex_converter_t *tc, picture_t *pic) msg_Err(tc->gl, "could not map PBO buffers"); for (i = i - 1; i >= 0; --i) { - tc->api->BindBuffer(GL_PIXEL_UNPACK_BUFFER, + tc->vt->BindBuffer(GL_PIXEL_UNPACK_BUFFER, picsys->buffers[i]); - tc->api->UnmapBuffer(GL_PIXEL_UNPACK_BUFFER); + tc->vt->UnmapBuffer(GL_PIXEL_UNPACK_BUFFER); } - tc->api->DeleteBuffers(pic->i_planes, picsys->buffers); + tc->vt->DeleteBuffers(pic->i_planes, picsys->buffers); memset(picsys->buffers, 0, PICTURE_PLANE_MAX * sizeof(GLuint)); return VLC_EGENERIC; } @@ -723,11 +723,11 @@ persistent_release_gpupics(const opengl_tex_converter_t *tc, bool force) assert(picsys->fence != NULL); GLenum wait = force ? GL_ALREADY_SIGNALED - : tc->api->ClientWaitSync(picsys->fence, 0, 0); + : tc->vt->ClientWaitSync(picsys->fence, 0, 0); if (wait == GL_ALREADY_SIGNALED || wait == GL_CONDITION_SATISFIED) { - tc->api->DeleteSync(picsys->fence); + tc->vt->DeleteSync(picsys->fence); picsys->fence = NULL; priv->persistent.list &= ~(1ULL << (i - 1)); @@ -748,9 +748,9 @@ tc_persistent_update(const opengl_tex_converter_t *tc, GLuint *textures, for (int i = 0; i < pic->i_planes; i++) { - tc->api->BindBuffer(GL_PIXEL_UNPACK_BUFFER, picsys->buffers[i]); + tc->vt->BindBuffer(GL_PIXEL_UNPACK_BUFFER, picsys->buffers[i]); if (picsys->fence == NULL) - tc->api->FlushMappedBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, + tc->vt->FlushMappedBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, picsys->bytes[i]); glActiveTexture(GL_TEXTURE0 + i); glClientActiveTexture(GL_TEXTURE0 + i); @@ -770,10 +770,10 @@ tc_persistent_update(const opengl_tex_converter_t *tc, GLuint *textures, { /* The picture is already held */ hold = false; - tc->api->DeleteSync(picsys->fence); + tc->vt->DeleteSync(picsys->fence); } - picsys->fence = tc->api->FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); + picsys->fence = tc->vt->FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); if (pic->p_sys->fence == NULL) { /* Error (corner case): don't hold the picture */ @@ -794,7 +794,7 @@ tc_persistent_update(const opengl_tex_converter_t *tc, GLuint *textures, } /* turn off pbo */ - tc->api->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + tc->vt->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); return VLC_SUCCESS; } @@ -816,10 +816,10 @@ picture_persistent_destroy_cb(picture_t *pic) { for (int i = 0; i < pic->i_planes; ++i) { - tc->api->BindBuffer(GL_PIXEL_UNPACK_BUFFER, picsys->buffers[i]); - tc->api->UnmapBuffer(GL_PIXEL_UNPACK_BUFFER); + tc->vt->BindBuffer(GL_PIXEL_UNPACK_BUFFER, picsys->buffers[i]); + tc->vt->UnmapBuffer(GL_PIXEL_UNPACK_BUFFER); } - tc->api->DeleteBuffers(pic->i_planes, picsys->buffers); + tc->vt->DeleteBuffers(pic->i_planes, picsys->buffers); } free(picsys); free(pic); @@ -859,7 +859,7 @@ tc_persistent_get_pool(const opengl_tex_converter_t *tc, unsigned requested_coun goto error; /* turn off pbo */ - tc->api->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + tc->vt->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); /* Wrap the pictures into a pool */ picture_pool_t *pool = picture_pool_New(count, pictures); @@ -984,7 +984,7 @@ tc_common_release(const opengl_tex_converter_t *tc) static int tc_xyz12_fetch_locations(opengl_tex_converter_t *tc, GLuint program) { - tc->uloc.Texture[0] = tc->api->GetUniformLocation(program, "Texture0"); + tc->uloc.Texture[0] = tc->vt->GetUniformLocation(program, "Texture0"); return tc->uloc.Texture[0] != -1 ? VLC_SUCCESS : VLC_EGENERIC; } @@ -994,7 +994,7 @@ tc_xyz12_prepare_shader(const opengl_tex_converter_t *tc, float alpha) { (void) tex_width; (void) tex_height; (void) alpha; - tc->api->Uniform1i(tc->uloc.Texture[0], 0); + tc->vt->Uniform1i(tc->uloc.Texture[0], 0); } static GLuint @@ -1041,11 +1041,11 @@ xyz12_shader_init(opengl_tex_converter_t *tc) " gl_FragColor = v_out;" "}"; - GLuint fragment_shader = tc->api->CreateShader(GL_FRAGMENT_SHADER); + GLuint fragment_shader = tc->vt->CreateShader(GL_FRAGMENT_SHADER); if (fragment_shader == 0) return 0; - tc->api->ShaderSource(fragment_shader, 1, &code, NULL); - tc->api->CompileShader(fragment_shader); + tc->vt->ShaderSource(fragment_shader, 1, &code, NULL); + tc->vt->CompileShader(fragment_shader); return fragment_shader; } @@ -1115,7 +1115,7 @@ generic_init(opengl_tex_converter_t *tc, bool allow_dr) struct priv *priv = tc->priv = calloc(1, sizeof(struct priv)); if (unlikely(priv == NULL)) { - tc->api->DeleteShader(fragment_shader); + tc->vt->DeleteShader(fragment_shader); return VLC_ENOMEM; } @@ -1142,10 +1142,10 @@ generic_init(opengl_tex_converter_t *tc, bool allow_dr) const unsigned char *ogl_version = glGetString(GL_VERSION); const bool glver_ok = strverscmp((const char *)ogl_version, "3.0") >= 0; - supports_map_persistent = glver_ok && has_pbo && has_bs && tc->api->BufferStorage - && tc->api->MapBufferRange && tc->api->FlushMappedBufferRange - && tc->api->UnmapBuffer && tc->api->FenceSync && tc->api->DeleteSync - && tc->api->ClientWaitSync; + supports_map_persistent = glver_ok && has_pbo && has_bs && tc->vt->BufferStorage + && tc->vt->MapBufferRange && tc->vt->FlushMappedBufferRange + && tc->vt->UnmapBuffer && tc->vt->FenceSync && tc->vt->DeleteSync + && tc->vt->ClientWaitSync; if (supports_map_persistent) { tc->pf_get_pool = tc_persistent_get_pool; @@ -1157,8 +1157,8 @@ generic_init(opengl_tex_converter_t *tc, bool allow_dr) #ifdef VLCGL_HAS_PBO if (!supports_map_persistent) { - const bool supports_pbo = has_pbo && tc->api->BufferData - && tc->api->BufferSubData; + const bool supports_pbo = has_pbo && tc->vt->BufferData + && tc->vt->BufferSubData; if (supports_pbo && pbo_pics_alloc(tc) == VLC_SUCCESS) { tc->pf_update = tc_pbo_update; diff --git a/modules/video_output/opengl/internal.h b/modules/video_output/opengl/internal.h index 3c27d49028..b76edcddfa 100644 --- a/modules/video_output/opengl/internal.h +++ b/modules/video_output/opengl/internal.h @@ -145,11 +145,11 @@ typedef struct { PFNGLCLIENTACTIVETEXTUREPROC ClientActiveTexture; # undef glClientActiveTexture # undef glActiveTexture -# define glActiveTexture tc->api->ActiveTexture -# define glClientActiveTexture tc->api->ClientActiveTexture +# define glActiveTexture tc->vt->ActiveTexture +# define glClientActiveTexture tc->vt->ClientActiveTexture #endif -} opengl_shaders_api_t; +} opengl_vtable_t; typedef struct opengl_tex_converter_t opengl_tex_converter_t; @@ -174,7 +174,7 @@ struct opengl_tex_converter_t /* Pointer to object gl, set by the caller of the init cb */ vlc_gl_t *gl; /* Function pointer to shaders commands, set by the caller of the init cb */ - const opengl_shaders_api_t *api; + const opengl_vtable_t *vt; /* Available gl extensions (from GL_EXTENSIONS) */ const char *glexts; diff --git a/modules/video_output/opengl/vout_helper.c b/modules/video_output/opengl/vout_helper.c index 5c35ade2c1..4ea80058df 100644 --- a/modules/video_output/opengl/vout_helper.c +++ b/modules/video_output/opengl/vout_helper.c @@ -110,7 +110,7 @@ struct prgm struct vout_display_opengl_t { vlc_gl_t *gl; - opengl_shaders_api_t api; + opengl_vtable_t vt; video_format_t fmt; @@ -383,9 +383,9 @@ static GLuint BuildVertexShader(const opengl_tex_converter_t *tc, coord1_code, coord2_code) < 0) return 0; - GLuint shader = tc->api->CreateShader(GL_VERTEX_SHADER); - tc->api->ShaderSource(shader, 1, (const char **) &code, NULL); - tc->api->CompileShader(shader); + GLuint shader = tc->vt->CreateShader(GL_VERTEX_SHADER); + tc->vt->ShaderSource(shader, 1, (const char **) &code, NULL); + tc->vt->CompileShader(shader); free(code); return shader; } @@ -444,7 +444,7 @@ opengl_link_program(struct prgm *prgm) /* Check shaders messages */ for (unsigned i = 0; i < 2; i++) { int infoLength; - tc->api->GetShaderiv(shaders[i], GL_INFO_LOG_LENGTH, &infoLength); + tc->vt->GetShaderiv(shaders[i], GL_INFO_LOG_LENGTH, &infoLength); if (infoLength <= 1) continue; @@ -452,31 +452,31 @@ opengl_link_program(struct prgm *prgm) if (infolog != NULL) { int charsWritten; - tc->api->GetShaderInfoLog(shaders[i], infoLength, &charsWritten, + tc->vt->GetShaderInfoLog(shaders[i], infoLength, &charsWritten, infolog); msg_Err(tc->gl, "shader %d: %s", i, infolog); free(infolog); } } - prgm->id = tc->api->CreateProgram(); - tc->api->AttachShader(prgm->id, tc->fshader); - tc->api->AttachShader(prgm->id, vertex_shader); - tc->api->LinkProgram(prgm->id); + prgm->id = tc->vt->CreateProgram(); + tc->vt->AttachShader(prgm->id, tc->fshader); + tc->vt->AttachShader(prgm->id, vertex_shader); + tc->vt->LinkProgram(prgm->id); - tc->api->DeleteShader(vertex_shader); - tc->api->DeleteShader(tc->fshader); + tc->vt->DeleteShader(vertex_shader); + tc->vt->DeleteShader(tc->fshader); /* Check program messages */ int infoLength = 0; - tc->api->GetProgramiv(prgm->id, GL_INFO_LOG_LENGTH, &infoLength); + tc->vt->GetProgramiv(prgm->id, GL_INFO_LOG_LENGTH, &infoLength); if (infoLength > 1) { char *infolog = malloc(infoLength); if (infolog != NULL) { int charsWritten; - tc->api->GetProgramInfoLog(prgm->id, infoLength, &charsWritten, + tc->vt->GetProgramInfoLog(prgm->id, infoLength, &charsWritten, infolog); msg_Err(tc->gl, "shader program: %s", infolog); free(infolog); @@ -484,7 +484,7 @@ opengl_link_program(struct prgm *prgm) /* If there is some message, better to check linking is ok */ GLint link_status = GL_TRUE; - tc->api->GetProgramiv(prgm->id, GL_LINK_STATUS, &link_status); + tc->vt->GetProgramiv(prgm->id, GL_LINK_STATUS, &link_status); if (link_status == GL_FALSE) { msg_Err(tc->gl, "Unable to use program"); @@ -494,7 +494,7 @@ opengl_link_program(struct prgm *prgm) /* Fetch UniformLocations and AttribLocations */ #define GET_LOC(type, x, str) do { \ - x = tc->api->Get##type##Location(prgm->id, str); \ + x = tc->vt->Get##type##Location(prgm->id, str); \ assert(x != -1); \ if (x == -1) { \ msg_Err(tc->gl, "Unable to Get"#type"Location(%s)\n", str); \ @@ -535,7 +535,7 @@ opengl_link_program(struct prgm *prgm) return VLC_SUCCESS; error: - tc->api->DeleteProgram(prgm->id); + tc->vt->DeleteProgram(prgm->id); prgm->id = 0; return VLC_EGENERIC; } @@ -546,7 +546,7 @@ opengl_deinit_program(vout_display_opengl_t *vgl, struct prgm *prgm) if (prgm->tc.pf_release != NULL) prgm->tc.pf_release(&prgm->tc); if (prgm->id != 0) - vgl->api.DeleteProgram(prgm->id); + vgl->vt.DeleteProgram(prgm->id); } static int @@ -556,7 +556,7 @@ opengl_init_program(vout_display_opengl_t *vgl, struct prgm *prgm, int ret; prgm->tc = (opengl_tex_converter_t) { .gl = vgl->gl, - .api = &vgl->api, + .vt = &vgl->vt, .glexts = glexts, .fmt = *fmt, }; @@ -661,14 +661,12 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt, } #endif - opengl_shaders_api_t *api = &vgl->api; - #if defined(USE_OPENGL_ES2) -#define GET_PROC_ADDR(name, critical) api->name = gl##name +#define GET_PROC_ADDR(name, critical) vgl->vt.name = gl##name #else #define GET_PROC_ADDR(name, critical) do { \ - api->name = vlc_gl_GetProcAddress(gl, "gl"#name); \ - if (api->name == NULL && critical) { \ + vgl->vt.name = vlc_gl_GetProcAddress(gl, "gl"#name); \ + if (vgl->vt.name == NULL && critical) { \ msg_Err(gl, "gl"#name" symbol not found, bailing out\n"); \ free(vgl); \ return NULL; \ @@ -725,8 +723,8 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt, GET_PROC_ADDR(ClientActiveTexture, true); # undef glActiveTexture # undef glClientActiveTexture -# define glActiveTexture vgl->api.ActiveTexture -# define glClientActiveTexture vgl->api.ClientActiveTexture +# define glActiveTexture vgl->vt.ActiveTexture +# define glClientActiveTexture vgl->vt.ClientActiveTexture #endif #undef GET_PROC_ADDR @@ -813,9 +811,9 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt, glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); - vgl->api.GenBuffers(1, &vgl->vertex_buffer_object); - vgl->api.GenBuffers(1, &vgl->index_buffer_object); - vgl->api.GenBuffers(vgl->prgm->tc.tex_count, vgl->texture_buffer_object); + vgl->vt.GenBuffers(1, &vgl->vertex_buffer_object); + vgl->vt.GenBuffers(1, &vgl->index_buffer_object); + vgl->vt.GenBuffers(vgl->prgm->tc.tex_count, vgl->texture_buffer_object); /* Initial number of allocated buffer objects for subpictures, will grow dynamically. */ int subpicture_buffer_object_count = 8; @@ -825,7 +823,7 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt, return NULL; } vgl->subpicture_buffer_object_count = subpicture_buffer_object_count; - vgl->api.GenBuffers(vgl->subpicture_buffer_object_count, vgl->subpicture_buffer_object); + vgl->vt.GenBuffers(vgl->subpicture_buffer_object_count, vgl->subpicture_buffer_object); /* */ vgl->region_count = 0; @@ -866,12 +864,12 @@ void vout_display_opengl_Delete(vout_display_opengl_t *vgl) free(vgl->region); opengl_deinit_program(vgl, vgl->sub_prgm); - vgl->api.DeleteBuffers(1, &vgl->vertex_buffer_object); - vgl->api.DeleteBuffers(1, &vgl->index_buffer_object); + vgl->vt.DeleteBuffers(1, &vgl->vertex_buffer_object); + vgl->vt.DeleteBuffers(1, &vgl->index_buffer_object); - vgl->api.DeleteBuffers(vgl->prgm->tc.tex_count, vgl->texture_buffer_object); + vgl->vt.DeleteBuffers(vgl->prgm->tc.tex_count, vgl->texture_buffer_object); if (vgl->subpicture_buffer_object_count > 0) - vgl->api.DeleteBuffers(vgl->subpicture_buffer_object_count, vgl->subpicture_buffer_object); + vgl->vt.DeleteBuffers(vgl->subpicture_buffer_object_count, vgl->subpicture_buffer_object); free(vgl->subpicture_buffer_object); if (vgl->pool) @@ -1387,18 +1385,18 @@ static int SetupCoords(vout_display_opengl_t *vgl, for (unsigned j = 0; j < vgl->prgm->tc.tex_count; j++) { - vgl->api.BindBuffer(GL_ARRAY_BUFFER, vgl->texture_buffer_object[j]); - vgl->api.BufferData(GL_ARRAY_BUFFER, nbVertices * 2 * sizeof(GLfloat), - textureCoord + j * nbVertices * 2, GL_STATIC_DRAW); + vgl->vt.BindBuffer(GL_ARRAY_BUFFER, vgl->texture_buffer_object[j]); + vgl->vt.BufferData(GL_ARRAY_BUFFER, nbVertices * 2 * sizeof(GLfloat), + textureCoord + j * nbVertices * 2, GL_STATIC_DRAW); } - vgl->api.BindBuffer(GL_ARRAY_BUFFER, vgl->vertex_buffer_object); - vgl->api.BufferData(GL_ARRAY_BUFFER, nbVertices * 3 * sizeof(GLfloat), - vertexCoord, GL_STATIC_DRAW); + vgl->vt.BindBuffer(GL_ARRAY_BUFFER, vgl->vertex_buffer_object); + vgl->vt.BufferData(GL_ARRAY_BUFFER, nbVertices * 3 * sizeof(GLfloat), + vertexCoord, GL_STATIC_DRAW); - vgl->api.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, vgl->index_buffer_object); - vgl->api.BufferData(GL_ELEMENT_ARRAY_BUFFER, nbIndices * sizeof(GLushort), - indices, GL_STATIC_DRAW); + vgl->vt.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, vgl->index_buffer_object); + vgl->vt.BufferData(GL_ELEMENT_ARRAY_BUFFER, nbIndices * sizeof(GLushort), + indices, GL_STATIC_DRAW); free(textureCoord); free(vertexCoord); @@ -1420,31 +1418,31 @@ static void DrawWithShaders(vout_display_opengl_t *vgl, struct prgm *prgm) glClientActiveTexture(GL_TEXTURE0+j); glBindTexture(tc->tex_target, vgl->texture[j]); - vgl->api.BindBuffer(GL_ARRAY_BUFFER, vgl->texture_buffer_object[j]); + vgl->vt.BindBuffer(GL_ARRAY_BUFFER, vgl->texture_buffer_object[j]); assert(prgm->aloc.MultiTexCoord[j] != -1); - vgl->api.EnableVertexAttribArray(prgm->aloc.MultiTexCoord[j]); - vgl->api.VertexAttribPointer(prgm->aloc.MultiTexCoord[j], 2, GL_FLOAT, + vgl->vt.EnableVertexAttribArray(prgm->aloc.MultiTexCoord[j]); + vgl->vt.VertexAttribPointer(prgm->aloc.MultiTexCoord[j], 2, GL_FLOAT, 0, 0, 0); } - vgl->api.BindBuffer(GL_ARRAY_BUFFER, vgl->vertex_buffer_object); - vgl->api.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, vgl->index_buffer_object); - vgl->api.EnableVertexAttribArray(prgm->aloc.VertexPosition); - vgl->api.VertexAttribPointer(prgm->aloc.VertexPosition, 3, GL_FLOAT, 0, 0, 0); - - vgl->api.UniformMatrix4fv(prgm->uloc.OrientationMatrix, 1, GL_FALSE, - prgm->var.OrientationMatrix); - vgl->api.UniformMatrix4fv(prgm->uloc.ProjectionMatrix, 1, GL_FALSE, - prgm->var.ProjectionMatrix); - vgl->api.UniformMatrix4fv(prgm->uloc.ZRotMatrix, 1, GL_FALSE, - prgm->var.ZRotMatrix); - vgl->api.UniformMatrix4fv(prgm->uloc.YRotMatrix, 1, GL_FALSE, - prgm->var.YRotMatrix); - vgl->api.UniformMatrix4fv(prgm->uloc.XRotMatrix, 1, GL_FALSE, - prgm->var.XRotMatrix); - vgl->api.UniformMatrix4fv(prgm->uloc.ZoomMatrix, 1, GL_FALSE, - prgm->var.ZoomMatrix); + vgl->vt.BindBuffer(GL_ARRAY_BUFFER, vgl->vertex_buffer_object); + vgl->vt.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, vgl->index_buffer_object); + vgl->vt.EnableVertexAttribArray(prgm->aloc.VertexPosition); + vgl->vt.VertexAttribPointer(prgm->aloc.VertexPosition, 3, GL_FLOAT, 0, 0, 0); + + vgl->vt.UniformMatrix4fv(prgm->uloc.OrientationMatrix, 1, GL_FALSE, + prgm->var.OrientationMatrix); + vgl->vt.UniformMatrix4fv(prgm->uloc.ProjectionMatrix, 1, GL_FALSE, + prgm->var.ProjectionMatrix); + vgl->vt.UniformMatrix4fv(prgm->uloc.ZRotMatrix, 1, GL_FALSE, + prgm->var.ZRotMatrix); + vgl->vt.UniformMatrix4fv(prgm->uloc.YRotMatrix, 1, GL_FALSE, + prgm->var.YRotMatrix); + vgl->vt.UniformMatrix4fv(prgm->uloc.XRotMatrix, 1, GL_FALSE, + prgm->var.XRotMatrix); + vgl->vt.UniformMatrix4fv(prgm->uloc.ZoomMatrix, 1, GL_FALSE, + prgm->var.ZoomMatrix); glDrawElements(GL_TRIANGLES, vgl->nb_indices, GL_UNSIGNED_SHORT, 0); } @@ -1457,7 +1455,7 @@ int vout_display_opengl_Display(vout_display_opengl_t *vgl, Currently, the OS X provider uses it to get a smooth window resizing */ glClear(GL_COLOR_BUFFER_BIT); - vgl->api.UseProgram(vgl->prgm->id); + vgl->vt.UseProgram(vgl->prgm->id); if (source->i_x_offset != vgl->last_source.i_x_offset || source->i_y_offset != vgl->last_source.i_y_offset @@ -1509,7 +1507,7 @@ int vout_display_opengl_Display(vout_display_opengl_t *vgl, struct prgm *prgm = vgl->sub_prgm; GLuint program = prgm->id; opengl_tex_converter_t *tc = &prgm->tc; - vgl->api.UseProgram(program); + vgl->vt.UseProgram(program); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); @@ -1517,8 +1515,8 @@ int vout_display_opengl_Display(vout_display_opengl_t *vgl, /* We need two buffer objects for each region: for vertex and texture coordinates. */ if (2 * vgl->region_count > vgl->subpicture_buffer_object_count) { if (vgl->subpicture_buffer_object_count > 0) - vgl->api.DeleteBuffers(vgl->subpicture_buffer_object_count, - vgl->subpicture_buffer_object); + vgl->vt.DeleteBuffers(vgl->subpicture_buffer_object_count, + vgl->subpicture_buffer_object); vgl->subpicture_buffer_object_count = 0; int new_count = 2 * vgl->region_count; @@ -1527,8 +1525,8 @@ int vout_display_opengl_Display(vout_display_opengl_t *vgl, return VLC_ENOMEM; vgl->subpicture_buffer_object_count = new_count; - vgl->api.GenBuffers(vgl->subpicture_buffer_object_count, - vgl->subpicture_buffer_object); + vgl->vt.GenBuffers(vgl->subpicture_buffer_object_count, + vgl->subpicture_buffer_object); } glActiveTexture(GL_TEXTURE0 + 0); @@ -1553,30 +1551,30 @@ int vout_display_opengl_Display(vout_display_opengl_t *vgl, tc->pf_prepare_shader(tc, &glr->width, &glr->height, glr->alpha); - vgl->api.BindBuffer(GL_ARRAY_BUFFER, vgl->subpicture_buffer_object[2 * i]); - vgl->api.BufferData(GL_ARRAY_BUFFER, sizeof(textureCoord), textureCoord, GL_STATIC_DRAW); - vgl->api.EnableVertexAttribArray(prgm->aloc.MultiTexCoord[0]); - vgl->api.VertexAttribPointer(prgm->aloc.MultiTexCoord[0], 2, GL_FLOAT, - 0, 0, 0); - - vgl->api.BindBuffer(GL_ARRAY_BUFFER, vgl->subpicture_buffer_object[2 * i + 1]); - vgl->api.BufferData(GL_ARRAY_BUFFER, sizeof(vertexCoord), vertexCoord, GL_STATIC_DRAW); - vgl->api.EnableVertexAttribArray(prgm->aloc.VertexPosition); - vgl->api.VertexAttribPointer(prgm->aloc.VertexPosition, 2, GL_FLOAT, - 0, 0, 0); - - vgl->api.UniformMatrix4fv(prgm->uloc.OrientationMatrix, 1, GL_FALSE, - prgm->var.OrientationMatrix); - vgl->api.UniformMatrix4fv(prgm->uloc.ProjectionMatrix, 1, GL_FALSE, - prgm->var.ProjectionMatrix); - vgl->api.UniformMatrix4fv(prgm->uloc.ZRotMatrix, 1, GL_FALSE, - prgm->var.ZRotMatrix); - vgl->api.UniformMatrix4fv(prgm->uloc.YRotMatrix, 1, GL_FALSE, - prgm->var.YRotMatrix); - vgl->api.UniformMatrix4fv(prgm->uloc.XRotMatrix, 1, GL_FALSE, - prgm->var.XRotMatrix); - vgl->api.UniformMatrix4fv(prgm->uloc.ZoomMatrix, 1, GL_FALSE, - prgm->var.ZoomMatrix); + vgl->vt.BindBuffer(GL_ARRAY_BUFFER, vgl->subpicture_buffer_object[2 * i]); + vgl->vt.BufferData(GL_ARRAY_BUFFER, sizeof(textureCoord), textureCoord, GL_STATIC_DRAW); + vgl->vt.EnableVertexAttribArray(prgm->aloc.MultiTexCoord[0]); + vgl->vt.VertexAttribPointer(prgm->aloc.MultiTexCoord[0], 2, GL_FLOAT, + 0, 0, 0); + + vgl->vt.BindBuffer(GL_ARRAY_BUFFER, vgl->subpicture_buffer_object[2 * i + 1]); + vgl->vt.BufferData(GL_ARRAY_BUFFER, sizeof(vertexCoord), vertexCoord, GL_STATIC_DRAW); + vgl->vt.EnableVertexAttribArray(prgm->aloc.VertexPosition); + vgl->vt.VertexAttribPointer(prgm->aloc.VertexPosition, 2, GL_FLOAT, + 0, 0, 0); + + vgl->vt.UniformMatrix4fv(prgm->uloc.OrientationMatrix, 1, GL_FALSE, + prgm->var.OrientationMatrix); + vgl->vt.UniformMatrix4fv(prgm->uloc.ProjectionMatrix, 1, GL_FALSE, + prgm->var.ProjectionMatrix); + vgl->vt.UniformMatrix4fv(prgm->uloc.ZRotMatrix, 1, GL_FALSE, + prgm->var.ZRotMatrix); + vgl->vt.UniformMatrix4fv(prgm->uloc.YRotMatrix, 1, GL_FALSE, + prgm->var.YRotMatrix); + vgl->vt.UniformMatrix4fv(prgm->uloc.XRotMatrix, 1, GL_FALSE, + prgm->var.XRotMatrix); + vgl->vt.UniformMatrix4fv(prgm->uloc.ZoomMatrix, 1, GL_FALSE, + prgm->var.ZoomMatrix); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
