OSDN Git Service

i965/gen6: Fix segfault in transform feedback to DYNAMIC_DRAW buffers.
authorPaul Berry <stereotype441@gmail.com>
Tue, 24 Jan 2012 00:11:05 +0000 (16:11 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Thu, 2 Feb 2012 18:39:28 +0000 (11:39 -0700)
commit0e08205421c88d19a8a8955bc27602444df6a0ab
treee21ebaf2c78815accddb8854ce046244889b7cc0
parentcc27a42b6f268cfa8fb6021ed0e12789cc51ac92
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@anholt.net>
(cherry picked from commit 6bc08ee56991ac3ca0fa0728c3907835282332b8)
src/mesa/drivers/dri/i965/brw_wm_surface_state.c