mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-05 12:30:40 +02:00
intel: Drop viewport hack when we can
This commit is contained in:
parent
4258e3a2e1
commit
db2993faa0
7 changed files with 15 additions and 10 deletions
|
|
@ -736,6 +736,8 @@ setupLoaderExtensions(__DRIscreen *psp,
|
|||
psp->dri2.loader = (__DRIdri2LoaderExtension *) extensions[i];
|
||||
if (strcmp(extensions[i]->name, __DRI_IMAGE_LOOKUP) == 0)
|
||||
psp->dri2.image = (__DRIimageLookupExtension *) extensions[i];
|
||||
if (strcmp(extensions[i]->name, __DRI_USE_INVALIDATE) == 0)
|
||||
psp->dri2.useInvalidate = (__DRIuseInvalidateExtension *) extensions[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -527,6 +527,7 @@ struct __DRIscreenRec {
|
|||
int enabled;
|
||||
__DRIdri2LoaderExtension *loader;
|
||||
__DRIimageLookupExtension *image;
|
||||
__DRIuseInvalidateExtension *useInvalidate;
|
||||
} dri2;
|
||||
|
||||
/* The lock actually in use, old sarea or DRI2 */
|
||||
|
|
|
|||
|
|
@ -453,8 +453,6 @@ i830Viewport(GLcontext * ctx,
|
|||
GLint x, GLint y, GLsizei width, GLsizei height)
|
||||
{
|
||||
intelCalcViewport(ctx);
|
||||
|
||||
intel_viewport(ctx, x, y, width, height);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -394,8 +394,6 @@ i915Viewport(GLcontext * ctx,
|
|||
GLint x, GLint y, GLsizei width, GLsizei height)
|
||||
{
|
||||
intelCalcViewport(ctx);
|
||||
|
||||
intel_viewport(ctx, x, y, width, height);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -64,8 +64,6 @@ static void brwInitDriverFunctions( struct dd_function_table *functions )
|
|||
brwInitFragProgFuncs( functions );
|
||||
brwInitProgFuncs( functions );
|
||||
brw_init_queryobj_functions(functions);
|
||||
|
||||
functions->Viewport = intel_viewport;
|
||||
}
|
||||
|
||||
GLboolean brwCreateContext( int api,
|
||||
|
|
|
|||
|
|
@ -438,12 +438,15 @@ intel_prepare_render(struct intel_context *intel)
|
|||
intel->front_buffer_dirty = GL_TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
intel_viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
|
||||
{
|
||||
struct intel_context *intel = intel_context(ctx);
|
||||
__DRIcontext *driContext = intel->driContext;
|
||||
|
||||
if (intel->saved_viewport)
|
||||
intel->saved_viewport(ctx, x, y, w, h);
|
||||
|
||||
if (!intel->using_dri2_swapbuffers &&
|
||||
!intel->meta.internal_viewport_call && ctx->DrawBuffer->Name == 0) {
|
||||
dri2InvalidateDrawable(driContext->driDrawablePriv);
|
||||
|
|
@ -608,6 +611,12 @@ intelInitContext(struct intel_context *intel,
|
|||
if (intelScreen->bufmgr == NULL)
|
||||
return GL_FALSE;
|
||||
|
||||
/* Can't rely on invalidate events, fall back to glViewport hack */
|
||||
if (!driContextPriv->driScreenPriv->dri2.useInvalidate) {
|
||||
intel->saved_viewport = functions->Viewport;
|
||||
functions->Viewport = intel_viewport;
|
||||
}
|
||||
|
||||
if (!_mesa_initialize_context_for_api(&intel->ctx, api, mesaVis, shareCtx,
|
||||
functions, (void *) intel)) {
|
||||
printf("%s: failed to init mesa context\n", __FUNCTION__);
|
||||
|
|
|
|||
|
|
@ -243,6 +243,8 @@ struct intel_context
|
|||
|
||||
__DRIcontext *driContext;
|
||||
struct intel_screen *intelScreen;
|
||||
void (*saved_viewport)(GLcontext * ctx,
|
||||
GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
|
||||
/**
|
||||
* Configuration cache
|
||||
|
|
@ -446,9 +448,6 @@ extern int intel_translate_stencil_op(GLenum op);
|
|||
extern int intel_translate_blend_factor(GLenum factor);
|
||||
extern int intel_translate_logic_op(GLenum opcode);
|
||||
|
||||
void intel_viewport(GLcontext * ctx, GLint x, GLint y,
|
||||
GLsizei width, GLsizei height);
|
||||
|
||||
void intel_update_renderbuffers(__DRIcontext *context,
|
||||
__DRIdrawable *drawable);
|
||||
void intel_prepare_render(struct intel_context *intel);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue