projects
/
mesa.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
4258e3a
)
intel: Drop viewport hack when we can
author
Kristian Høgsberg
<krh@bitplanet.net>
Tue, 11 May 2010 14:23:34 +0000
(10:23 -0400)
committer
Kristian Høgsberg
<krh@bitplanet.net>
Tue, 11 May 2010 14:23:53 +0000
(10:23 -0400)
src/mesa/drivers/dri/common/dri_util.c
patch
|
blob
|
history
src/mesa/drivers/dri/common/dri_util.h
patch
|
blob
|
history
src/mesa/drivers/dri/i915/i830_state.c
patch
|
blob
|
history
src/mesa/drivers/dri/i915/i915_state.c
patch
|
blob
|
history
src/mesa/drivers/dri/i965/brw_context.c
patch
|
blob
|
history
src/mesa/drivers/dri/intel/intel_context.c
patch
|
blob
|
history
src/mesa/drivers/dri/intel/intel_context.h
patch
|
blob
|
history
diff --git
a/src/mesa/drivers/dri/common/dri_util.c
b/src/mesa/drivers/dri/common/dri_util.c
index 360c5247548583ce1b4458e27cb5302b539bb58e..c3d1f2c4542bc227664742ec495b18580a9a2ade 100644
(file)
--- a/
src/mesa/drivers/dri/common/dri_util.c
+++ b/
src/mesa/drivers/dri/common/dri_util.c
@@
-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];
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];
}
}
}
}
diff --git
a/src/mesa/drivers/dri/common/dri_util.h
b/src/mesa/drivers/dri/common/dri_util.h
index ab6c6e57afc1d6f9e007d873dc9c40d85f6ee44b..e4c590b13224bfde7c170428ad1ab64b647ca14b 100644
(file)
--- a/
src/mesa/drivers/dri/common/dri_util.h
+++ b/
src/mesa/drivers/dri/common/dri_util.h
@@
-527,6
+527,7
@@
struct __DRIscreenRec {
int enabled;
__DRIdri2LoaderExtension *loader;
__DRIimageLookupExtension *image;
int enabled;
__DRIdri2LoaderExtension *loader;
__DRIimageLookupExtension *image;
+ __DRIuseInvalidateExtension *useInvalidate;
} dri2;
/* The lock actually in use, old sarea or DRI2 */
} dri2;
/* The lock actually in use, old sarea or DRI2 */
diff --git
a/src/mesa/drivers/dri/i915/i830_state.c
b/src/mesa/drivers/dri/i915/i830_state.c
index 3b9b3ae329e8e73895139fff0c1e0fcd8c1fe461..38e524e183cc0c744a4740262e4432b1ddd6cdf7 100644
(file)
--- a/
src/mesa/drivers/dri/i915/i830_state.c
+++ b/
src/mesa/drivers/dri/i915/i830_state.c
@@
-453,8
+453,6
@@
i830Viewport(GLcontext * ctx,
GLint x, GLint y, GLsizei width, GLsizei height)
{
intelCalcViewport(ctx);
GLint x, GLint y, GLsizei width, GLsizei height)
{
intelCalcViewport(ctx);
-
- intel_viewport(ctx, x, y, width, height);
}
}
diff --git
a/src/mesa/drivers/dri/i915/i915_state.c
b/src/mesa/drivers/dri/i915/i915_state.c
index 91b228d52b9e62a677970b3e9dc3747bc9b2f6f7..26d387f383af906ee3575e18fc14e60b1fb72672 100644
(file)
--- a/
src/mesa/drivers/dri/i915/i915_state.c
+++ b/
src/mesa/drivers/dri/i915/i915_state.c
@@
-394,8
+394,6
@@
i915Viewport(GLcontext * ctx,
GLint x, GLint y, GLsizei width, GLsizei height)
{
intelCalcViewport(ctx);
GLint x, GLint y, GLsizei width, GLsizei height)
{
intelCalcViewport(ctx);
-
- intel_viewport(ctx, x, y, width, height);
}
}
diff --git
a/src/mesa/drivers/dri/i965/brw_context.c
b/src/mesa/drivers/dri/i965/brw_context.c
index 523a11aea332c00017e776798d3fd1774746d07a..6b04ad9ec6ab21cef3d2a03fa7c95a7952cec8e7 100644
(file)
--- a/
src/mesa/drivers/dri/i965/brw_context.c
+++ b/
src/mesa/drivers/dri/i965/brw_context.c
@@
-64,8
+64,6
@@
static void brwInitDriverFunctions( struct dd_function_table *functions )
brwInitFragProgFuncs( functions );
brwInitProgFuncs( functions );
brw_init_queryobj_functions(functions);
brwInitFragProgFuncs( functions );
brwInitProgFuncs( functions );
brw_init_queryobj_functions(functions);
-
- functions->Viewport = intel_viewport;
}
GLboolean brwCreateContext( int api,
}
GLboolean brwCreateContext( int api,
diff --git
a/src/mesa/drivers/dri/intel/intel_context.c
b/src/mesa/drivers/dri/intel/intel_context.c
index 62ae637dc614c4fda5acb745bd63b845f69e9033..7d83e52f640deb2e85626218176690466db93952 100644
(file)
--- a/
src/mesa/drivers/dri/intel/intel_context.c
+++ b/
src/mesa/drivers/dri/intel/intel_context.c
@@
-438,12
+438,15
@@
intel_prepare_render(struct intel_context *intel)
intel->front_buffer_dirty = GL_TRUE;
}
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;
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);
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;
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__);
if (!_mesa_initialize_context_for_api(&intel->ctx, api, mesaVis, shareCtx,
functions, (void *) intel)) {
printf("%s: failed to init mesa context\n", __FUNCTION__);
diff --git
a/src/mesa/drivers/dri/intel/intel_context.h
b/src/mesa/drivers/dri/intel/intel_context.h
index 7bc5aa5d9b10ddacfb94fdfed0f8f95b92183ccf..db244e587293569075289fe01c7fb3d97226f29d 100644
(file)
--- a/
src/mesa/drivers/dri/intel/intel_context.h
+++ b/
src/mesa/drivers/dri/intel/intel_context.h
@@
-243,6
+243,8
@@
struct intel_context
__DRIcontext *driContext;
struct intel_screen *intelScreen;
__DRIcontext *driContext;
struct intel_screen *intelScreen;
+ void (*saved_viewport)(GLcontext * ctx,
+ GLint x, GLint y, GLsizei width, GLsizei height);
/**
* Configuration cache
/**
* 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);
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);
void intel_update_renderbuffers(__DRIcontext *context,
__DRIdrawable *drawable);
void intel_prepare_render(struct intel_context *intel);