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
cf365fe5
Commit
cf365fe5
authored
Sep 04, 2020
by
Vitaly Lipatov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
commit 14.1.3 upon wine-1.7.25
parent
67d5f87b
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
125 additions
and
3 deletions
+125
-3
schannel_gnutls.c
dlls/secur32/schannel_gnutls.c
+1
-0
directx.c
dlls/wined3d/directx.c
+105
-0
glsl_shader.c
dlls/wined3d/glsl_shader.c
+1
-1
wined3d_private.h
dlls/wined3d/wined3d_private.h
+1
-0
mouse.c
dlls/winex11.drv/mouse.c
+17
-2
No files found.
dlls/secur32/schannel_gnutls.c
View file @
cf365fe5
...
...
@@ -480,6 +480,7 @@ BOOL schan_imp_init(void)
if
(
1
)
{
/* CROSSOVER HACK - bug 10151 */
const
char
*
libgnutls_name_candidates
[]
=
{
SONAME_LIBGNUTLS
,
"libgnutls.so.28"
,
"libgnutls-deb0.so.28"
,
"libgnutls.so.26"
,
NULL
};
int
i
;
...
...
dlls/wined3d/directx.c
View file @
cf365fe5
...
...
@@ -872,6 +872,101 @@ static BOOL match_fglrx(const struct wined3d_gl_info *gl_info, const char *gl_re
return
gl_vendor
==
GL_VENDOR_FGLRX
;
}
static
BOOL
match_broken_round
(
const
struct
wined3d_gl_info
*
gl_info
,
const
char
*
gl_renderer
,
enum
wined3d_gl_vendor
gl_vendor
,
enum
wined3d_pci_vendor
card_vendor
,
enum
wined3d_pci_device
device
)
{
const
char
*
shader
=
"#version 120
\n
"
"#extension GL_EXT_gpu_shader4 : enable
\n
"
"void main()
\n
"
"{
\n
"
" vec4 color;
\n
"
" vec4 rounded = round(gl_MultiTexCoord0.yxzw);
\n
"
" /* all(rounded == gl_MultiTexCoord1) fails for some reason */
\n
"
" if (all(equal(rounded, gl_MultiTexCoord1)))
\n
"
" {
\n
"
" color = vec4(0.0, 1.0, 0.0, 0.0);
\n
"
" }
\n
"
" else
\n
"
" {
\n
"
" color = vec4(1.0, 0.0, 0.0, 0.0);
\n
"
" }
\n
"
" gl_FrontColor = color;
\n
"
" gl_Position = gl_Vertex;
\n
"
"}
\n
"
;
GLuint
tex
,
fbo
;
GLuint
prog
,
vs
;
GLenum
status
;
DWORD
check
;
unsigned
char
red
,
green
,
blue
;
if
(
!
gl_info
->
supported
[
EXT_GPU_SHADER4
])
return
FALSE
;
if
(
wined3d_settings
.
offscreen_rendering_mode
!=
ORM_FBO
)
{
WARN
(
"FBOs not available, guessing broken glsl round from driver info
\n
"
);
return
gl_vendor
==
GL_VENDOR_APPLE
&&
card_vendor
==
HW_VENDOR_AMD
;
}
gl_info
->
gl_ops
.
gl
.
p_glGenTextures
(
1
,
&
tex
);
gl_info
->
gl_ops
.
gl
.
p_glBindTexture
(
GL_TEXTURE_2D
,
tex
);
gl_info
->
gl_ops
.
gl
.
p_glTexParameteri
(
GL_TEXTURE_2D
,
GL_TEXTURE_MIN_FILTER
,
GL_NEAREST
);
gl_info
->
gl_ops
.
gl
.
p_glTexParameteri
(
GL_TEXTURE_2D
,
GL_TEXTURE_MAG_FILTER
,
GL_NEAREST
);
gl_info
->
gl_ops
.
gl
.
p_glTexImage2D
(
GL_TEXTURE_2D
,
0
,
GL_RGBA8
,
1
,
1
,
0
,
GL_BGRA
,
GL_UNSIGNED_INT_8_8_8_8_REV
,
NULL
);
checkGLcall
(
"glTexImage2D"
);
gl_info
->
gl_ops
.
gl
.
p_glBindTexture
(
GL_TEXTURE_2D
,
0
);
gl_info
->
fbo_ops
.
glGenFramebuffers
(
1
,
&
fbo
);
gl_info
->
fbo_ops
.
glBindFramebuffer
(
GL_FRAMEBUFFER
,
fbo
);
gl_info
->
fbo_ops
.
glFramebufferTexture2D
(
GL_FRAMEBUFFER
,
GL_COLOR_ATTACHMENT0
,
GL_TEXTURE_2D
,
tex
,
0
);
checkGLcall
(
"glFramebufferTexture2D"
);
status
=
gl_info
->
fbo_ops
.
glCheckFramebufferStatus
(
GL_FRAMEBUFFER
);
if
(
status
!=
GL_FRAMEBUFFER_COMPLETE
)
ERR
(
"FBO status %#x
\n
"
,
status
);
checkGLcall
(
"glCheckFramebufferStatus"
);
vs
=
GL_EXTCALL
(
glCreateShaderObjectARB
(
GL_VERTEX_SHADER
));
GL_EXTCALL
(
glShaderSourceARB
(
vs
,
1
,
&
shader
,
0
));
GL_EXTCALL
(
glCompileShaderARB
(
vs
));
prog
=
GL_EXTCALL
(
glCreateProgramObjectARB
());
GL_EXTCALL
(
glAttachObjectARB
(
prog
,
vs
));
GL_EXTCALL
(
glLinkProgramARB
(
prog
));
GL_EXTCALL
(
glDeleteObjectARB
(
vs
));
GL_EXTCALL
(
glUseProgramObjectARB
(
prog
));
checkGLcall
(
"round test shader setup"
);
gl_info
->
gl_ops
.
gl
.
p_glBegin
(
GL_QUADS
);
GL_EXTCALL
(
glMultiTexCoord4fARB
(
0
,
1
.
0
,
2
.
0
,
3
.
0
,
4
.
0
));
/* Note that the result is swizzled */
GL_EXTCALL
(
glMultiTexCoord4fARB
(
1
,
2
.
0
,
1
.
0
,
3
.
0
,
4
.
0
));
gl_info
->
gl_ops
.
gl
.
p_glVertex3f
(
-
1
.
0
,
-
1
.
0
,
-
0
.
5
);
gl_info
->
gl_ops
.
gl
.
p_glVertex3f
(
-
1
.
0
,
1
.
0
,
-
0
.
5
);
gl_info
->
gl_ops
.
gl
.
p_glVertex3f
(
1
.
0
,
1
.
0
,
-
0
.
5
);
gl_info
->
gl_ops
.
gl
.
p_glVertex3f
(
1
.
0
,
-
1
.
0
,
-
0
.
5
);
gl_info
->
gl_ops
.
gl
.
p_glEnd
();
checkGLcall
(
"round test draw"
);
gl_info
->
gl_ops
.
gl
.
p_glBindTexture
(
GL_TEXTURE_2D
,
tex
);
gl_info
->
gl_ops
.
gl
.
p_glGetTexImage
(
GL_TEXTURE_2D
,
0
,
GL_BGRA
,
GL_UNSIGNED_INT_8_8_8_8_REV
,
&
check
);
GL_EXTCALL
(
glUseProgramObjectARB
(
0
));
GL_EXTCALL
(
glDeleteObjectARB
(
prog
));
gl_info
->
fbo_ops
.
glBindFramebuffer
(
GL_FRAMEBUFFER
,
0
);
gl_info
->
fbo_ops
.
glDeleteFramebuffers
(
1
,
&
fbo
);
gl_info
->
gl_ops
.
gl
.
p_glBindTexture
(
GL_TEXTURE_2D
,
0
);
gl_info
->
gl_ops
.
gl
.
p_glDeleteTextures
(
1
,
&
tex
);
checkGLcall
(
"round test teardown"
);
TRACE
(
"GLSL round test color: %08x
\n
"
,
check
);
red
=
(
check
&
0x00ff0000
)
>>
16
;
green
=
(
check
&
0x0000ff00
)
>>
8
;
blue
=
(
check
&
0x000000ff
);
/* If round behaves correctly green is returned. Return FALSE in this
* case(don't enable quirk). For any other color return TRUE */
return
(
red
>
0x10
)
||
(
green
<
0xf0
)
||
(
blue
>
0x10
);
}
static
void
quirk_arb_constants
(
struct
wined3d_gl_info
*
gl_info
)
{
TRACE
(
"Using ARB vs constant limit(=%u) for GLSL.
\n
"
,
gl_info
->
limits
.
arb_vs_native_constants
);
...
...
@@ -1157,6 +1252,11 @@ static void quirk_limited_tex_filtering(struct wined3d_gl_info *gl_info)
gl_info
->
quirks
|=
WINED3D_QUIRK_LIMITED_TEX_FILTERING
;
}
static
void
broken_round_quirk
(
struct
wined3d_gl_info
*
gl_info
)
{
gl_info
->
quirks
|=
WINED3D_CX_QUIRK_BROKEN_ROUND
;
}
static
void
quirk_apple_double_buffer
(
struct
wined3d_gl_info
*
gl_info
)
{
gl_info
->
quirks
|=
WINED3D_CX_QUIRK_APPLE_DOUBLE_BUFFER
;
...
...
@@ -1310,6 +1410,11 @@ static const struct driver_quirk quirk_table[] =
"Render to FBO quirk"
},
{
match_broken_round
,
broken_round_quirk
,
"Broken GLSL round"
},
{
match_apple
,
quirk_apple_double_buffer
,
"Apple double buffered context bug (9330)"
...
...
dlls/wined3d/glsl_shader.c
View file @
cf365fe5
...
...
@@ -2508,7 +2508,7 @@ static void shader_glsl_mov(const struct wined3d_shader_instruction *ins)
/* We need to *round* to the nearest int here. */
unsigned
int
mask_size
=
shader_glsl_get_write_mask_size
(
write_mask
);
if
(
gl_info
->
supported
[
EXT_GPU_SHADER4
])
if
(
gl_info
->
supported
[
EXT_GPU_SHADER4
]
&&
!
(
gl_info
->
quirks
&
WINED3D_CX_QUIRK_BROKEN_ROUND
)
)
{
if
(
mask_size
>
1
)
shader_addline
(
buffer
,
"ivec%d(round(%s)));
\n
"
,
mask_size
,
src0_param
.
param_str
);
...
...
dlls/wined3d/wined3d_private.h
View file @
cf365fe5
...
...
@@ -72,6 +72,7 @@
#define WINED3D_CX_QUIRK_BROKEN_ARA 0x00100000
#define WINED3D_CX_QUIRK_BLIT 0x00200000
#define WINED3D_CX_QUIRK_RENDER_TO_FBO 0x00800000
#define WINED3D_CX_QUIRK_BROKEN_ROUND 0x01000000
/* Texture format fixups */
...
...
dlls/winex11.drv/mouse.c
View file @
cf365fe5
...
...
@@ -131,6 +131,7 @@ static Cursor create_cursor( HANDLE handle );
#ifdef HAVE_X11_EXTENSIONS_XINPUT2_H
static
BOOL
xinput2_available
;
static
BOOL
broken_rawevents
;
#define MAKE_FUNCPTR(f) static typeof(f) * p##f
MAKE_FUNCPTR
(
XIFreeDeviceInfo
);
MAKE_FUNCPTR
(
XIQueryDevice
);
...
...
@@ -1579,7 +1580,15 @@ void X11DRV_MotionNotify( HWND hwnd, XEvent *xev )
if
(
!
hwnd
)
{
struct
x11drv_thread_data
*
thread_data
=
x11drv_thread_data
();
if
(
thread_data
->
warp_serial
&&
(
long
)(
event
->
serial
-
thread_data
->
warp_serial
)
<
0
)
return
;
if
(
thread_data
->
warp_serial
)
{
if
((
long
)(
event
->
serial
-
thread_data
->
warp_serial
)
<
0
)
{
TRACE
(
"pos %d,%d old serial %lu, ignoring
\n
"
,
input
.
u
.
mi
.
dx
,
input
.
u
.
mi
.
dy
,
event
->
serial
);
return
;
}
thread_data
->
warp_serial
=
0
;
/* we caught up now */
}
}
send_mouse_input
(
hwnd
,
event
->
window
,
event
->
state
,
&
input
);
...
...
@@ -1669,7 +1678,7 @@ static void X11DRV_RawMotion( XGenericEventCookie *xev )
break
;
}
if
(
thread_data
->
warp_serial
)
if
(
broken_rawevents
&&
thread_data
->
warp_serial
)
{
if
((
long
)(
xev
->
serial
-
thread_data
->
warp_serial
)
<
0
)
{
...
...
@@ -1716,6 +1725,12 @@ void X11DRV_XInput2_Init(void)
#undef LOAD_FUNCPTR
xinput2_available
=
XQueryExtension
(
gdi_display
,
"XInputExtension"
,
&
xinput2_opcode
,
&
event
,
&
error
);
/* Until version 1.10.4 rawinput was broken in XOrg, see
* https://bugs.freedesktop.org/show_bug.cgi?id=30068 */
broken_rawevents
=
strstr
(
XServerVendor
(
gdi_display
),
"X.Org"
)
&&
XVendorRelease
(
gdi_display
)
<
11004000
;
#else
TRACE
(
"X Input 2 support not compiled in.
\n
"
);
#endif
...
...
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