But d3d9_surface->sub_resource_idx is layer * container->level_count + level so view->sub_resource_idx would still be ok, maybe view->depth would be broken instead? But then it would be a problem of layer_count, not layer_idx.
I know I'm somehow abusing wined3d_rendertarget_view_init() and the desc structure but in practice it feels better than storing and passing around an otherwise useless parameter (level idx)
Relevant snippet from wined3d/view.c: struct wined3d_texture *texture = wined3d_texture_from_resource(resource); struct wined3d_resource *sub_resource;
view->sub_resource_idx = desc->u.texture.layer_idx * texture->level_count + desc->u.texture.level_idx; sub_resource = wined3d_texture_get_sub_resource(texture, view->sub_resource_idx);
view->buffer_offset = 0; view->width = sub_resource->width; view->height = sub_resource->height; view->depth = desc->u.texture.layer_count;
Ciao, Riccardo
2015-10-20 17:36 GMT+02:00 Henri Verbeet hverbeet@gmail.com:
On 20 October 2015 at 16:42, Riccardo Bortolato rikyz619@gmail.com wrote:
Is this different from d3d8?
No, it's wrong there too, I just missed it. It happens to work in practice because wined3d_rendertarget_view_init() only uses the value to calculate the sub-resource index, but it would break as soon as we tried to create ARB_texture_view views for wined3d rendertarget views.