Mesa (master): i965/gen6: Fix segfault in transform feedback to DYNAMIC_DRAW buffers.
Paul Berry
stereotype441 at kemper.freedesktop.org
Wed Jan 25 17:44:27 UTC 2012
Module: Mesa
Branch: master
Commit: 6bc08ee56991ac3ca0fa0728c3907835282332b8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6bc08ee56991ac3ca0fa0728c3907835282332b8
Author: Paul Berry <stereotype441 at gmail.com>
Date: Mon Jan 23 16:11:05 2012 -0800
i965/gen6: Fix segfault in transform feedback to DYNAMIC_DRAW buffers.
When storing data in a buffer of type DYNAMIC_DRAW, we don't create a
drm_intel_bo for it; instead we store the data in system memory and
defer allocation of the GPU buffer until it is needed. Therefore, in
brw_update_sol_surface(), we can't just consult the "buffer" field of
the intel_buffer_object structure; we need to call
intel_bufferobj_buffer() to ensure that the deferred allocation
occurs.
This parallels a similar fix for gen7 (see commit ba6f4c9).
Fixes piglit test EXT_transform_feedback/buffer-usage on gen6.
This is a candidate for the 8.0 release branch.
Reviewed-by: Eric Anholt <eric at anholt.net>
---
src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index 7fd83ea..c77d83a 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -730,7 +730,10 @@ brw_update_sol_surface(struct brw_context *brw,
uint32_t *out_offset, unsigned num_vector_components,
unsigned stride_dwords, unsigned offset_dwords)
{
- drm_intel_bo *bo = intel_buffer_object(buffer_obj)->buffer;
+ struct intel_context *intel = &brw->intel;
+ struct intel_buffer_object *intel_bo = intel_buffer_object(buffer_obj);
+ drm_intel_bo *bo =
+ intel_bufferobj_buffer(intel, intel_bo, INTEL_WRITE_PART);
uint32_t *surf = brw_state_batch(brw, AUB_TRACE_SURFACE_STATE, 6 * 4, 32,
out_offset);
uint32_t pitch_minus_1 = 4*stride_dwords - 1;
More information about the mesa-commit
mailing list