On 4 November 2015 at 13:10, Stefan Dösinger stefandoesinger@gmail.com wrote:
I'm also happy to keep the prepare call inside load_location, which would just mean dropping patch 3. Right now it's a mix of the caller being responsible (sysmem, renderbuffers) and surface_load_location being responsible (texture). I don't think that's what we want.
The caller is not responsible in case of renderbuffers. The general rule is that if you're going to be reading/writing from/to a location you need to call either load_location() or prepare_location(). The sysmem handling does indeed violate that in some places, those are bugs.
Your reading of the logs is correct, although the surface is in sysmem, not discarded. But the renderbuffer init problem existed
Well yes, but perhaps it should be in WINED3D_LOCATION_DISCARDED.
I could implement uploads from sysmem (going through a non-multisampled texture or using glDrawPixels), but what we probably really want is some sort of WINED3D_LOCATION_ZEROED location that will init whatever location is used first to zero (probably using
We'll want that at some point, but I seem to recall that the initial contents of multisample surfaces is undefined. If it isn't it should only be a couple of lines to add support for WINED3D_LOCATION_RB_MULTISAMPLE to surface_load_location().