Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
4dbee07f
Commit
4dbee07f
authored
Nov 26, 2007
by
Stefan Dösinger
Committed by
Alexandre Julliard
Nov 29, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Disable GL_TEXTURE_2D in the standard blit setup.
parent
5c53b52c
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
19 deletions
+29
-19
context.c
dlls/wined3d/context.c
+3
-4
surface.c
dlls/wined3d/surface.c
+26
-15
No files found.
dlls/wined3d/context.c
View file @
4dbee07f
...
...
@@ -473,8 +473,7 @@ void DestroyContext(IWineD3DDeviceImpl *This, WineD3DContext *context) {
* SetupForBlit
*
* Sets up a context for DirectDraw blitting.
* All texture units are disabled, except unit 0
* Texture unit 0 is activted where GL_TEXTURE_2D is activated
* All texture units are disabled, texture unit 0 is set as current unit
* fog, lighting, blending, alpha test, z test, scissor test, culling diabled
* color writing enabled for all channels
* register combiners disabled, shaders disabled
...
...
@@ -544,8 +543,8 @@ static inline void SetupForBlit(IWineD3DDeviceImpl *This, WineD3DContext *contex
}
glDisable
(
GL_TEXTURE_3D
);
checkGLcall
(
"glDisable GL_TEXTURE_3D"
);
gl
En
able
(
GL_TEXTURE_2D
);
checkGLcall
(
"gl
En
able GL_TEXTURE_2D"
);
gl
Dis
able
(
GL_TEXTURE_2D
);
checkGLcall
(
"gl
Dis
able GL_TEXTURE_2D"
);
glTexEnvi
(
GL_TEXTURE_ENV
,
GL_TEXTURE_ENV_MODE
,
GL_REPLACE
);
...
...
dlls/wined3d/surface.c
View file @
4dbee07f
...
...
@@ -964,9 +964,6 @@ static void flush_to_framebuffer_drawpixels(IWineD3DSurfaceImpl *This) {
IWineD3DSwapChain_Release
((
IWineD3DSwapChain
*
)
swapchain
);
}
glDisable
(
GL_TEXTURE_2D
);
vcheckGLcall
(
"glDisable(GL_TEXTURE_2D)"
);
glFlush
();
vcheckGLcall
(
"glFlush"
);
glGetIntegerv
(
GL_PACK_SWAP_BYTES
,
&
prev_store
);
...
...
@@ -1153,12 +1150,6 @@ cleanup:
vcheckGLcall
(
"glPixelStorei GL_PACK_SWAP_BYTES"
);
}
/* Blitting environment requires that 2D texturing is enabled. It was turned off before,
* turn it on again
*/
glEnable
(
GL_TEXTURE_2D
);
checkGLcall
(
"glEnable(GL_TEXTURE_2D)"
);
if
(
memory_allocated
)
HeapFree
(
GetProcessHeap
(),
0
,
mem
);
if
(
!
swapchain
)
{
...
...
@@ -2535,6 +2526,10 @@ static inline void fb_copy_to_texture_direct(IWineD3DSurfaceImpl *This, IWineD3D
ENTER_GL
();
IWineD3DSurface_PreLoad
((
IWineD3DSurface
*
)
This
);
/* TODO: Do we need GL_TEXTURE_2D enabled fpr copyteximage? */
glEnable
(
GL_TEXTURE_2D
);
checkGLcall
(
"glEnable(GL_TEXTURE_2D)"
);
/* Bind the target texture */
glBindTexture
(
GL_TEXTURE_2D
,
This
->
glDescription
.
textureName
);
checkGLcall
(
"glBindTexture"
);
...
...
@@ -2600,8 +2595,12 @@ static inline void fb_copy_to_texture_direct(IWineD3DSurfaceImpl *This, IWineD3D
}
}
}
vcheckGLcall
(
"glCopyTexSubImage2D"
);
/* Leave the opengl state valid for blitting */
glDisable
(
GL_TEXTURE_2D
);
checkGLcall
(
"glDisable(GL_TEXTURE_2D)"
);
LEAVE_GL
();
}
...
...
@@ -2619,6 +2618,9 @@ static inline void fb_copy_to_texture_hwstretch(IWineD3DSurfaceImpl *This, IWine
/* Activate the Proper context for reading from the source surface, set it up for blitting */
ActivateContext
(
myDevice
,
SrcSurface
,
CTXUSAGE_BLIT
);
ENTER_GL
();
glEnable
(
GL_TEXTURE_2D
);
checkGLcall
(
"glEnable(GL_TEXTURE_2D)"
);
IWineD3DSurface_PreLoad
((
IWineD3DSurface
*
)
This
);
/* Try to use an aux buffer for drawing the rectangle. This way it doesn't need restoring.
...
...
@@ -2780,6 +2782,8 @@ static inline void fb_copy_to_texture_hwstretch(IWineD3DSurfaceImpl *This, IWine
}
/* Cleanup */
glDisable
(
GL_TEXTURE_2D
);
checkGLcall
(
"glDisable(GL_TEXTURE_2D)"
);
if
(
src
!=
Src
->
glDescription
.
textureName
&&
src
!=
backup
)
{
glDeleteTextures
(
1
,
&
src
);
checkGLcall
(
"glDeleteTextures(1, &src)"
);
...
...
@@ -2788,6 +2792,7 @@ static inline void fb_copy_to_texture_hwstretch(IWineD3DSurfaceImpl *This, IWine
glDeleteTextures
(
1
,
&
backup
);
checkGLcall
(
"glDeleteTextures(1, &backup)"
);
}
LEAVE_GL
();
}
...
...
@@ -3094,6 +3099,9 @@ static HRESULT IWineD3DSurfaceImpl_BltOverride(IWineD3DSurfaceImpl *This, RECT *
ActivateContext
(
myDevice
,
(
IWineD3DSurface
*
)
This
,
CTXUSAGE_BLIT
);
ENTER_GL
();
glEnable
(
GL_TEXTURE_2D
);
checkGLcall
(
"glEnable(GL_TEXTURE_2D)"
);
if
(
!
dstSwapchain
)
{
TRACE
(
"Drawing to offscreen buffer
\n
"
);
glDrawBuffer
(
myDevice
->
offscreenBuffer
);
...
...
@@ -3166,9 +3174,11 @@ static HRESULT IWineD3DSurfaceImpl_BltOverride(IWineD3DSurfaceImpl *This, RECT *
if
(
dstSwapchain
&&
(
dstSwapchain
->
num_contexts
>=
2
))
glFlush
();
/* Unbind the texture */
glBindTexture
(
GL_TEXTURE_2D
,
0
);
checkGLcall
(
"glEnable glBindTexture"
);
/* Leave the opengl state valid for blitting */
glDisable
(
GL_TEXTURE_2D
);
checkGLcall
(
"glDisable(GL_TEXTURE_2D)"
);
/* The draw buffer should only need to be restored if we were drawing to the front buffer, and there is a back buffer.
* otherwise the context manager should choose between GL_BACK / offscreenDrawBuffer
...
...
@@ -3534,6 +3544,8 @@ static inline void surface_blt_to_drawable(IWineD3DSurfaceImpl *This, const RECT
ENTER_GL
();
if
(
This
->
glDescription
.
target
==
GL_TEXTURE_2D
)
{
glEnable
(
GL_TEXTURE_2D
);
checkGLcall
(
"glEnable(GL_TEXTURE_2D)"
);
glBindTexture
(
GL_TEXTURE_2D
,
This
->
glDescription
.
textureName
);
checkGLcall
(
"GL_TEXTURE_2D, This->glDescription.textureName)"
);
glTexParameteri
(
GL_TEXTURE_2D
,
GL_TEXTURE_MAG_FILTER
,
GL_NEAREST
);
...
...
@@ -3559,8 +3571,6 @@ static inline void surface_blt_to_drawable(IWineD3DSurfaceImpl *This, const RECT
coords
[
3
].
y
=
rect
.
top
/
This
->
pow2Height
;
}
else
{
/* Must be a cube map */
glDisable
(
GL_TEXTURE_2D
);
checkGLcall
(
"glDisable(GL_TEXTURE_2D)"
);
glEnable
(
GL_TEXTURE_CUBE_MAP_ARB
);
checkGLcall
(
"glEnable(GL_TEXTURE_CUBE_MAP_ARB)"
);
glBindTexture
(
GL_TEXTURE_CUBE_MAP_ARB
,
This
->
glDescription
.
textureName
);
...
...
@@ -3635,10 +3645,11 @@ static inline void surface_blt_to_drawable(IWineD3DSurfaceImpl *This, const RECT
checkGLcall
(
"glEnd"
);
if
(
This
->
glDescription
.
target
!=
GL_TEXTURE_2D
)
{
glEnable
(
GL_TEXTURE_2D
);
checkGLcall
(
"glEnable(GL_TEXTURE_2D)"
);
glDisable
(
GL_TEXTURE_CUBE_MAP_ARB
);
checkGLcall
(
"glDisable(GL_TEXTURE_CUBE_MAP_ARB)"
);
}
else
{
glDisable
(
GL_TEXTURE_2D
);
checkGLcall
(
"glDisable(GL_TEXTURE_2D)"
);
}
hr
=
IWineD3DSurface_GetContainer
((
IWineD3DSurface
*
)
This
,
&
IID_IWineD3DSwapChain
,
(
void
**
)
&
swapchain
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment