i965 gen6: Implement transform feedback pause/resume functionality.
Although i965 gen6 does not yet support ARB_transform_feedback2 or NV_transform_feedback2, it needs to support pause/resume functionality so that meta-ops will work correctly. Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -389,7 +389,8 @@ brw_update_primitive_count(struct brw_context *brw,
|
||||
{
|
||||
uint32_t count = count_tessellated_primitives(prim);
|
||||
brw->sol.primitives_generated += count;
|
||||
if (brw->intel.ctx.TransformFeedback.CurrentObject->Active) {
|
||||
if (brw->intel.ctx.TransformFeedback.CurrentObject->Active &&
|
||||
!brw->intel.ctx.TransformFeedback.CurrentObject->Paused) {
|
||||
/* Update brw->sol.svbi_0_max_index to reflect the amount by which the
|
||||
* hardware is going to increment SVBI 0 when this drawing operation
|
||||
* occurs. This is necessary because the kernel does not (yet) save and
|
||||
|
||||
@@ -183,7 +183,8 @@ static void populate_key( struct brw_context *brw,
|
||||
} else if (intel->gen == 6) {
|
||||
/* On Gen6, GS is used for transform feedback. */
|
||||
/* _NEW_TRANSFORM_FEEDBACK */
|
||||
if (ctx->TransformFeedback.CurrentObject->Active) {
|
||||
if (ctx->TransformFeedback.CurrentObject->Active &&
|
||||
!ctx->TransformFeedback.CurrentObject->Paused) {
|
||||
const struct gl_shader_program *shaderprog =
|
||||
ctx->Shader.CurrentVertexProgram;
|
||||
const struct gl_transform_feedback_info *linked_xfb_info =
|
||||
|
||||
@@ -47,7 +47,8 @@ gen6_update_sol_surfaces(struct brw_context *brw)
|
||||
|
||||
for (i = 0; i < BRW_MAX_SOL_BINDINGS; ++i) {
|
||||
const int surf_index = SURF_INDEX_SOL_BINDING(i);
|
||||
if (xfb_obj->Active && i < linked_xfb_info->NumOutputs) {
|
||||
if (xfb_obj->Active && !xfb_obj->Paused &&
|
||||
i < linked_xfb_info->NumOutputs) {
|
||||
unsigned buffer = linked_xfb_info->Outputs[i].OutputBuffer;
|
||||
unsigned buffer_offset =
|
||||
xfb_obj->Offset[buffer] / 4 +
|
||||
|
||||
Reference in New Issue
Block a user