i965: Fix texture buffer rendering after a whole buffer replacement.
authorEric Anholt <eric@anholt.net>
Fri, 4 Oct 2013 23:13:00 +0000 (16:13 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 23 Oct 2013 22:31:44 +0000 (15:31 -0700)
If glBufferData(), glBufferSubData(0, obj->Size), or similar happens, we
get a new drm_intel_bo for the buffer object, and thus need to re-upload
texture buffer state so we point at the new data.

Fixes the new piglit GL_ARB_texture_buffer_object/data-sync

Cc: "9.2" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/mesa/drivers/dri/i965/brw_wm_surface_state.c

index e1b5cfccf112f47dabf32ef0a00ceadf7114f003..c7a0be5975056f6e254531b59eecdea68cfbdc14 100644 (file)
@@ -261,6 +261,7 @@ brw_update_texture_surface(struct gl_context *ctx,
    struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, unit);
    uint32_t *surf;
 
+   /* BRW_NEW_UNIFORM_BUFFER */
    if (tObj->Target == GL_TEXTURE_BUFFER) {
       brw_update_buffer_texture_surface(ctx, unit, surf_offset);
       return;
@@ -787,6 +788,7 @@ const struct brw_tracked_state brw_texture_surfaces = {
    .dirty = {
       .mesa = _NEW_TEXTURE,
       .brw = BRW_NEW_BATCH |
+             BRW_NEW_UNIFORM_BUFFER |
              BRW_NEW_VERTEX_PROGRAM |
              BRW_NEW_GEOMETRY_PROGRAM |
              BRW_NEW_FRAGMENT_PROGRAM,