Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
bb9837d2
Commit
bb9837d2
authored
Jan 02, 2003
by
Lionel Ulmer
Committed by
Alexandre Julliard
Jan 02, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- added some tracing in the fake ZBuffer methods
- added support for the DEPTH_FILL BLT - set by defaut perspective correction to nicest. - decrease the limit where 'w' is ignored
parent
f0541aa5
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
53 additions
and
15 deletions
+53
-15
d3d_private.h
dlls/ddraw/d3d_private.h
+3
-0
mesa.c
dlls/ddraw/d3ddevice/mesa.c
+2
-1
d3dexecutebuffer.c
dlls/ddraw/d3dexecutebuffer.c
+1
-1
d3dtexture.c
dlls/ddraw/d3dtexture.c
+1
-3
mesa.c
dlls/ddraw/direct3d/mesa.c
+3
-7
fakezbuffer.c
dlls/ddraw/dsurface/fakezbuffer.c
+43
-0
mesa_private.h
dlls/ddraw/mesa_private.h
+0
-3
No files found.
dlls/ddraw/d3d_private.h
View file @
bb9837d2
...
@@ -59,6 +59,9 @@ struct IDirect3DImpl
...
@@ -59,6 +59,9 @@ struct IDirect3DImpl
/* Used as a callback for Devices to tell to the D3D object it's been created */
/* Used as a callback for Devices to tell to the D3D object it's been created */
HRESULT
(
*
added_device
)(
IDirect3DImpl
*
d3d
,
IDirect3DDeviceImpl
*
device
);
HRESULT
(
*
added_device
)(
IDirect3DImpl
*
d3d
,
IDirect3DDeviceImpl
*
device
);
HRESULT
(
*
removed_device
)(
IDirect3DImpl
*
d3d
,
IDirect3DDeviceImpl
*
device
);
HRESULT
(
*
removed_device
)(
IDirect3DImpl
*
d3d
,
IDirect3DDeviceImpl
*
device
);
/* This is needed for delayed texture creation and Z buffer blits */
IDirect3DDeviceImpl
*
current_device
;
};
};
/*****************************************************************************
/*****************************************************************************
...
...
dlls/ddraw/d3ddevice/mesa.c
View file @
bb9837d2
...
@@ -924,7 +924,7 @@ inline static void handle_xyz(D3DVALUE *coords) {
...
@@ -924,7 +924,7 @@ inline static void handle_xyz(D3DVALUE *coords) {
glVertex3fv
(
coords
);
glVertex3fv
(
coords
);
}
}
inline
static
void
handle_xyzrhw
(
D3DVALUE
*
coords
)
{
inline
static
void
handle_xyzrhw
(
D3DVALUE
*
coords
)
{
if
(
coords
[
3
]
<
0
.
00001
)
if
(
coords
[
3
]
<
1e-8
)
glVertex3fv
(
coords
);
glVertex3fv
(
coords
);
else
{
else
{
GLfloat
w
=
1
.
0
/
coords
[
3
];
GLfloat
w
=
1
.
0
/
coords
[
3
];
...
@@ -1977,6 +1977,7 @@ d3ddevice_create(IDirect3DDeviceImpl **obj, IDirect3DImpl *d3d, IDirectDrawSurfa
...
@@ -1977,6 +1977,7 @@ d3ddevice_create(IDirect3DDeviceImpl **obj, IDirect3DImpl *d3d, IDirectDrawSurfa
object
->
set_context
(
object
);
object
->
set_context
(
object
);
ENTER_GL
();
ENTER_GL
();
TRACE
(
" current context set
\n
"
);
TRACE
(
" current context set
\n
"
);
glHint
(
GL_PERSPECTIVE_CORRECTION_HINT
,
GL_NICEST
);
glClearColor
(
0
.
0
,
0
.
0
,
0
.
0
,
0
.
0
);
glClearColor
(
0
.
0
,
0
.
0
,
0
.
0
,
0
.
0
);
glClear
(
GL_COLOR_BUFFER_BIT
|
GL_DEPTH_BUFFER_BIT
|
GL_STENCIL_BUFFER_BIT
);
glClear
(
GL_COLOR_BUFFER_BIT
|
GL_DEPTH_BUFFER_BIT
|
GL_STENCIL_BUFFER_BIT
);
glDrawBuffer
(
buffer
);
glDrawBuffer
(
buffer
);
...
...
dlls/ddraw/d3dexecutebuffer.c
View file @
bb9837d2
...
@@ -125,7 +125,7 @@ static void _dump_D3DEXECUTEBUFFERDESC(LPD3DEXECUTEBUFFERDESC lpDesc) {
...
@@ -125,7 +125,7 @@ static void _dump_D3DEXECUTEBUFFERDESC(LPD3DEXECUTEBUFFERDESC lpDesc) {
((col >> 8) & 0xFF) / 255.0, \
((col >> 8) & 0xFF) / 255.0, \
((col >> 0) & 0xFF) / 255.0); \
((col >> 0) & 0xFF) / 255.0); \
glTexCoord2f(vx->u7.tu, vx->u8.tv); \
glTexCoord2f(vx->u7.tu, vx->u8.tv); \
if (vx->u4.rhw <
0.01
) \
if (vx->u4.rhw <
1e-8
) \
glVertex3f(vx->u1.sx, \
glVertex3f(vx->u1.sx, \
vx->u2.sy, \
vx->u2.sy, \
vx->u3.sz); \
vx->u3.sz); \
...
...
dlls/ddraw/d3dtexture.c
View file @
bb9837d2
...
@@ -662,14 +662,12 @@ ICOM_VTABLE(IDirect3DTexture) VTABLE_IDirect3DTexture =
...
@@ -662,14 +662,12 @@ ICOM_VTABLE(IDirect3DTexture) VTABLE_IDirect3DTexture =
HRESULT
d3dtexture_create
(
IDirect3DImpl
*
d3d
,
IDirectDrawSurfaceImpl
*
surf
,
BOOLEAN
at_creation
,
HRESULT
d3dtexture_create
(
IDirect3DImpl
*
d3d
,
IDirectDrawSurfaceImpl
*
surf
,
BOOLEAN
at_creation
,
IDirectDrawSurfaceImpl
*
main
)
IDirectDrawSurfaceImpl
*
main
)
{
{
IDirect3DGLImpl
*
gl_d3d
=
(
IDirect3DGLImpl
*
)
d3d
;
/* First, initialize the texture vtables... */
/* First, initialize the texture vtables... */
ICOM_INIT_INTERFACE
(
surf
,
IDirect3DTexture
,
VTABLE_IDirect3DTexture
);
ICOM_INIT_INTERFACE
(
surf
,
IDirect3DTexture
,
VTABLE_IDirect3DTexture
);
ICOM_INIT_INTERFACE
(
surf
,
IDirect3DTexture2
,
VTABLE_IDirect3DTexture2
);
ICOM_INIT_INTERFACE
(
surf
,
IDirect3DTexture2
,
VTABLE_IDirect3DTexture2
);
/* Only create all the private stuff if we actually have an OpenGL context.. */
/* Only create all the private stuff if we actually have an OpenGL context.. */
if
(
gl_
d3d
->
current_device
!=
NULL
)
{
if
(
d3d
->
current_device
!=
NULL
)
{
IDirect3DTextureGLImpl
*
private
;
IDirect3DTextureGLImpl
*
private
;
private
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IDirect3DTextureGLImpl
));
private
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IDirect3DTextureGLImpl
));
...
...
dlls/ddraw/direct3d/mesa.c
View file @
bb9837d2
...
@@ -379,9 +379,7 @@ ICOM_VTABLE(IDirect3D) VTABLE_IDirect3D =
...
@@ -379,9 +379,7 @@ ICOM_VTABLE(IDirect3D) VTABLE_IDirect3D =
static
HRESULT
d3d_add_device
(
IDirect3DImpl
*
This
,
IDirect3DDeviceImpl
*
device
)
static
HRESULT
d3d_add_device
(
IDirect3DImpl
*
This
,
IDirect3DDeviceImpl
*
device
)
{
{
IDirect3DGLImpl
*
glThis
=
(
IDirect3DGLImpl
*
)
This
;
if
(
This
->
current_device
==
NULL
)
{
if
(
glThis
->
current_device
==
NULL
)
{
/* Create delayed textures now that we have an OpenGL context...
/* Create delayed textures now that we have an OpenGL context...
For that, go through all surface attached to our DDraw object and create
For that, go through all surface attached to our DDraw object and create
OpenGL textures for all textures.. */
OpenGL textures for all textures.. */
...
@@ -396,16 +394,14 @@ static HRESULT d3d_add_device(IDirect3DImpl *This, IDirect3DDeviceImpl *device)
...
@@ -396,16 +394,14 @@ static HRESULT d3d_add_device(IDirect3DImpl *This, IDirect3DDeviceImpl *device)
}
}
}
}
/* For the moment, only one device 'supported'... */
/* For the moment, only one device 'supported'... */
gl
This
->
current_device
=
device
;
This
->
current_device
=
device
;
return
DD_OK
;
return
DD_OK
;
}
}
static
HRESULT
d3d_remove_device
(
IDirect3DImpl
*
This
,
IDirect3DDeviceImpl
*
device
)
static
HRESULT
d3d_remove_device
(
IDirect3DImpl
*
This
,
IDirect3DDeviceImpl
*
device
)
{
{
IDirect3DGLImpl
*
glThis
=
(
IDirect3DGLImpl
*
)
This
;
This
->
current_device
=
NULL
;
glThis
->
current_device
=
NULL
;
return
DD_OK
;
return
DD_OK
;
}
}
...
...
dlls/ddraw/dsurface/fakezbuffer.c
View file @
bb9837d2
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
#include "ddcomimpl.h"
#include "ddcomimpl.h"
#include "ddraw_private.h"
#include "ddraw_private.h"
#include "d3d_private.h"
#include "dsurface/main.h"
#include "dsurface/main.h"
#include "dsurface/fakezbuffer.h"
#include "dsurface/fakezbuffer.h"
...
@@ -114,6 +115,33 @@ FakeZBuffer_DirectDrawSurface_Blt(LPDIRECTDRAWSURFACE7 iface, LPRECT rdst,
...
@@ -114,6 +115,33 @@ FakeZBuffer_DirectDrawSurface_Blt(LPDIRECTDRAWSURFACE7 iface, LPRECT rdst,
LPDIRECTDRAWSURFACE7
src
,
LPRECT
rsrc
,
LPDIRECTDRAWSURFACE7
src
,
LPRECT
rsrc
,
DWORD
dwFlags
,
LPDDBLTFX
lpbltfx
)
DWORD
dwFlags
,
LPDDBLTFX
lpbltfx
)
{
{
ICOM_THIS
(
IDirectDrawSurfaceImpl
,
iface
);
if
(
TRACE_ON
(
ddraw
))
{
TRACE
(
"(%p)->(%p,%p,%p,%08lx,%p)
\n
"
,
This
,
rdst
,
src
,
rsrc
,
dwFlags
,
lpbltfx
);
if
(
rdst
)
TRACE
(
"
\t
destrect :%dx%d-%dx%d
\n
"
,
rdst
->
left
,
rdst
->
top
,
rdst
->
right
,
rdst
->
bottom
);
if
(
rsrc
)
TRACE
(
"
\t
srcrect :%dx%d-%dx%d
\n
"
,
rsrc
->
left
,
rsrc
->
top
,
rsrc
->
right
,
rsrc
->
bottom
);
TRACE
(
"
\t
flags: "
);
DDRAW_dump_DDBLT
(
dwFlags
);
if
(
dwFlags
&
DDBLT_DDFX
)
{
TRACE
(
"
\t
blitfx: "
);
DDRAW_dump_DDBLTFX
(
lpbltfx
->
dwDDFX
);
}
}
/* We only support the BLT with DEPTH_FILL for now */
if
(
This
->
ddraw_owner
->
d3d
!=
NULL
)
{
if
(
This
->
ddraw_owner
->
d3d
->
current_device
!=
NULL
)
{
This
->
ddraw_owner
->
d3d
->
current_device
->
clear
(
This
->
ddraw_owner
->
d3d
->
current_device
,
0
,
NULL
,
/* Clear the whole screen */
D3DCLEAR_ZBUFFER
,
0x00000000
,
((
double
)
lpbltfx
->
u5
.
dwFillDepth
)
/
4294967295
.
0
,
0x00000000
);
return
DD_OK
;
}
}
return
cant_do_that
(
"blt to a"
);
return
cant_do_that
(
"blt to a"
);
}
}
...
@@ -122,6 +150,21 @@ FakeZBuffer_DirectDrawSurface_BltFast(LPDIRECTDRAWSURFACE7 iface, DWORD dstx,
...
@@ -122,6 +150,21 @@ FakeZBuffer_DirectDrawSurface_BltFast(LPDIRECTDRAWSURFACE7 iface, DWORD dstx,
DWORD
dsty
,
LPDIRECTDRAWSURFACE7
src
,
DWORD
dsty
,
LPDIRECTDRAWSURFACE7
src
,
LPRECT
rsrc
,
DWORD
trans
)
LPRECT
rsrc
,
DWORD
trans
)
{
{
ICOM_THIS
(
IDirectDrawSurfaceImpl
,
iface
);
if
(
TRACE_ON
(
ddraw
))
{
FIXME
(
"(%p)->(%ld,%ld,%p,%p,%08lx)
\n
"
,
This
,
dstx
,
dsty
,
src
,
rsrc
,
trans
);
FIXME
(
"
\t
trans:"
);
if
(
FIXME_ON
(
ddraw
))
DDRAW_dump_DDBLTFAST
(
trans
);
if
(
rsrc
)
FIXME
(
"
\t
srcrect: %dx%d-%dx%d
\n
"
,
rsrc
->
left
,
rsrc
->
top
,
rsrc
->
right
,
rsrc
->
bottom
);
else
FIXME
(
" srcrect: NULL
\n
"
);
}
return
cant_do_that
(
"bltfast to a"
);
return
cant_do_that
(
"bltfast to a"
);
}
}
...
...
dlls/ddraw/mesa_private.h
View file @
bb9837d2
...
@@ -82,9 +82,6 @@ typedef struct IDirect3DGLImpl
...
@@ -82,9 +82,6 @@ typedef struct IDirect3DGLImpl
struct
IDirect3DImpl
parent
;
struct
IDirect3DImpl
parent
;
int
free_lights
;
int
free_lights
;
void
(
*
light_released
)(
IDirect3DImpl
*
,
GLenum
light_num
);
void
(
*
light_released
)(
IDirect3DImpl
*
,
GLenum
light_num
);
/* This is needed for delayed texture creation */
struct
IDirect3DDeviceImpl
*
current_device
;
}
IDirect3DGLImpl
;
}
IDirect3DGLImpl
;
typedef
struct
IDirect3DLightGLImpl
typedef
struct
IDirect3DLightGLImpl
...
...
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