glx: Pull use_x_font out of the context vtable
The client-side implementation of this operates entirely in terms of the GL and X client APIs. There's nothing DRI-specific about it, evidenced by apple and windows using it unchanged. Save a little code size by handling the direct/indirect difference directly. Reviewed-by: Jesse Natalie <jenatali@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9690>
This commit is contained in:
parent
a6cd30333c
commit
cba1d6de22
|
@ -114,7 +114,6 @@ static const struct glx_context_vtable applegl_context_vtable = {
|
|||
.unbind = applegl_unbind_context,
|
||||
.wait_gl = applegl_wait_gl,
|
||||
.wait_x = applegl_wait_x,
|
||||
.use_x_font = DRI_glXUseXFont,
|
||||
.bind_tex_image = NULL,
|
||||
.release_tex_image = NULL,
|
||||
.get_proc_address = applegl_get_proc_address,
|
||||
|
|
|
@ -1047,7 +1047,6 @@ static const struct glx_context_vtable dri2_context_vtable = {
|
|||
.unbind = dri2_unbind_context,
|
||||
.wait_gl = dri2_wait_gl,
|
||||
.wait_x = dri2_wait_x,
|
||||
.use_x_font = DRI_glXUseXFont,
|
||||
.bind_tex_image = dri2_bind_tex_image,
|
||||
.release_tex_image = dri2_release_tex_image,
|
||||
.get_proc_address = NULL,
|
||||
|
|
|
@ -714,7 +714,6 @@ static const struct glx_context_vtable dri3_context_vtable = {
|
|||
.unbind = dri3_unbind_context,
|
||||
.wait_gl = dri3_wait_gl,
|
||||
.wait_x = dri3_wait_x,
|
||||
.use_x_font = DRI_glXUseXFont,
|
||||
.bind_tex_image = dri3_bind_tex_image,
|
||||
.release_tex_image = dri3_release_tex_image,
|
||||
.get_proc_address = NULL,
|
||||
|
|
|
@ -476,7 +476,6 @@ static const struct glx_context_vtable drisw_context_vtable = {
|
|||
.unbind = drisw_unbind_context,
|
||||
.wait_gl = NULL,
|
||||
.wait_x = NULL,
|
||||
.use_x_font = DRI_glXUseXFont,
|
||||
.bind_tex_image = drisw_bind_tex_image,
|
||||
.release_tex_image = drisw_release_tex_image,
|
||||
.get_proc_address = NULL,
|
||||
|
|
|
@ -150,7 +150,6 @@ static const struct glx_context_vtable driwindows_context_vtable = {
|
|||
.unbind = driwindows_unbind_context,
|
||||
.wait_gl = NULL,
|
||||
.wait_x = NULL,
|
||||
.use_x_font = DRI_glXUseXFont,
|
||||
.bind_tex_image = driwindows_bind_tex_image,
|
||||
.release_tex_image = driwindows_release_tex_image,
|
||||
.get_proc_address = NULL,
|
||||
|
|
|
@ -227,8 +227,6 @@ struct glx_context_vtable {
|
|||
void (*unbind)(struct glx_context *context, struct glx_context *new_ctx);
|
||||
void (*wait_gl)(struct glx_context *ctx);
|
||||
void (*wait_x)(struct glx_context *ctx);
|
||||
void (*use_x_font)(struct glx_context *ctx,
|
||||
Font font, int first, int count, int listBase);
|
||||
void (*bind_tex_image)(Display * dpy,
|
||||
GLXDrawable drawable,
|
||||
int buffer, const int *attrib_list);
|
||||
|
|
|
@ -583,9 +583,31 @@ _GLX_PUBLIC void
|
|||
glXUseXFont(Font font, int first, int count, int listBase)
|
||||
{
|
||||
struct glx_context *gc = __glXGetCurrentContext();
|
||||
xGLXUseXFontReq *req;
|
||||
Display *dpy = gc->currentDpy;
|
||||
|
||||
if (gc->vtable->use_x_font)
|
||||
gc->vtable->use_x_font(gc, font, first, count, listBase);
|
||||
#ifdef GLX_DIRECT_RENDERING
|
||||
if (gc->isDirect) {
|
||||
DRI_glXUseXFont(gc, font, first, count, listBase);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Flush any pending commands out */
|
||||
__glXFlushRenderBuffer(gc, gc->pc);
|
||||
|
||||
/* Send the glXUseFont request */
|
||||
LockDisplay(dpy);
|
||||
GetReq(GLXUseXFont, req);
|
||||
req->reqType = gc->majorOpcode;
|
||||
req->glxCode = X_GLXUseXFont;
|
||||
req->contextTag = gc->currentContextTag;
|
||||
req->font = font;
|
||||
req->first = first;
|
||||
req->count = count;
|
||||
req->listBase = listBase;
|
||||
UnlockDisplay(dpy);
|
||||
SyncHandle();
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
|
|
|
@ -229,30 +229,6 @@ indirect_wait_x(struct glx_context *gc)
|
|||
SyncHandle();
|
||||
}
|
||||
|
||||
static void
|
||||
indirect_use_x_font(struct glx_context *gc,
|
||||
Font font, int first, int count, int listBase)
|
||||
{
|
||||
xGLXUseXFontReq *req;
|
||||
Display *dpy = gc->currentDpy;
|
||||
|
||||
/* Flush any pending commands out */
|
||||
__glXFlushRenderBuffer(gc, gc->pc);
|
||||
|
||||
/* Send the glXUseFont request */
|
||||
LockDisplay(dpy);
|
||||
GetReq(GLXUseXFont, req);
|
||||
req->reqType = gc->majorOpcode;
|
||||
req->glxCode = X_GLXUseXFont;
|
||||
req->contextTag = gc->currentContextTag;
|
||||
req->font = font;
|
||||
req->first = first;
|
||||
req->count = count;
|
||||
req->listBase = listBase;
|
||||
UnlockDisplay(dpy);
|
||||
SyncHandle();
|
||||
}
|
||||
|
||||
static void
|
||||
indirect_bind_tex_image(Display * dpy,
|
||||
GLXDrawable drawable,
|
||||
|
@ -342,7 +318,6 @@ static const struct glx_context_vtable indirect_context_vtable = {
|
|||
.unbind = indirect_unbind_context,
|
||||
.wait_gl = indirect_wait_gl,
|
||||
.wait_x = indirect_wait_x,
|
||||
.use_x_font = indirect_use_x_font,
|
||||
.bind_tex_image = indirect_bind_tex_image,
|
||||
.release_tex_image = indirect_release_tex_image,
|
||||
.get_proc_address = NULL,
|
||||
|
|
Loading…
Reference in New Issue