renderer: switch hw contexts outside the transfer iov

this fixes a regression since the transfer inline rewrite
macos/master
Dave Airlie 10 years ago
parent 5109a1ff26
commit 5e975c6a2e
  1. 6
      src/vrend_renderer.c

@ -3683,8 +3683,6 @@ static int vrend_renderer_transfer_write_iov(struct vrend_context *ctx,
{ {
void *data; void *data;
vrend_hw_switch_context(vrend_lookup_renderer_ctx(0), TRUE);
if (res->target == 0 && res->ptr) { if (res->target == 0 && res->ptr) {
vrend_read_from_iovec(iov, num_iovs, info->offset, res->ptr + info->box->x, info->box->width); vrend_read_from_iovec(iov, num_iovs, info->offset, res->ptr + info->box->x, info->box->width);
return 0; return 0;
@ -4089,8 +4087,6 @@ static int vrend_renderer_transfer_send_iov(struct vrend_context *ctx,
return 0; return 0;
} }
vrend_hw_switch_context(vrend_lookup_renderer_ctx(0), TRUE);
if (res->target == GL_ELEMENT_ARRAY_BUFFER_ARB || if (res->target == GL_ELEMENT_ARRAY_BUFFER_ARB ||
res->target == GL_ARRAY_BUFFER_ARB || res->target == GL_ARRAY_BUFFER_ARB ||
res->target == GL_TRANSFORM_FEEDBACK_BUFFER || res->target == GL_TRANSFORM_FEEDBACK_BUFFER ||
@ -4169,6 +4165,8 @@ int vrend_renderer_transfer_iov(const struct vrend_transfer_info *info,
if (!check_iov_bounds(res, info, iov, num_iovs)) if (!check_iov_bounds(res, info, iov, num_iovs))
return EINVAL; return EINVAL;
vrend_hw_switch_context(vrend_lookup_renderer_ctx(0), TRUE);
if (transfer_mode == VREND_TRANSFER_WRITE) if (transfer_mode == VREND_TRANSFER_WRITE)
return vrend_renderer_transfer_write_iov(ctx, res, iov, num_iovs, return vrend_renderer_transfer_write_iov(ctx, res, iov, num_iovs,
info); info);

Loading…
Cancel
Save