wined3d: Remove IWineD3DSurface::BindTexture() from the public interface.

This commit is contained in:
Henri Verbeet 2011-01-20 19:51:58 +01:00 committed by Alexandre Julliard
parent 4454770cbc
commit 629d81b192
5 changed files with 53 additions and 69 deletions

View File

@ -5462,7 +5462,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_UpdateSurface(IWineD3DDevice *iface,
/* Make sure the surface is loaded and up to date */ /* Make sure the surface is loaded and up to date */
surface_internal_preload(dst_impl, SRGB_RGB); surface_internal_preload(dst_impl, SRGB_RGB);
IWineD3DSurface_BindTexture(dst_surface, FALSE); surface_bind(dst_impl, FALSE);
src_w = src_impl->currentDesc.Width; src_w = src_impl->currentDesc.Width;
src_h = src_impl->currentDesc.Height; src_h = src_impl->currentDesc.Height;

View File

@ -509,6 +509,56 @@ void surface_set_texture_target(IWineD3DSurfaceImpl *surface, GLenum target)
surface_force_reload(surface); surface_force_reload(surface);
} }
/* Context activation is done by the caller. */
void surface_bind(IWineD3DSurfaceImpl *surface, BOOL srgb)
{
TRACE("surface %p, srgb %#x.\n", surface, srgb);
if (surface->container.type == WINED3D_CONTAINER_TEXTURE)
{
IWineD3DBaseTextureImpl *texture = surface->container.u.texture;
TRACE("Passing to container (%p).\n", texture);
texture->baseTexture.texture_ops->texture_bind(texture, srgb);
}
else
{
GLuint *name = srgb ? &surface->texture_name_srgb : &surface->texture_name;
if (surface->texture_level)
{
ERR("Standalone surface %p is non-zero texture level %u.\n",
surface, surface->texture_level);
}
ENTER_GL();
if (!*name)
{
glGenTextures(1, name);
checkGLcall("glGenTextures");
TRACE("Surface %p given name %u.\n", surface, *name);
glBindTexture(surface->texture_target, *name);
checkGLcall("glBindTexture");
glTexParameteri(surface->texture_target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(surface->texture_target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(surface->texture_target, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
glTexParameteri(surface->texture_target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(surface->texture_target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
checkGLcall("glTexParameteri");
}
else
{
glBindTexture(surface->texture_target, *name);
checkGLcall("glBindTexture");
}
LEAVE_GL();
}
}
/* Context activation is done by the caller. */ /* Context activation is done by the caller. */
static void surface_bind_and_dirtify(IWineD3DSurfaceImpl *This, BOOL srgb) { static void surface_bind_and_dirtify(IWineD3DSurfaceImpl *This, BOOL srgb) {
DWORD active_sampler; DWORD active_sampler;
@ -534,7 +584,7 @@ static void surface_bind_and_dirtify(IWineD3DSurfaceImpl *This, BOOL srgb) {
{ {
IWineD3DDeviceImpl_MarkStateDirty(This->resource.device, STATE_SAMPLER(active_sampler)); IWineD3DDeviceImpl_MarkStateDirty(This->resource.device, STATE_SAMPLER(active_sampler));
} }
IWineD3DSurface_BindTexture((IWineD3DSurface *)This, srgb); surface_bind(This, srgb);
} }
/* This function checks if the primary render target uses the 8bit paletted format. */ /* This function checks if the primary render target uses the 8bit paletted format. */
@ -2494,63 +2544,6 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LoadTexture(IWineD3DSurface *iface, BO
return WINED3D_OK; return WINED3D_OK;
} }
/* Context activation is done by the caller. */
static void WINAPI IWineD3DSurfaceImpl_BindTexture(IWineD3DSurface *iface, BOOL srgb)
{
IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
TRACE("iface %p, srgb %#x.\n", iface, srgb);
if (This->container.type == WINED3D_CONTAINER_TEXTURE)
{
IWineD3DBaseTextureImpl *texture = This->container.u.texture;
TRACE("Passing to container (%p).\n", texture);
texture->baseTexture.texture_ops->texture_bind(texture, srgb);
}
else
{
GLuint *name;
TRACE("(%p) : Binding surface\n", This);
name = srgb ? &This->texture_name_srgb : &This->texture_name;
ENTER_GL();
if (!This->texture_level)
{
if (!*name) {
glGenTextures(1, name);
checkGLcall("glGenTextures");
TRACE("Surface %p given name %d\n", This, *name);
glBindTexture(This->texture_target, *name);
checkGLcall("glBindTexture");
glTexParameteri(This->texture_target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
checkGLcall("glTexParameteri(dimension, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)");
glTexParameteri(This->texture_target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
checkGLcall("glTexParameteri(dimension, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)");
glTexParameteri(This->texture_target, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
checkGLcall("glTexParameteri(dimension, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE)");
glTexParameteri(This->texture_target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
checkGLcall("glTexParameteri(dimension, GL_TEXTURE_MIN_FILTER, GL_NEAREST)");
glTexParameteri(This->texture_target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
checkGLcall("glTexParameteri(dimension, GL_TEXTURE_MAG_FILTER, GL_NEAREST)");
}
/* This is where we should be reducing the amount of GLMemoryUsed */
} else if (*name) {
/* Mipmap surfaces should have a base texture container */
ERR("Mipmap surface has a glTexture bound to it!\n");
}
glBindTexture(This->texture_target, *name);
checkGLcall("glBindTexture");
LEAVE_GL();
}
}
static HRESULT WINAPI IWineD3DSurfaceImpl_SetFormat(IWineD3DSurface *iface, enum wined3d_format_id format) static HRESULT WINAPI IWineD3DSurfaceImpl_SetFormat(IWineD3DSurface *iface, enum wined3d_format_id format)
{ {
IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface; IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
@ -4722,7 +4715,6 @@ const IWineD3DSurfaceVtbl IWineD3DSurface_Vtbl =
IWineD3DBaseSurfaceImpl_GetClipper, IWineD3DBaseSurfaceImpl_GetClipper,
/* Internal use: */ /* Internal use: */
IWineD3DSurfaceImpl_LoadTexture, IWineD3DSurfaceImpl_LoadTexture,
IWineD3DSurfaceImpl_BindTexture,
IWineD3DBaseSurfaceImpl_GetData, IWineD3DBaseSurfaceImpl_GetData,
IWineD3DSurfaceImpl_SetFormat, IWineD3DSurfaceImpl_SetFormat,
IWineD3DSurfaceImpl_PrivateSetup, IWineD3DSurfaceImpl_PrivateSetup,

View File

@ -209,11 +209,6 @@ IWineGDISurfaceImpl_LoadTexture(IWineD3DSurface *iface, BOOL srgb_mode)
return WINED3DERR_INVALIDCALL; return WINED3DERR_INVALIDCALL;
} }
static void WINAPI IWineGDISurfaceImpl_BindTexture(IWineD3DSurface *iface, BOOL srgb)
{
ERR("Not supported.\n");
}
static HRESULT WINAPI IWineGDISurfaceImpl_GetDC(IWineD3DSurface *iface, HDC *pHDC) { static HRESULT WINAPI IWineGDISurfaceImpl_GetDC(IWineD3DSurface *iface, HDC *pHDC) {
IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface; IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
WINED3DLOCKED_RECT lock; WINED3DLOCKED_RECT lock;
@ -502,7 +497,6 @@ const IWineD3DSurfaceVtbl IWineGDISurface_Vtbl =
IWineD3DBaseSurfaceImpl_GetClipper, IWineD3DBaseSurfaceImpl_GetClipper,
/* Internal use: */ /* Internal use: */
IWineGDISurfaceImpl_LoadTexture, IWineGDISurfaceImpl_LoadTexture,
IWineGDISurfaceImpl_BindTexture,
IWineD3DBaseSurfaceImpl_GetData, IWineD3DBaseSurfaceImpl_GetData,
IWineD3DBaseSurfaceImpl_SetFormat, IWineD3DBaseSurfaceImpl_SetFormat,
IWineGDISurfaceImpl_PrivateSetup, IWineGDISurfaceImpl_PrivateSetup,

View File

@ -2154,6 +2154,7 @@ extern const IWineD3DSurfaceVtbl IWineD3DSurface_Vtbl DECLSPEC_HIDDEN;
extern const IWineD3DSurfaceVtbl IWineGDISurface_Vtbl DECLSPEC_HIDDEN; extern const IWineD3DSurfaceVtbl IWineGDISurface_Vtbl DECLSPEC_HIDDEN;
void surface_add_dirty_rect(IWineD3DSurfaceImpl *surface, const RECT *dirty_rect) DECLSPEC_HIDDEN; void surface_add_dirty_rect(IWineD3DSurfaceImpl *surface, const RECT *dirty_rect) DECLSPEC_HIDDEN;
void surface_bind(IWineD3DSurfaceImpl *surface, BOOL srgb) DECLSPEC_HIDDEN;
HRESULT surface_color_fill(IWineD3DSurfaceImpl *s, const RECT *rect, const WINED3DCOLORVALUE *color) DECLSPEC_HIDDEN; HRESULT surface_color_fill(IWineD3DSurfaceImpl *s, const RECT *rect, const WINED3DCOLORVALUE *color) DECLSPEC_HIDDEN;
void surface_gdi_cleanup(IWineD3DSurfaceImpl *This) DECLSPEC_HIDDEN; void surface_gdi_cleanup(IWineD3DSurfaceImpl *This) DECLSPEC_HIDDEN;
GLenum surface_get_gl_buffer(IWineD3DSurfaceImpl *surface) DECLSPEC_HIDDEN; GLenum surface_get_gl_buffer(IWineD3DSurfaceImpl *surface) DECLSPEC_HIDDEN;

View File

@ -2465,9 +2465,6 @@ interface IWineD3DSurface : IWineD3DResource
HRESULT LoadTexture( HRESULT LoadTexture(
[in] BOOL srgb_mode [in] BOOL srgb_mode
); );
void BindTexture(
[in] BOOL srgb
);
const void *GetData( const void *GetData(
); );
HRESULT SetFormat( HRESULT SetFormat(