wined3d: Pass around the context instead of gl_info.
This commit is contained in:
parent
be8ea9c36e
commit
e53ae83d74
|
@ -7064,13 +7064,14 @@ static GLuint gen_yuv_shader(struct arbfp_blit_priv *priv, const struct wined3d_
|
|||
}
|
||||
|
||||
/* Context activation is done by the caller. */
|
||||
static HRESULT arbfp_blit_set(void *blit_priv, const struct wined3d_gl_info *gl_info, struct wined3d_surface *surface)
|
||||
static HRESULT arbfp_blit_set(void *blit_priv, struct wined3d_context *context, struct wined3d_surface *surface)
|
||||
{
|
||||
GLenum shader;
|
||||
float size[4] = {(float) surface->pow2Width, (float) surface->pow2Height, 1.0f, 1.0f};
|
||||
struct arbfp_blit_priv *priv = blit_priv;
|
||||
enum complex_fixup fixup;
|
||||
GLenum textype = surface->texture_target;
|
||||
const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||
|
||||
if (!is_complex_fixup(surface->resource.format->color_fixup))
|
||||
{
|
||||
|
@ -7228,7 +7229,7 @@ HRESULT arbfp_blit_surface(struct wined3d_device *device, DWORD filter,
|
|||
if (!surface_is_offscreen(dst_surface))
|
||||
surface_translate_drawable_coords(dst_surface, context->win_handle, &dst_rect);
|
||||
|
||||
arbfp_blit_set(device->blit_priv, context->gl_info, src_surface);
|
||||
arbfp_blit_set(device->blit_priv, context, src_surface);
|
||||
|
||||
ENTER_GL();
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ static void context_destroy_fbo(struct wined3d_context *context, GLuint *fbo)
|
|||
}
|
||||
|
||||
/* GL locking is done by the caller */
|
||||
static void context_attach_depth_stencil_fbo(const struct wined3d_context *context,
|
||||
static void context_attach_depth_stencil_fbo(struct wined3d_context *context,
|
||||
GLenum fbo_target, struct wined3d_surface *depth_stencil)
|
||||
{
|
||||
const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||
|
@ -141,7 +141,7 @@ static void context_attach_depth_stencil_fbo(const struct wined3d_context *conte
|
|||
}
|
||||
else
|
||||
{
|
||||
surface_prepare_texture(depth_stencil, gl_info, FALSE);
|
||||
surface_prepare_texture(depth_stencil, context, FALSE);
|
||||
|
||||
if (format_flags & WINED3DFMT_FLAG_DEPTH)
|
||||
{
|
||||
|
@ -183,7 +183,7 @@ static void context_attach_depth_stencil_fbo(const struct wined3d_context *conte
|
|||
}
|
||||
|
||||
/* GL locking is done by the caller */
|
||||
static void context_attach_surface_fbo(const struct wined3d_context *context,
|
||||
static void context_attach_surface_fbo(struct wined3d_context *context,
|
||||
GLenum fbo_target, DWORD idx, struct wined3d_surface *surface, DWORD location)
|
||||
{
|
||||
const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||
|
@ -199,7 +199,7 @@ static void context_attach_surface_fbo(const struct wined3d_context *context,
|
|||
case SFLAG_INTEXTURE:
|
||||
case SFLAG_INSRGBTEX:
|
||||
srgb = location == SFLAG_INSRGBTEX;
|
||||
surface_prepare_texture(surface, gl_info, srgb);
|
||||
surface_prepare_texture(surface, context, srgb);
|
||||
gl_info->fbo_ops.glFramebufferTexture2D(fbo_target, GL_COLOR_ATTACHMENT0 + idx,
|
||||
surface->texture_target, surface_get_texture_name(surface, gl_info, srgb),
|
||||
surface->texture_level);
|
||||
|
|
|
@ -4841,10 +4841,10 @@ HRESULT CDECL wined3d_device_update_surface(struct wined3d_device *device,
|
|||
* the texture wouldn't be the current location, and we'd upload zeroes
|
||||
* just to overwrite them again. */
|
||||
if (update_w == dst_w && update_h == dst_h)
|
||||
surface_prepare_texture(dst_surface, gl_info, FALSE);
|
||||
surface_prepare_texture(dst_surface, context, FALSE);
|
||||
else
|
||||
surface_load_location(dst_surface, SFLAG_INTEXTURE, NULL);
|
||||
surface_bind(dst_surface, gl_info, FALSE);
|
||||
surface_bind(dst_surface, context, FALSE);
|
||||
|
||||
data.buffer_object = 0;
|
||||
data.addr = src_surface->resource.allocatedMemory;
|
||||
|
|
|
@ -3546,7 +3546,7 @@ static void sampler(struct wined3d_context *context, const struct wined3d_state
|
|||
struct wined3d_texture *texture = state->textures[sampler];
|
||||
BOOL srgb = state->sampler_states[sampler][WINED3DSAMP_SRGBTEXTURE];
|
||||
|
||||
texture->texture_ops->texture_bind(texture, gl_info, srgb);
|
||||
texture->texture_ops->texture_bind(texture, context, srgb);
|
||||
wined3d_texture_apply_state_changes(texture, state->sampler_states[sampler], gl_info);
|
||||
|
||||
if (gl_info->supported[EXT_TEXTURE_LOD_BIAS])
|
||||
|
|
|
@ -590,7 +590,7 @@ static void surface_evict_sysmem(struct wined3d_surface *surface)
|
|||
|
||||
/* Context activation is done by the caller. */
|
||||
static void surface_bind_and_dirtify(struct wined3d_surface *surface,
|
||||
const struct wined3d_gl_info *gl_info, BOOL srgb)
|
||||
struct wined3d_context *context, BOOL srgb)
|
||||
{
|
||||
struct wined3d_device *device = surface->resource.device;
|
||||
DWORD active_sampler;
|
||||
|
@ -616,7 +616,7 @@ static void surface_bind_and_dirtify(struct wined3d_surface *surface,
|
|||
|
||||
if (active_sampler != WINED3D_UNMAPPED_STAGE)
|
||||
device_invalidate_state(device, STATE_SAMPLER(active_sampler));
|
||||
surface_bind(surface, gl_info, srgb);
|
||||
surface_bind(surface, context, srgb);
|
||||
}
|
||||
|
||||
static void surface_force_reload(struct wined3d_surface *surface)
|
||||
|
@ -632,13 +632,13 @@ static void surface_release_client_storage(struct wined3d_surface *surface)
|
|||
glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_FALSE);
|
||||
if (surface->texture_name)
|
||||
{
|
||||
surface_bind_and_dirtify(surface, context->gl_info, FALSE);
|
||||
surface_bind_and_dirtify(surface, context, FALSE);
|
||||
glTexImage2D(surface->texture_target, surface->texture_level,
|
||||
GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
|
||||
}
|
||||
if (surface->texture_name_srgb)
|
||||
{
|
||||
surface_bind_and_dirtify(surface, context->gl_info, TRUE);
|
||||
surface_bind_and_dirtify(surface, context, TRUE);
|
||||
glTexImage2D(surface->texture_target, surface->texture_level,
|
||||
GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
|
||||
}
|
||||
|
@ -2222,16 +2222,16 @@ void surface_set_texture_target(struct wined3d_surface *surface, GLenum target)
|
|||
}
|
||||
|
||||
/* Context activation is done by the caller. */
|
||||
void surface_bind(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info, BOOL srgb)
|
||||
void surface_bind(struct wined3d_surface *surface, struct wined3d_context *context, BOOL srgb)
|
||||
{
|
||||
TRACE("surface %p, gl_info %p, srgb %#x.\n", surface, gl_info, srgb);
|
||||
TRACE("surface %p, context %p, srgb %#x.\n", surface, context, srgb);
|
||||
|
||||
if (surface->container.type == WINED3D_CONTAINER_TEXTURE)
|
||||
{
|
||||
struct wined3d_texture *texture = surface->container.u.texture;
|
||||
|
||||
TRACE("Passing to container (%p).\n", texture);
|
||||
texture->texture_ops->texture_bind(texture, gl_info, srgb);
|
||||
texture->texture_ops->texture_bind(texture, context, srgb);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -4202,8 +4202,8 @@ static void read_from_framebuffer_texture(struct wined3d_surface *surface, BOOL
|
|||
gl_info = context->gl_info;
|
||||
device_invalidate_state(device, STATE_FRAMEBUFFER);
|
||||
|
||||
surface_prepare_texture(surface, gl_info, srgb);
|
||||
surface_bind_and_dirtify(surface, gl_info, srgb);
|
||||
surface_prepare_texture(surface, context, srgb);
|
||||
surface_bind_and_dirtify(surface, context, srgb);
|
||||
|
||||
TRACE("Reading back offscreen render target %p.\n", surface);
|
||||
|
||||
|
@ -4223,7 +4223,7 @@ static void read_from_framebuffer_texture(struct wined3d_surface *surface, BOOL
|
|||
|
||||
/* Context activation is done by the caller. */
|
||||
static void surface_prepare_texture_internal(struct wined3d_surface *surface,
|
||||
const struct wined3d_gl_info *gl_info, BOOL srgb)
|
||||
struct wined3d_context *context, BOOL srgb)
|
||||
{
|
||||
DWORD alloc_flag = srgb ? SFLAG_SRGBALLOCATED : SFLAG_ALLOCATED;
|
||||
CONVERT_TYPES convert;
|
||||
|
@ -4235,13 +4235,13 @@ static void surface_prepare_texture_internal(struct wined3d_surface *surface,
|
|||
if (convert != NO_CONVERSION || format.convert) surface->flags |= SFLAG_CONVERTED;
|
||||
else surface->flags &= ~SFLAG_CONVERTED;
|
||||
|
||||
surface_bind_and_dirtify(surface, gl_info, srgb);
|
||||
surface_allocate_surface(surface, gl_info, &format, srgb);
|
||||
surface_bind_and_dirtify(surface, context, srgb);
|
||||
surface_allocate_surface(surface, context->gl_info, &format, srgb);
|
||||
surface->flags |= alloc_flag;
|
||||
}
|
||||
|
||||
/* Context activation is done by the caller. */
|
||||
void surface_prepare_texture(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info, BOOL srgb)
|
||||
void surface_prepare_texture(struct wined3d_surface *surface, struct wined3d_context *context, BOOL srgb)
|
||||
{
|
||||
if (surface->container.type == WINED3D_CONTAINER_TEXTURE)
|
||||
{
|
||||
|
@ -4254,13 +4254,13 @@ void surface_prepare_texture(struct wined3d_surface *surface, const struct wined
|
|||
for (i = 0; i < sub_count; ++i)
|
||||
{
|
||||
struct wined3d_surface *s = surface_from_resource(texture->sub_resources[i]);
|
||||
surface_prepare_texture_internal(s, gl_info, srgb);
|
||||
surface_prepare_texture_internal(s, context, srgb);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
surface_prepare_texture_internal(surface, gl_info, srgb);
|
||||
surface_prepare_texture_internal(surface, context, srgb);
|
||||
}
|
||||
|
||||
static void flush_to_framebuffer_drawpixels(struct wined3d_surface *surface,
|
||||
|
@ -5230,7 +5230,7 @@ static void surface_blt_to_drawable(struct wined3d_device *device,
|
|||
if (!surface_is_offscreen(dst_surface))
|
||||
surface_translate_drawable_coords(dst_surface, context->win_handle, &dst_rect);
|
||||
|
||||
device->blitter->set_shader(device->blit_priv, context->gl_info, src_surface);
|
||||
device->blitter->set_shader(device->blit_priv, context, src_surface);
|
||||
|
||||
ENTER_GL();
|
||||
|
||||
|
@ -5577,10 +5577,11 @@ static HRESULT IWineD3DSurfaceImpl_BltOverride(struct wined3d_surface *dst_surfa
|
|||
}
|
||||
|
||||
/* GL locking is done by the caller */
|
||||
static void surface_depth_blt(const struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info,
|
||||
static void surface_depth_blt(const struct wined3d_surface *surface, struct wined3d_context *context,
|
||||
GLuint texture, GLint x, GLint y, GLsizei w, GLsizei h, GLenum target)
|
||||
{
|
||||
struct wined3d_device *device = surface->resource.device;
|
||||
const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||
GLint compare_mode = GL_NONE;
|
||||
struct blt_info info;
|
||||
GLint old_binding = 0;
|
||||
|
@ -5650,7 +5651,6 @@ void surface_modify_ds_location(struct wined3d_surface *surface,
|
|||
void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_context *context, DWORD location)
|
||||
{
|
||||
struct wined3d_device *device = surface->resource.device;
|
||||
const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||
GLsizei w, h;
|
||||
|
||||
TRACE("surface %p, new location %#x.\n", surface, location);
|
||||
|
@ -5756,7 +5756,7 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co
|
|||
glReadBuffer(GL_NONE);
|
||||
|
||||
/* Do the actual blit */
|
||||
surface_depth_blt(surface, gl_info, device->depth_blt_texture, 0, 0, w, h, bind_target);
|
||||
surface_depth_blt(surface, context, device->depth_blt_texture, 0, 0, w, h, bind_target);
|
||||
checkGLcall("depth_blt");
|
||||
|
||||
context_invalidate_state(context, STATE_FRAMEBUFFER);
|
||||
|
@ -5773,7 +5773,7 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co
|
|||
|
||||
context_apply_fbo_state_blit(context, GL_FRAMEBUFFER,
|
||||
context->swapchain->front_buffer, NULL, SFLAG_INDRAWABLE);
|
||||
surface_depth_blt(surface, gl_info, surface->texture_name,
|
||||
surface_depth_blt(surface, context, surface->texture_name,
|
||||
0, surface->pow2Height - h, w, h, surface->texture_target);
|
||||
checkGLcall("depth_blt");
|
||||
|
||||
|
@ -5894,7 +5894,7 @@ static void surface_load_sysmem(struct wined3d_surface *surface,
|
|||
/* TODO: Use already acquired context when possible. */
|
||||
context = context_acquire(device, NULL);
|
||||
|
||||
surface_bind_and_dirtify(surface, gl_info, !(surface->flags & SFLAG_INTEXTURE));
|
||||
surface_bind_and_dirtify(surface, context, !(surface->flags & SFLAG_INTEXTURE));
|
||||
surface_download_data(surface, gl_info);
|
||||
|
||||
context_release(context);
|
||||
|
@ -6069,8 +6069,8 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface,
|
|||
/* TODO: Use already acquired context when possible. */
|
||||
context = context_acquire(device, NULL);
|
||||
|
||||
surface_prepare_texture(surface, gl_info, srgb);
|
||||
surface_bind_and_dirtify(surface, gl_info, srgb);
|
||||
surface_prepare_texture(surface, context, srgb);
|
||||
surface_bind_and_dirtify(surface, context, srgb);
|
||||
|
||||
if (surface->CKeyFlags & WINEDDSD_CKSRCBLT)
|
||||
{
|
||||
|
@ -6289,15 +6289,15 @@ static void ffp_blit_p8_upload_palette(const struct wined3d_surface *surface, co
|
|||
}
|
||||
|
||||
/* Context activation is done by the caller. */
|
||||
static HRESULT ffp_blit_set(void *blit_priv, const struct wined3d_gl_info *gl_info, struct wined3d_surface *surface)
|
||||
static HRESULT ffp_blit_set(void *blit_priv, struct wined3d_context *context, struct wined3d_surface *surface)
|
||||
{
|
||||
enum complex_fixup fixup = get_complex_fixup(surface->resource.format->color_fixup);
|
||||
|
||||
/* When EXT_PALETTED_TEXTURE is around, palette conversion is done by the GPU
|
||||
* else the surface is converted in software at upload time in LoadLocation.
|
||||
*/
|
||||
if(fixup == COMPLEX_FIXUP_P8 && gl_info->supported[EXT_PALETTED_TEXTURE])
|
||||
ffp_blit_p8_upload_palette(surface, gl_info);
|
||||
if(fixup == COMPLEX_FIXUP_P8 && context->gl_info->supported[EXT_PALETTED_TEXTURE])
|
||||
ffp_blit_p8_upload_palette(surface, context->gl_info);
|
||||
|
||||
ENTER_GL();
|
||||
glEnable(surface->texture_target);
|
||||
|
@ -6438,7 +6438,7 @@ static void cpu_blit_free(struct wined3d_device *device)
|
|||
}
|
||||
|
||||
/* Context activation is done by the caller. */
|
||||
static HRESULT cpu_blit_set(void *blit_priv, const struct wined3d_gl_info *gl_info, struct wined3d_surface *surface)
|
||||
static HRESULT cpu_blit_set(void *blit_priv, struct wined3d_context *context, struct wined3d_surface *surface)
|
||||
{
|
||||
return WINED3D_OK;
|
||||
}
|
||||
|
|
|
@ -354,7 +354,7 @@ static void swapchain_blit(const struct wined3d_swapchain *swapchain,
|
|||
|
||||
/* Set up the texture. The surface is not in a wined3d_texture
|
||||
* container, so there are no D3D texture settings to dirtify. */
|
||||
device->blitter->set_shader(device->blit_priv, context2->gl_info, backbuffer);
|
||||
device->blitter->set_shader(device->blit_priv, context2, backbuffer);
|
||||
glTexParameteri(backbuffer->texture_target, GL_TEXTURE_MIN_FILTER, gl_filter);
|
||||
glTexParameteri(backbuffer->texture_target, GL_TEXTURE_MAG_FILTER, gl_filter);
|
||||
|
||||
|
|
|
@ -133,14 +133,14 @@ void wined3d_texture_set_dirty(struct wined3d_texture *texture, BOOL dirty)
|
|||
|
||||
/* Context activation is done by the caller. */
|
||||
static HRESULT wined3d_texture_bind(struct wined3d_texture *texture,
|
||||
const struct wined3d_gl_info *gl_info, BOOL srgb, BOOL *set_surface_desc)
|
||||
struct wined3d_context *context, BOOL srgb, BOOL *set_surface_desc)
|
||||
{
|
||||
struct gl_texture *gl_tex;
|
||||
BOOL new_texture = FALSE;
|
||||
HRESULT hr = WINED3D_OK;
|
||||
GLenum target;
|
||||
|
||||
TRACE("texture %p, srgb %#x, set_surface_desc %p.\n", texture, srgb, set_surface_desc);
|
||||
TRACE("texture %p, context %p, srgb %#x, set_surface_desc %p.\n", texture, context, srgb, set_surface_desc);
|
||||
|
||||
/* sRGB mode cache for preload() calls outside drawprim. */
|
||||
if (srgb)
|
||||
|
@ -148,7 +148,7 @@ static HRESULT wined3d_texture_bind(struct wined3d_texture *texture,
|
|||
else
|
||||
texture->flags &= ~WINED3D_TEXTURE_IS_SRGB;
|
||||
|
||||
gl_tex = wined3d_texture_get_gl_texture(texture, gl_info, srgb);
|
||||
gl_tex = wined3d_texture_get_gl_texture(texture, context->gl_info, srgb);
|
||||
target = texture->target;
|
||||
|
||||
ENTER_GL();
|
||||
|
@ -176,7 +176,7 @@ static HRESULT wined3d_texture_bind(struct wined3d_texture *texture,
|
|||
gl_tex->states[WINED3DTEXSTA_MIPFILTER] = WINED3DTEXF_LINEAR; /* GL_NEAREST_MIPMAP_LINEAR */
|
||||
gl_tex->states[WINED3DTEXSTA_MAXMIPLEVEL] = 0;
|
||||
gl_tex->states[WINED3DTEXSTA_MAXANISOTROPY] = 1;
|
||||
if (gl_info->supported[EXT_TEXTURE_SRGB_DECODE])
|
||||
if (context->gl_info->supported[EXT_TEXTURE_SRGB_DECODE])
|
||||
gl_tex->states[WINED3DTEXSTA_SRGBTEXTURE] = TRUE;
|
||||
else
|
||||
gl_tex->states[WINED3DTEXSTA_SRGBTEXTURE] = srgb;
|
||||
|
@ -590,23 +590,23 @@ HRESULT CDECL wined3d_texture_add_dirty_region(struct wined3d_texture *texture,
|
|||
|
||||
/* Context activation is done by the caller. */
|
||||
static HRESULT texture2d_bind(struct wined3d_texture *texture,
|
||||
const struct wined3d_gl_info *gl_info, BOOL srgb)
|
||||
struct wined3d_context *context, BOOL srgb)
|
||||
{
|
||||
BOOL set_gl_texture_desc;
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("texture %p, gl_info %p, srgb %#x.\n", texture, gl_info, srgb);
|
||||
TRACE("texture %p, context %p, srgb %#x.\n", texture, context, srgb);
|
||||
|
||||
hr = wined3d_texture_bind(texture, gl_info, srgb, &set_gl_texture_desc);
|
||||
hr = wined3d_texture_bind(texture, context, srgb, &set_gl_texture_desc);
|
||||
if (set_gl_texture_desc && SUCCEEDED(hr))
|
||||
{
|
||||
UINT sub_count = texture->level_count * texture->layer_count;
|
||||
BOOL srgb_tex = !gl_info->supported[EXT_TEXTURE_SRGB_DECODE]
|
||||
BOOL srgb_tex = !context->gl_info->supported[EXT_TEXTURE_SRGB_DECODE]
|
||||
&& (texture->flags & WINED3D_TEXTURE_IS_SRGB);
|
||||
struct gl_texture *gl_tex;
|
||||
UINT i;
|
||||
|
||||
gl_tex = wined3d_texture_get_gl_texture(texture, gl_info, srgb_tex);
|
||||
gl_tex = wined3d_texture_get_gl_texture(texture, context->gl_info, srgb_tex);
|
||||
|
||||
for (i = 0; i < sub_count; ++i)
|
||||
{
|
||||
|
@ -1055,13 +1055,13 @@ static HRESULT texture_init(struct wined3d_texture *texture, UINT width, UINT he
|
|||
|
||||
/* Context activation is done by the caller. */
|
||||
static HRESULT texture3d_bind(struct wined3d_texture *texture,
|
||||
const struct wined3d_gl_info *gl_info, BOOL srgb)
|
||||
struct wined3d_context *context, BOOL srgb)
|
||||
{
|
||||
BOOL dummy;
|
||||
|
||||
TRACE("texture %p, gl_info %p, srgb %#x.\n", texture, gl_info, srgb);
|
||||
TRACE("texture %p, context %p, srgb %#x.\n", texture, context, srgb);
|
||||
|
||||
return wined3d_texture_bind(texture, gl_info, srgb, &dummy);
|
||||
return wined3d_texture_bind(texture, context, srgb, &dummy);
|
||||
}
|
||||
|
||||
/* Do not call while under the GL lock. */
|
||||
|
@ -1097,7 +1097,7 @@ static void texture3d_preload(struct wined3d_texture *texture, enum WINED3DSRGB
|
|||
{
|
||||
for (i = 0; i < texture->level_count; ++i)
|
||||
{
|
||||
volume_load(volume_from_resource(texture->sub_resources[i]), i,
|
||||
volume_load(volume_from_resource(texture->sub_resources[i]), context, i,
|
||||
texture->flags & WINED3D_TEXTURE_IS_SRGB);
|
||||
}
|
||||
}
|
||||
|
@ -1107,7 +1107,7 @@ static void texture3d_preload(struct wined3d_texture *texture, enum WINED3DSRGB
|
|||
{
|
||||
struct wined3d_volume *volume = volume_from_resource(texture->sub_resources[i]);
|
||||
volume_add_dirty_box(volume, NULL);
|
||||
volume_load(volume, i, texture->flags & WINED3D_TEXTURE_IS_SRGB);
|
||||
volume_load(volume, context, i, texture->flags & WINED3D_TEXTURE_IS_SRGB);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
WINE_DEFAULT_DEBUG_CHANNEL(d3d_surface);
|
||||
|
||||
/* Context activation is done by the caller. */
|
||||
static void volume_bind_and_dirtify(const struct wined3d_volume *volume, const struct wined3d_gl_info *gl_info)
|
||||
static void volume_bind_and_dirtify(const struct wined3d_volume *volume, struct wined3d_context *context)
|
||||
{
|
||||
struct wined3d_texture *container = volume->container;
|
||||
DWORD active_sampler;
|
||||
|
@ -41,7 +41,7 @@ static void volume_bind_and_dirtify(const struct wined3d_volume *volume, const s
|
|||
*
|
||||
* TODO: Track the current active texture per GL context instead of using glGet
|
||||
*/
|
||||
if (gl_info->supported[ARB_MULTITEXTURE])
|
||||
if (context->gl_info->supported[ARB_MULTITEXTURE])
|
||||
{
|
||||
GLint active_texture;
|
||||
ENTER_GL();
|
||||
|
@ -55,7 +55,7 @@ static void volume_bind_and_dirtify(const struct wined3d_volume *volume, const s
|
|||
if (active_sampler != WINED3D_UNMAPPED_STAGE)
|
||||
device_invalidate_state(volume->resource.device, STATE_SAMPLER(active_sampler));
|
||||
|
||||
container->texture_ops->texture_bind(container, gl_info, FALSE);
|
||||
container->texture_ops->texture_bind(container, context, FALSE);
|
||||
}
|
||||
|
||||
void volume_add_dirty_box(struct wined3d_volume *volume, const WINED3DBOX *dirty_box)
|
||||
|
@ -89,15 +89,15 @@ void volume_set_container(struct wined3d_volume *volume, struct wined3d_texture
|
|||
}
|
||||
|
||||
/* Context activation is done by the caller. */
|
||||
void volume_load(const struct wined3d_volume *volume, UINT level, BOOL srgb_mode)
|
||||
void volume_load(const struct wined3d_volume *volume, struct wined3d_context *context, UINT level, BOOL srgb_mode)
|
||||
{
|
||||
const struct wined3d_gl_info *gl_info = &volume->resource.device->adapter->gl_info;
|
||||
const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||
const struct wined3d_format *format = volume->resource.format;
|
||||
|
||||
TRACE("volume %p, level %u, srgb %#x, format %s (%#x).\n",
|
||||
volume, level, srgb_mode, debug_d3dformat(format->id), format->id);
|
||||
TRACE("volume %p, context %p, level %u, srgb %#x, format %s (%#x).\n",
|
||||
volume, context, level, srgb_mode, debug_d3dformat(format->id), format->id);
|
||||
|
||||
volume_bind_and_dirtify(volume, gl_info);
|
||||
volume_bind_and_dirtify(volume, context);
|
||||
|
||||
ENTER_GL();
|
||||
GL_EXTCALL(glTexImage3DEXT(GL_TEXTURE_3D, level, format->glInternal,
|
||||
|
|
|
@ -1198,7 +1198,7 @@ struct blit_shader
|
|||
{
|
||||
HRESULT (*alloc_private)(struct wined3d_device *device);
|
||||
void (*free_private)(struct wined3d_device *device);
|
||||
HRESULT (*set_shader)(void *blit_priv, const struct wined3d_gl_info *gl_info, struct wined3d_surface *surface);
|
||||
HRESULT (*set_shader)(void *blit_priv, struct wined3d_context *context, struct wined3d_surface *surface);
|
||||
void (*unset_shader)(const struct wined3d_gl_info *gl_info);
|
||||
BOOL (*blit_supported)(const struct wined3d_gl_info *gl_info, enum wined3d_blit_op blit_op,
|
||||
const RECT *src_rect, DWORD src_usage, WINED3DPOOL src_pool, const struct wined3d_format *src_format,
|
||||
|
@ -1853,7 +1853,7 @@ struct gl_texture
|
|||
struct wined3d_texture_ops
|
||||
{
|
||||
HRESULT (*texture_bind)(struct wined3d_texture *texture,
|
||||
const struct wined3d_gl_info *gl_info, BOOL srgb);
|
||||
struct wined3d_context *context, BOOL srgb);
|
||||
void (*texture_preload)(struct wined3d_texture *texture, enum WINED3DSRGB srgb);
|
||||
void (*texture_sub_resource_add_dirty_region)(struct wined3d_resource *sub_resource,
|
||||
const WINED3DBOX *dirty_region);
|
||||
|
@ -1917,7 +1917,7 @@ static inline struct wined3d_volume *volume_from_resource(struct wined3d_resourc
|
|||
}
|
||||
|
||||
void volume_add_dirty_box(struct wined3d_volume *volume, const WINED3DBOX *dirty_box) DECLSPEC_HIDDEN;
|
||||
void volume_load(const struct wined3d_volume *volume, UINT level, BOOL srgb_mode) DECLSPEC_HIDDEN;
|
||||
void volume_load(const struct wined3d_volume *volume, struct wined3d_context *context, UINT level, BOOL srgb_mode) DECLSPEC_HIDDEN;
|
||||
void volume_set_container(struct wined3d_volume *volume, struct wined3d_texture *container) DECLSPEC_HIDDEN;
|
||||
|
||||
/*****************************************************************************
|
||||
|
@ -2060,7 +2060,7 @@ static inline GLuint surface_get_texture_name(const struct wined3d_surface *surf
|
|||
}
|
||||
|
||||
void surface_add_dirty_rect(struct wined3d_surface *surface, const WINED3DBOX *dirty_rect) DECLSPEC_HIDDEN;
|
||||
void surface_bind(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info, BOOL srgb) DECLSPEC_HIDDEN;
|
||||
void surface_bind(struct wined3d_surface *surface, struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN;
|
||||
HRESULT surface_color_fill(struct wined3d_surface *s, const RECT *rect, const WINED3DCOLORVALUE *color) DECLSPEC_HIDDEN;
|
||||
GLenum surface_get_gl_buffer(const struct wined3d_surface *surface) DECLSPEC_HIDDEN;
|
||||
BOOL surface_init_sysmem(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
|
||||
|
@ -2073,7 +2073,7 @@ HRESULT surface_load_location(struct wined3d_surface *surface, DWORD location, c
|
|||
void surface_modify_ds_location(struct wined3d_surface *surface, DWORD location, UINT w, UINT h) DECLSPEC_HIDDEN;
|
||||
void surface_modify_location(struct wined3d_surface *surface, DWORD location, BOOL persistent) DECLSPEC_HIDDEN;
|
||||
void surface_prepare_texture(struct wined3d_surface *surface,
|
||||
const struct wined3d_gl_info *gl_info, BOOL srgb) DECLSPEC_HIDDEN;
|
||||
struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN;
|
||||
void surface_set_compatible_renderbuffer(struct wined3d_surface *surface,
|
||||
const struct wined3d_surface *rt) DECLSPEC_HIDDEN;
|
||||
void surface_set_container(struct wined3d_surface *surface,
|
||||
|
|
Loading…
Reference in New Issue