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
6df52ca7
Commit
6df52ca7
authored
Mar 07, 2015
by
Stefan Dösinger
Committed by
Alexandre Julliard
Mar 10, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Add support for GL_EXT_texture_snorm.
parent
cdb7e825
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
24 deletions
+35
-24
directx.c
dlls/wined3d/directx.c
+1
-0
utils.c
dlls/wined3d/utils.c
+33
-24
wined3d_gl.h
dlls/wined3d/wined3d_gl.h
+1
-0
No files found.
dlls/wined3d/directx.c
View file @
6df52ca7
...
...
@@ -196,6 +196,7 @@ static const struct wined3d_extension_map gl_extension_map[] =
{
"GL_EXT_texture_filter_anisotropic"
,
EXT_TEXTURE_FILTER_ANISOTROPIC
},
{
"GL_EXT_texture_lod_bias"
,
EXT_TEXTURE_LOD_BIAS
},
{
"GL_EXT_texture_mirror_clamp"
,
EXT_TEXTURE_MIRROR_CLAMP
},
{
"GL_EXT_texture_snorm"
,
EXT_TEXTURE_SNORM
},
{
"GL_EXT_texture_sRGB"
,
EXT_TEXTURE_SRGB
},
{
"GL_EXT_texture_sRGB_decode"
,
EXT_TEXTURE_SRGB_DECODE
},
{
"GL_EXT_vertex_array_bgra"
,
EXT_VERTEX_ARRAY_BGRA
},
...
...
dlls/wined3d/utils.c
View file @
6df52ca7
...
...
@@ -1065,6 +1065,11 @@ static const struct wined3d_format_texture_info format_texture_info[] =
WINED3DFMT_FLAG_TEXTURE
|
WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING
|
WINED3DFMT_FLAG_FILTERING
|
WINED3DFMT_FLAG_BUMPMAP
,
NV_TEXTURE_SHADER
,
NULL
},
{
WINED3DFMT_R8G8_SNORM
,
GL_RG8_SNORM
,
GL_RG8_SNORM
,
0
,
GL_RG
,
GL_BYTE
,
0
,
WINED3DFMT_FLAG_TEXTURE
|
WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING
|
WINED3DFMT_FLAG_FILTERING
|
WINED3DFMT_FLAG_BUMPMAP
,
EXT_TEXTURE_SNORM
,
NULL
},
{
WINED3DFMT_R5G5_SNORM_L6_UNORM
,
GL_RGB5
,
GL_RGB5
,
0
,
GL_RGB
,
GL_UNSIGNED_SHORT_5_6_5
,
2
,
WINED3DFMT_FLAG_TEXTURE
|
WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING
|
WINED3DFMT_FLAG_FILTERING
...
...
@@ -1095,6 +1100,11 @@ static const struct wined3d_format_texture_info format_texture_info[] =
WINED3DFMT_FLAG_TEXTURE
|
WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING
|
WINED3DFMT_FLAG_FILTERING
|
WINED3DFMT_FLAG_BUMPMAP
,
NV_TEXTURE_SHADER
,
NULL
},
{
WINED3DFMT_R8G8B8A8_SNORM
,
GL_RGBA8_SNORM
,
GL_RGBA8_SNORM
,
0
,
GL_RGBA
,
GL_BYTE
,
0
,
WINED3DFMT_FLAG_TEXTURE
|
WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING
|
WINED3DFMT_FLAG_FILTERING
|
WINED3DFMT_FLAG_BUMPMAP
,
EXT_TEXTURE_SNORM
,
NULL
},
{
WINED3DFMT_R16G16_SNORM
,
GL_RGB16
,
GL_RGB16
,
0
,
GL_BGR
,
GL_UNSIGNED_SHORT
,
6
,
WINED3DFMT_FLAG_TEXTURE
|
WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING
|
WINED3DFMT_FLAG_FILTERING
...
...
@@ -1105,6 +1115,11 @@ static const struct wined3d_format_texture_info format_texture_info[] =
WINED3DFMT_FLAG_TEXTURE
|
WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING
|
WINED3DFMT_FLAG_FILTERING
|
WINED3DFMT_FLAG_BUMPMAP
,
NV_TEXTURE_SHADER
,
NULL
},
{
WINED3DFMT_R16G16_SNORM
,
GL_RG16_SNORM
,
GL_RG16_SNORM
,
0
,
GL_RG
,
GL_SHORT
,
0
,
WINED3DFMT_FLAG_TEXTURE
|
WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING
|
WINED3DFMT_FLAG_FILTERING
|
WINED3DFMT_FLAG_BUMPMAP
,
EXT_TEXTURE_SNORM
,
NULL
},
/* Depth stencil formats */
{
WINED3DFMT_D16_LOCKABLE
,
GL_DEPTH_COMPONENT
,
GL_DEPTH_COMPONENT
,
0
,
GL_DEPTH_COMPONENT
,
GL_UNSIGNED_SHORT
,
0
,
...
...
@@ -1978,57 +1993,51 @@ static void apply_format_fixups(struct wined3d_adapter *adapter, struct wined3d_
gl_info
->
formats
[
idx
].
color_fixup
=
create_color_fixup_desc
(
0
,
CHANNEL_SOURCE_X
,
0
,
CHANNEL_SOURCE_Y
,
0
,
CHANNEL_SOURCE_ONE
,
0
,
CHANNEL_SOURCE_W
);
/* V8U8 is supported natively by GL_ATI_envmap_bumpmap and GL_NV_texture_shader.
* V16U16 is only supported by GL_NV_texture_shader. The formats need fixup if
* their extensions are not available. GL_ATI_envmap_bumpmap is not used because
* the only driver that implements it(fglrx) has a buggy implementation.
*
* V8U8 and V16U16 need a fixup of the undefined blue channel. OpenGL
* returns 0.0 when sampling from it, DirectX 1.0. So we always have in-shader
* conversion for this format.
*/
if
(
!
gl_info
->
supported
[
NV_TEXTURE_SHADER
])
/* GL_ATI_envmap_bumpmap in theory supports R8G8_SNORM but is no longer supported by
* any driver. */
if
(
gl_info
->
supported
[
NV_TEXTURE_SHADER
]
||
gl_info
->
supported
[
EXT_TEXTURE_SNORM
])
{
/* R8G8_SNORM and R16G16_SNORM need a fixup of the undefined blue channel. OpenGL
* returns 0.0 when sampling from it, DirectX 1.0. So we always have in-shader
* conversion for this format. */
idx
=
getFmtIdx
(
WINED3DFMT_R8G8_SNORM
);
gl_info
->
formats
[
idx
].
color_fixup
=
create_color_fixup_desc
(
1
,
CHANNEL_SOURCE_X
,
1
,
CHANNEL_SOURCE_Y
,
0
,
CHANNEL_SOURCE_ONE
,
0
,
CHANNEL_SOURCE_ONE
);
0
,
CHANNEL_SOURCE_X
,
0
,
CHANNEL_SOURCE_Y
,
0
,
CHANNEL_SOURCE_ONE
,
0
,
CHANNEL_SOURCE_ONE
);
idx
=
getFmtIdx
(
WINED3DFMT_R16G16_SNORM
);
gl_info
->
formats
[
idx
].
color_fixup
=
create_color_fixup_desc
(
1
,
CHANNEL_SOURCE_X
,
1
,
CHANNEL_SOURCE_Y
,
0
,
CHANNEL_SOURCE_ONE
,
0
,
CHANNEL_SOURCE_ONE
);
0
,
CHANNEL_SOURCE_X
,
0
,
CHANNEL_SOURCE_Y
,
0
,
CHANNEL_SOURCE_ONE
,
0
,
CHANNEL_SOURCE_ONE
);
}
else
{
/* Emulate using unsigned formats. This requires load-time conversion in addition to the
* fixups here. */
idx
=
getFmtIdx
(
WINED3DFMT_R8G8_SNORM
);
gl_info
->
formats
[
idx
].
color_fixup
=
create_color_fixup_desc
(
0
,
CHANNEL_SOURCE_X
,
0
,
CHANNEL_SOURCE_Y
,
0
,
CHANNEL_SOURCE_ONE
,
0
,
CHANNEL_SOURCE_ONE
);
1
,
CHANNEL_SOURCE_X
,
1
,
CHANNEL_SOURCE_Y
,
0
,
CHANNEL_SOURCE_ONE
,
0
,
CHANNEL_SOURCE_ONE
);
idx
=
getFmtIdx
(
WINED3DFMT_R16G16_SNORM
);
gl_info
->
formats
[
idx
].
color_fixup
=
create_color_fixup_desc
(
0
,
CHANNEL_SOURCE_X
,
0
,
CHANNEL_SOURCE_Y
,
0
,
CHANNEL_SOURCE_ONE
,
0
,
CHANNEL_SOURCE_ONE
);
1
,
CHANNEL_SOURCE_X
,
1
,
CHANNEL_SOURCE_Y
,
0
,
CHANNEL_SOURCE_ONE
,
0
,
CHANNEL_SOURCE_ONE
);
idx
=
getFmtIdx
(
WINED3DFMT_R8G8B8A8_SNORM
);
gl_info
->
formats
[
idx
].
color_fixup
=
create_color_fixup_desc
(
1
,
CHANNEL_SOURCE_X
,
1
,
CHANNEL_SOURCE_Y
,
1
,
CHANNEL_SOURCE_Z
,
1
,
CHANNEL_SOURCE_W
);
}
if
(
!
gl_info
->
supported
[
NV_TEXTURE_SHADER
])
{
/* If GL_NV_texture_shader is not supported, those formats are converted, incompatibly
* with each other
*/
/* If GL_NV_texture_shader is not supported, R5G5_SNORM_L6_UNORM and R8G8_SNORM_L8X8_UNORM
* are converted, incompatiby with each other. */
idx
=
getFmtIdx
(
WINED3DFMT_R5G5_SNORM_L6_UNORM
);
gl_info
->
formats
[
idx
].
color_fixup
=
create_color_fixup_desc
(
1
,
CHANNEL_SOURCE_X
,
1
,
CHANNEL_SOURCE_Z
,
0
,
CHANNEL_SOURCE_Y
,
0
,
CHANNEL_SOURCE_ONE
);
idx
=
getFmtIdx
(
WINED3DFMT_R8G8_SNORM_L8X8_UNORM
);
gl_info
->
formats
[
idx
].
color_fixup
=
create_color_fixup_desc
(
1
,
CHANNEL_SOURCE_X
,
1
,
CHANNEL_SOURCE_Y
,
0
,
CHANNEL_SOURCE_Z
,
0
,
CHANNEL_SOURCE_W
);
idx
=
getFmtIdx
(
WINED3DFMT_R8G8B8A8_SNORM
);
gl_info
->
formats
[
idx
].
color_fixup
=
create_color_fixup_desc
(
1
,
CHANNEL_SOURCE_X
,
1
,
CHANNEL_SOURCE_Y
,
1
,
CHANNEL_SOURCE_Z
,
1
,
CHANNEL_SOURCE_W
);
}
else
{
/* If GL_NV_texture_shader is supported, WINED3DFMT_L6V5U5 and WINED3DFMT_X8L8V8U8
* are converted at surface loading time, but they do not need any modification in
* the shader, thus they are compatible with all WINED3DFMT_UNKNOWN group formats.
* WINED3DFMT_Q8W8V8U8 doesn't even need load-time conversion
*/
* the shader, thus they are compatible with all WINED3DFMT_UNKNOWN group formats. */
}
if
(
gl_info
->
supported
[
ARB_TEXTURE_COMPRESSION_RGTC
])
...
...
dlls/wined3d/wined3d_gl.h
View file @
6df52ca7
...
...
@@ -130,6 +130,7 @@ enum wined3d_gl_extension
EXT_TEXTURE_FILTER_ANISOTROPIC
,
EXT_TEXTURE_LOD_BIAS
,
EXT_TEXTURE_MIRROR_CLAMP
,
EXT_TEXTURE_SNORM
,
EXT_TEXTURE_SRGB
,
EXT_TEXTURE_SRGB_DECODE
,
EXT_VERTEX_ARRAY_BGRA
,
...
...
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