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
43f30fe8
Commit
43f30fe8
authored
Jan 10, 2013
by
Rico Schüller
Committed by
Alexandre Julliard
Jan 11, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3dx9: Add support for D3DFMT_A16B16G16R16F.
parent
f7d87706
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
44 additions
and
35 deletions
+44
-35
d3dx9_36_private.h
dlls/d3dx9_36/d3dx9_36_private.h
+3
-0
math.c
dlls/d3dx9_36/math.c
+1
-1
texture.c
dlls/d3dx9_36/tests/texture.c
+2
-2
texture.c
dlls/d3dx9_36/texture.c
+10
-5
util.c
dlls/d3dx9_36/util.c
+28
-27
No files found.
dlls/d3dx9_36/d3dx9_36_private.h
View file @
43f30fe8
...
...
@@ -47,6 +47,7 @@ struct volume
/* for internal use */
enum
format_type
{
FORMAT_ARGB
,
/* unsigned */
FORMAT_ARGBF16
,
/* float 16 */
FORMAT_DXT
,
FORMAT_UNKNOWN
};
...
...
@@ -94,6 +95,8 @@ HRESULT load_volume_from_dds(IDirect3DVolume9 *dst_volume, const PALETTEENTRY *d
HRESULT
load_volume_texture_from_dds
(
IDirect3DVolumeTexture9
*
volume_texture
,
const
void
*
src_data
,
const
PALETTEENTRY
*
palette
,
DWORD
filter
,
DWORD
color_key
,
const
D3DXIMAGE_INFO
*
src_info
)
DECLSPEC_HIDDEN
;
unsigned
short
float_32_to_16
(
const
float
in
)
DECLSPEC_HIDDEN
;
/* debug helpers */
const
char
*
debug_d3dxparameter_class
(
D3DXPARAMETER_CLASS
c
)
DECLSPEC_HIDDEN
;
const
char
*
debug_d3dxparameter_type
(
D3DXPARAMETER_TYPE
t
)
DECLSPEC_HIDDEN
;
...
...
dlls/d3dx9_36/math.c
View file @
43f30fe8
...
...
@@ -2086,7 +2086,7 @@ D3DXVECTOR4* WINAPI D3DXVec4TransformArray(D3DXVECTOR4* out, UINT outstride, CON
return
out
;
}
static
inline
unsigned
short
float_32_to_16
(
const
float
in
)
unsigned
short
float_32_to_16
(
const
float
in
)
{
int
exp
=
0
,
origexp
;
float
tmp
=
fabs
(
in
);
...
...
dlls/d3dx9_36/tests/texture.c
View file @
43f30fe8
...
...
@@ -1058,7 +1058,7 @@ static void test_D3DXFillTexture(IDirect3DDevice9 *device)
if
(
SUCCEEDED
(
hr
))
{
hr
=
D3DXFillTexture
(
tex
,
fillfunc
,
NULL
);
todo_wine
ok
(
hr
==
D3D_OK
,
"D3DXFillTexture returned %#x, expected %#x
\n
"
,
hr
,
D3D_OK
);
ok
(
hr
==
D3D_OK
,
"D3DXFillTexture returned %#x, expected %#x
\n
"
,
hr
,
D3D_OK
);
hr
=
IDirect3DTexture9_LockRect
(
tex
,
0
,
&
lock_rect
,
NULL
,
D3DLOCK_READONLY
);
if
(
SUCCEEDED
(
hr
))
...
...
@@ -1081,7 +1081,7 @@ static void test_D3DXFillTexture(IDirect3DDevice9 *device)
expected
.
z
=
1
.
0
f
/
4
.
0
f
;
expected
.
w
=
1
.
0
f
;
todo_wine
expect_vec4
(
&
expected
,
&
got
);
expect_vec4
(
&
expected
,
&
got
);
}
}
...
...
dlls/d3dx9_36/texture.c
View file @
43f30fe8
...
...
@@ -1216,7 +1216,7 @@ static inline void fill_texture(const struct pixel_format_desc *format, BYTE *po
for
(
c
=
0
;
c
<
4
;
c
++
)
{
float
comp_value
;
DWORD
i
,
v
,
mask32
=
format
->
bits
[
c
]
==
32
?
~
0U
:
((
1
<<
format
->
bits
[
c
])
-
1
);
DWORD
i
,
v
=
0
,
mask32
=
format
->
bits
[
c
]
==
32
?
~
0U
:
((
1
<<
format
->
bits
[
c
])
-
1
);
switch
(
c
)
{
...
...
@@ -1234,7 +1234,12 @@ static inline void fill_texture(const struct pixel_format_desc *format, BYTE *po
break
;
}
v
=
comp_value
*
((
1
<<
format
->
bits
[
c
])
-
1
)
+
0
.
5
f
;
if
(
format
->
type
==
FORMAT_ARGBF16
)
v
=
float_32_to_16
(
comp_value
);
else
if
(
format
->
type
==
FORMAT_ARGB
)
v
=
comp_value
*
((
1
<<
format
->
bits
[
c
])
-
1
)
+
0
.
5
f
;
else
FIXME
(
"Unhandled format type %#x
\n
"
,
format
->
type
);
for
(
i
=
0
;
i
<
format
->
bits
[
c
]
+
format
->
shift
[
c
];
i
+=
8
)
{
...
...
@@ -1277,7 +1282,7 @@ HRESULT WINAPI D3DXFillTexture(struct IDirect3DTexture9 *texture, LPD3DXFILL2D f
return
D3DERR_INVALIDCALL
;
format
=
get_format_info
(
desc
.
Format
);
if
(
format
->
type
!=
FORMAT_ARGB
)
if
(
format
->
type
!=
FORMAT_ARGB
&&
format
->
type
!=
FORMAT_ARGBF16
)
{
FIXME
(
"Unsupported texture format %#x
\n
"
,
desc
.
Format
);
return
D3DERR_INVALIDCALL
;
...
...
@@ -1644,7 +1649,7 @@ HRESULT WINAPI D3DXFillCubeTexture(struct IDirect3DCubeTexture9 *texture, LPD3DX
return
D3DERR_INVALIDCALL
;
format
=
get_format_info
(
desc
.
Format
);
if
(
format
->
type
!=
FORMAT_ARGB
)
if
(
format
->
type
!=
FORMAT_ARGB
&&
format
->
type
!=
FORMAT_ARGBF16
)
{
FIXME
(
"Unsupported texture format %#x
\n
"
,
desc
.
Format
);
return
D3DERR_INVALIDCALL
;
...
...
@@ -1703,7 +1708,7 @@ HRESULT WINAPI D3DXFillVolumeTexture(struct IDirect3DVolumeTexture9 *texture, LP
return
D3DERR_INVALIDCALL
;
format
=
get_format_info
(
desc
.
Format
);
if
(
format
->
type
!=
FORMAT_ARGB
)
if
(
format
->
type
!=
FORMAT_ARGB
&&
format
->
type
!=
FORMAT_ARGBF16
)
{
FIXME
(
"Unsupported texture format %#x
\n
"
,
desc
.
Format
);
return
D3DERR_INVALIDCALL
;
...
...
dlls/d3dx9_36/util.c
View file @
43f30fe8
...
...
@@ -44,34 +44,35 @@ static void la_to_rgba(const struct vec4 *la, struct vec4 *rgba)
*/
static
const
struct
pixel_format_desc
formats
[]
=
{
/* format bpc shifts bpp blocks type from_rgba to_rgba */
{
D3DFMT_R8G8B8
,
{
0
,
8
,
8
,
8
},
{
0
,
16
,
8
,
0
},
3
,
1
,
1
,
3
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A8R8G8B8
,
{
8
,
8
,
8
,
8
},
{
24
,
16
,
8
,
0
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_X8R8G8B8
,
{
0
,
8
,
8
,
8
},
{
0
,
16
,
8
,
0
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A8B8G8R8
,
{
8
,
8
,
8
,
8
},
{
24
,
0
,
8
,
16
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_X8B8G8R8
,
{
0
,
8
,
8
,
8
},
{
0
,
0
,
8
,
16
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_R5G6B5
,
{
0
,
5
,
6
,
5
},
{
0
,
11
,
5
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_X1R5G5B5
,
{
0
,
5
,
5
,
5
},
{
0
,
10
,
5
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A1R5G5B5
,
{
1
,
5
,
5
,
5
},
{
15
,
10
,
5
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_R3G3B2
,
{
0
,
3
,
3
,
2
},
{
0
,
5
,
2
,
0
},
1
,
1
,
1
,
1
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A8R3G3B2
,
{
8
,
3
,
3
,
2
},
{
8
,
5
,
2
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A4R4G4B4
,
{
4
,
4
,
4
,
4
},
{
12
,
8
,
4
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_X4R4G4B4
,
{
0
,
4
,
4
,
4
},
{
0
,
8
,
4
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A2R10G10B10
,
{
2
,
10
,
10
,
10
},
{
30
,
20
,
10
,
0
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A2B10G10R10
,
{
2
,
10
,
10
,
10
},
{
30
,
0
,
10
,
20
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_G16R16
,
{
0
,
16
,
16
,
0
},
{
0
,
0
,
16
,
0
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A8
,
{
8
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
1
,
1
,
1
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A8L8
,
{
8
,
8
,
0
,
0
},
{
8
,
0
,
0
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
la_from_rgba
,
la_to_rgba
},
{
D3DFMT_A4L4
,
{
4
,
4
,
0
,
0
},
{
4
,
0
,
0
,
0
},
1
,
1
,
1
,
1
,
FORMAT_ARGB
,
la_from_rgba
,
la_to_rgba
},
{
D3DFMT_L8
,
{
0
,
8
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
1
,
1
,
1
,
FORMAT_ARGB
,
la_from_rgba
,
la_to_rgba
},
{
D3DFMT_L16
,
{
0
,
16
,
0
,
0
},
{
0
,
0
,
0
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
la_from_rgba
,
la_to_rgba
},
{
D3DFMT_DXT1
,
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
4
,
4
,
8
,
FORMAT_DXT
,
NULL
,
NULL
},
{
D3DFMT_DXT2
,
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
4
,
4
,
16
,
FORMAT_DXT
,
NULL
,
NULL
},
{
D3DFMT_DXT3
,
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
4
,
4
,
16
,
FORMAT_DXT
,
NULL
,
NULL
},
{
D3DFMT_DXT4
,
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
4
,
4
,
16
,
FORMAT_DXT
,
NULL
,
NULL
},
{
D3DFMT_DXT5
,
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
4
,
4
,
16
,
FORMAT_DXT
,
NULL
,
NULL
},
/* format bpc shifts bpp blocks type from_rgba to_rgba */
{
D3DFMT_R8G8B8
,
{
0
,
8
,
8
,
8
},
{
0
,
16
,
8
,
0
},
3
,
1
,
1
,
3
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A8R8G8B8
,
{
8
,
8
,
8
,
8
},
{
24
,
16
,
8
,
0
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_X8R8G8B8
,
{
0
,
8
,
8
,
8
},
{
0
,
16
,
8
,
0
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A8B8G8R8
,
{
8
,
8
,
8
,
8
},
{
24
,
0
,
8
,
16
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_X8B8G8R8
,
{
0
,
8
,
8
,
8
},
{
0
,
0
,
8
,
16
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_R5G6B5
,
{
0
,
5
,
6
,
5
},
{
0
,
11
,
5
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_X1R5G5B5
,
{
0
,
5
,
5
,
5
},
{
0
,
10
,
5
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A1R5G5B5
,
{
1
,
5
,
5
,
5
},
{
15
,
10
,
5
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_R3G3B2
,
{
0
,
3
,
3
,
2
},
{
0
,
5
,
2
,
0
},
1
,
1
,
1
,
1
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A8R3G3B2
,
{
8
,
3
,
3
,
2
},
{
8
,
5
,
2
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A4R4G4B4
,
{
4
,
4
,
4
,
4
},
{
12
,
8
,
4
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_X4R4G4B4
,
{
0
,
4
,
4
,
4
},
{
0
,
8
,
4
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A2R10G10B10
,
{
2
,
10
,
10
,
10
},
{
30
,
20
,
10
,
0
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A2B10G10R10
,
{
2
,
10
,
10
,
10
},
{
30
,
0
,
10
,
20
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_G16R16
,
{
0
,
16
,
16
,
0
},
{
0
,
0
,
16
,
0
},
4
,
1
,
1
,
4
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A8
,
{
8
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
1
,
1
,
1
,
FORMAT_ARGB
,
NULL
,
NULL
},
{
D3DFMT_A8L8
,
{
8
,
8
,
0
,
0
},
{
8
,
0
,
0
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
la_from_rgba
,
la_to_rgba
},
{
D3DFMT_A4L4
,
{
4
,
4
,
0
,
0
},
{
4
,
0
,
0
,
0
},
1
,
1
,
1
,
1
,
FORMAT_ARGB
,
la_from_rgba
,
la_to_rgba
},
{
D3DFMT_L8
,
{
0
,
8
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
1
,
1
,
1
,
FORMAT_ARGB
,
la_from_rgba
,
la_to_rgba
},
{
D3DFMT_L16
,
{
0
,
16
,
0
,
0
},
{
0
,
0
,
0
,
0
},
2
,
1
,
1
,
2
,
FORMAT_ARGB
,
la_from_rgba
,
la_to_rgba
},
{
D3DFMT_DXT1
,
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
4
,
4
,
8
,
FORMAT_DXT
,
NULL
,
NULL
},
{
D3DFMT_DXT2
,
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
4
,
4
,
16
,
FORMAT_DXT
,
NULL
,
NULL
},
{
D3DFMT_DXT3
,
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
4
,
4
,
16
,
FORMAT_DXT
,
NULL
,
NULL
},
{
D3DFMT_DXT4
,
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
4
,
4
,
16
,
FORMAT_DXT
,
NULL
,
NULL
},
{
D3DFMT_DXT5
,
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
1
,
4
,
4
,
16
,
FORMAT_DXT
,
NULL
,
NULL
},
{
D3DFMT_A16B16G16R16F
,
{
16
,
16
,
16
,
16
},
{
48
,
0
,
16
,
32
},
8
,
1
,
1
,
8
,
FORMAT_ARGBF16
,
NULL
,
NULL
},
/* marks last element */
{
D3DFMT_UNKNOWN
,
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
0
,
1
,
1
,
0
,
FORMAT_UNKNOWN
,
NULL
,
NULL
},
{
D3DFMT_UNKNOWN
,
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
0
,
1
,
1
,
0
,
FORMAT_UNKNOWN
,
NULL
,
NULL
},
};
...
...
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