2013/8/26 Stefan Dösinger <stefan(a)codeweavers.com>:
Try 2: *) Require only GPU access for buffers *) Reduce number of checkGLcall invocations *) Remove a return from an ERR case --- dlls/wined3d/utils.c | 1 + dlls/wined3d/volume.c | 168 ++++++++++++++++++++++++++++++++++++----- dlls/wined3d/wined3d_private.h | 7 +- 3 files changed, 157 insertions(+), 19 deletions(-)
+ case WINED3D_LOCATION_BUFFER: + if (!volume->pbo || !(volume->flags & WINED3D_VFLAG_PBO)) + ERR("Trying to load WINED3D_LOCATION_BUFFER without setting it up first.\n"); + + if (volume->locations & WINED3D_LOCATION_DISCARDED) + { + TRACE("Volume previously discarded, nothing to do.\n"); + wined3d_volume_invalidate_location(volume, WINED3D_LOCATION_DISCARDED); + } + else if (volume->locations & WINED3D_LOCATION_TEXTURE_RGB) + { + struct wined3d_bo_address data = {volume->pbo, NULL}; + volume_bind_and_dirtify(volume, context); + wined3d_volume_download_data(volume, context, &data); + } + else + { + FIXME("Implement WINED3D_LOCATION_SYSMEM loading from %s.\n", + wined3d_debug_location(volume->locations)); + return; + } + wined3d_volume_validate_location(volume, WINED3D_LOCATION_BUFFER); + break; +
Not really an actual review, but that FIXME looks wrong (copy-paste remnant probably).