wined3d: Introduce wined3d_texture_load_location().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
9b7ff40d7e
commit
3b61af6306
|
@ -174,6 +174,14 @@ void wined3d_texture_invalidate_location(struct wined3d_texture *texture,
|
||||||
sub_resource_idx, texture);
|
sub_resource_idx, texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Context activation is done by the caller. Context may be NULL in
|
||||||
|
* WINED3D_NO3D mode. */
|
||||||
|
static BOOL wined3d_texture_load_location(struct wined3d_texture *texture,
|
||||||
|
unsigned int sub_resource_idx, struct wined3d_context *context, DWORD location)
|
||||||
|
{
|
||||||
|
return texture->texture_ops->texture_load_location(texture, sub_resource_idx, context, location);
|
||||||
|
}
|
||||||
|
|
||||||
/* Context activation is done by the caller. */
|
/* Context activation is done by the caller. */
|
||||||
void *wined3d_texture_map_bo_address(const struct wined3d_bo_address *data, size_t size,
|
void *wined3d_texture_map_bo_address(const struct wined3d_bo_address *data, size_t size,
|
||||||
const struct wined3d_gl_info *gl_info, GLenum binding, DWORD flags)
|
const struct wined3d_gl_info *gl_info, GLenum binding, DWORD flags)
|
||||||
|
@ -352,7 +360,7 @@ static void wined3d_texture_update_map_binding(struct wined3d_texture *texture)
|
||||||
for (i = 0; i < sub_count; ++i)
|
for (i = 0; i < sub_count; ++i)
|
||||||
{
|
{
|
||||||
if (texture->sub_resources[i].locations == texture->resource.map_binding
|
if (texture->sub_resources[i].locations == texture->resource.map_binding
|
||||||
&& !texture->texture_ops->texture_load_location(texture, i, context, map_binding))
|
&& !wined3d_texture_load_location(texture, i, context, map_binding))
|
||||||
ERR("Failed to load location %s.\n", wined3d_debug_location(map_binding));
|
ERR("Failed to load location %s.\n", wined3d_debug_location(map_binding));
|
||||||
if (texture->resource.map_binding == WINED3D_LOCATION_BUFFER)
|
if (texture->resource.map_binding == WINED3D_LOCATION_BUFFER)
|
||||||
wined3d_texture_remove_buffer_object(texture, i, context->gl_info);
|
wined3d_texture_remove_buffer_object(texture, i, context->gl_info);
|
||||||
|
@ -914,7 +922,7 @@ void wined3d_texture_load(struct wined3d_texture *texture,
|
||||||
TRACE("Reloading because of color key value change.\n");
|
TRACE("Reloading because of color key value change.\n");
|
||||||
for (i = 0; i < sub_count; i++)
|
for (i = 0; i < sub_count; i++)
|
||||||
{
|
{
|
||||||
if (!texture->texture_ops->texture_load_location(texture, i, context, texture->resource.map_binding))
|
if (!wined3d_texture_load_location(texture, i, context, texture->resource.map_binding))
|
||||||
ERR("Failed to load location %s.\n", wined3d_debug_location(texture->resource.map_binding));
|
ERR("Failed to load location %s.\n", wined3d_debug_location(texture->resource.map_binding));
|
||||||
else
|
else
|
||||||
wined3d_texture_invalidate_location(texture, i, ~texture->resource.map_binding);
|
wined3d_texture_invalidate_location(texture, i, ~texture->resource.map_binding);
|
||||||
|
@ -932,7 +940,7 @@ void wined3d_texture_load(struct wined3d_texture *texture,
|
||||||
/* Reload the surfaces if the texture is marked dirty. */
|
/* Reload the surfaces if the texture is marked dirty. */
|
||||||
for (i = 0; i < sub_count; ++i)
|
for (i = 0; i < sub_count; ++i)
|
||||||
{
|
{
|
||||||
if (!texture->texture_ops->texture_load_location(texture, i, context,
|
if (!wined3d_texture_load_location(texture, i, context,
|
||||||
srgb ? WINED3D_LOCATION_TEXTURE_SRGB : WINED3D_LOCATION_TEXTURE_RGB))
|
srgb ? WINED3D_LOCATION_TEXTURE_SRGB : WINED3D_LOCATION_TEXTURE_RGB))
|
||||||
ERR("Failed to load location (srgb %#x).\n", srgb);
|
ERR("Failed to load location (srgb %#x).\n", srgb);
|
||||||
}
|
}
|
||||||
|
@ -1413,8 +1421,7 @@ HRESULT CDECL wined3d_texture_add_dirty_region(struct wined3d_texture *texture,
|
||||||
FIXME("Ignoring dirty_region %s.\n", debug_box(dirty_region));
|
FIXME("Ignoring dirty_region %s.\n", debug_box(dirty_region));
|
||||||
|
|
||||||
context = context_acquire(texture->resource.device, NULL);
|
context = context_acquire(texture->resource.device, NULL);
|
||||||
if (!texture->texture_ops->texture_load_location(texture, sub_resource_idx,
|
if (!wined3d_texture_load_location(texture, sub_resource_idx, context, texture->resource.map_binding))
|
||||||
context, texture->resource.map_binding))
|
|
||||||
{
|
{
|
||||||
ERR("Failed to load location %s.\n", wined3d_debug_location(texture->resource.map_binding));
|
ERR("Failed to load location %s.\n", wined3d_debug_location(texture->resource.map_binding));
|
||||||
context_release(context);
|
context_release(context);
|
||||||
|
@ -1591,7 +1598,7 @@ static void wined3d_texture_unload(struct wined3d_resource *resource)
|
||||||
struct wined3d_texture_sub_resource *sub_resource = &texture->sub_resources[i];
|
struct wined3d_texture_sub_resource *sub_resource = &texture->sub_resources[i];
|
||||||
|
|
||||||
if (resource->pool != WINED3D_POOL_DEFAULT
|
if (resource->pool != WINED3D_POOL_DEFAULT
|
||||||
&& texture->texture_ops->texture_load_location(texture, i, context, resource->map_binding))
|
&& wined3d_texture_load_location(texture, i, context, resource->map_binding))
|
||||||
{
|
{
|
||||||
wined3d_texture_invalidate_location(texture, i, ~resource->map_binding);
|
wined3d_texture_invalidate_location(texture, i, ~resource->map_binding);
|
||||||
}
|
}
|
||||||
|
@ -1710,8 +1717,7 @@ static HRESULT texture_resource_sub_resource_map(struct wined3d_resource *resour
|
||||||
{
|
{
|
||||||
if (resource->usage & WINED3DUSAGE_DYNAMIC)
|
if (resource->usage & WINED3DUSAGE_DYNAMIC)
|
||||||
WARN_(d3d_perf)("Mapping a dynamic texture without WINED3D_MAP_DISCARD.\n");
|
WARN_(d3d_perf)("Mapping a dynamic texture without WINED3D_MAP_DISCARD.\n");
|
||||||
ret = texture->texture_ops->texture_load_location(texture,
|
ret = wined3d_texture_load_location(texture, sub_resource_idx, context, texture->resource.map_binding);
|
||||||
sub_resource_idx, context, texture->resource.map_binding);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
|
|
Loading…
Reference in New Issue