| author | Dave Airlie <airlied@redhat.com> | 2010-03-02 04:05:21 (GMT) |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2010-03-02 04:14:47 (GMT) |
| commit | cf8af9bcf127e170b64112bd548d5d4e79c8e894 (patch) (side-by-side diff) | |
| tree | 0c14520b5808036e87ce4ab623da63766c3a4655 | |
| parent | 7123f3d77ad7a62d9604d3febc42881e881452ea (diff) | |
| download | mesa-cf8af9bcf127e170b64112bd548d5d4e79c8e894.zip mesa-cf8af9bcf127e170b64112bd548d5d4e79c8e894.tar.gz | |
r600: fix blender picking.
This fixes the sw fallback for GL_SELECT picking modes.
Fixes object picking blender + depthpick test
http://bugs.freedesktop.org/show_bug.cgi?id=26419
Signed-off-by: Dave Airlie <airlied@redhat.com>
| -rw-r--r-- | src/mesa/drivers/dri/r600/r700_render.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/r600/r700_render.c b/src/mesa/drivers/dri/r600/r700_render.c index 47f89c9..5d5b107 100644 --- a/src/mesa/drivers/dri/r600/r700_render.c +++ b/src/mesa/drivers/dri/r600/r700_render.c @@ -815,11 +815,10 @@ static void r700SetupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer #if MESA_BIG_ENDIAN if (mesa_ind_buf->type == GL_UNSIGNED_INT) - { #else if (mesa_ind_buf->type != GL_UNSIGNED_BYTE) - { #endif + { const GLvoid *src_ptr; GLvoid *dst_ptr; GLboolean mapped_named_bo = GL_FALSE; @@ -856,6 +855,14 @@ static void r700SetupIndexBuffer(GLcontext *ctx, const struct _mesa_index_buffer } } +static GLboolean check_fallbacks(GLcontext *ctx) +{ + if (ctx->RenderMode != GL_RENDER) + return GL_TRUE; + + return GL_FALSE; +} + static GLboolean r700TryDrawPrims(GLcontext *ctx, const struct gl_client_array *arrays[], const struct _mesa_prim *prim, @@ -872,6 +879,9 @@ static GLboolean r700TryDrawPrims(GLcontext *ctx, if (ctx->NewState) _mesa_update_state( ctx ); + if (check_fallbacks(ctx)) + return GL_FALSE; + _tnl_UpdateFixedFunctionProgram(ctx); r700SetVertexFormat(ctx, arrays, max_index + 1); /* shaders need to be updated before buffers are validated */ @@ -966,8 +976,10 @@ static void r700DrawPrims(GLcontext *ctx, retval = r700TryDrawPrims(ctx, arrays, prim, nr_prims, ib, min_index, max_index); /* If failed run tnl pipeline - it should take care of fallbacks */ - if (!retval) + if (!retval) { + _swsetup_Wakeup(ctx); _tnl_draw_prims(ctx, arrays, prim, nr_prims, ib, min_index, max_index); + } } void r700InitDraw(GLcontext *ctx) |
