> It makes logical sense to me that mapping a buffer with both DISCARD and
> NOOVERWRITE would effectively ignore NOOVERWRITE. I've noticed that at
> least some engines will map a part of a buffer with NOOVERWRITE and draw
> with that part, map the next part of the buffer with NOOVERWRITE and
> draw with that part, etc, then after the last part of the buffer it maps
> with DISCARD to get new memory and keep going while the previous buffer
> memory is handled asynchronously by the driver or card.
>
> I notice that wined3d has some parts where it ignores/removes DISCARD,
> so it may not be a good idea to leave both DISCARD and NOOVERWRITE set.
> In such a case, the driver will get NOOVERWRITE for a part of the buffer
> that's still in use. It would probably be better to remove NOOVERWRITE
> when both DISCARD and NOOVERWRITE are set.
Both flags are independent of each other and provide useful information
to the OpenGL driver. The driver knows best how to map the resource.
By passing NOOVERWRITE and DISCARD it's likely going to use NOOVERWRITE,
as it's even less overhead than DISCARD.
I don't think that WINE should drop flags, except there's a driver bug
that can't be fixed (in the near future).
Regards,
Patrick
Hi,
While running your changed tests on Windows, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at
https://testbot.winehq.org/JobDetails.pl?Key=23919
Your paranoid android.
=== w1064 (32 bit thread) ===
thread.c:1086: Test failed: got 0 with 5 (expected FALSE with ERROR_GEN_FAILURE)
Hi,
While running your changed tests on Windows, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at
https://testbot.winehq.org/JobDetails.pl?Key=23918
Your paranoid android.
=== w2003std (32 bit loader) ===
loader.c:1772: Test failed: FlsGetValue returned 00031415, expected NULL
loader.c:1545: Test failed: FlsGetValue returned 00031415, expected NULL
loader.c:1550: Test failed: wrong FLS callback count 1, expected 2
loader.c:1774: Test failed: FlsGetValue failed with error 87
loader.c:1774: Test failed: FlsGetValue failed with error 87
loader.c:1545: Test failed: FlsGetValue returned 00031415, expected NULL
loader.c:1550: Test failed: wrong FLS callback count 0, expected 1
loader.c:1774: Test failed: FlsGetValue failed with error 87
loader.c:1774: Test failed: FlsGetValue failed with error 87
loader.c:1772: Test failed: FlsGetValue returned 00031415, expected NULL
loader.c:1772: Test failed: FlsGetValue returned 00031415, expected NULL
loader.c:1545: Test failed: FlsGetValue returned 00031415, expected NULL
loader.c:1550: Test failed: wrong FLS callback count 2, expected 3
loader.c:1774: Test failed: FlsGetValue failed with error 87
loader.c:1774: Test failed: FlsGetValue failed with error 87
=== w864 (32 bit loader) ===
loader.c:1917: Test failed: expected STILL_ACTIVE, got 195
loader.c:1952: Test failed: expected STILL_ACTIVE, got 195
=== w1064 (32 bit loader) ===
loader.c:2830: Test failed: Test 0: ResolveDelayLoadedAPI failed
loader.c:2831: Test failed: Test 0: expected 74374550, got 00000000
loader.c:2830: Test failed: Test 1: ResolveDelayLoadedAPI failed
loader.c:2831: Test failed: Test 1: expected 72BC2CF0, got 00000000
loader.c:2830: Test failed: Test 2: ResolveDelayLoadedAPI failed
loader.c:2831: Test failed: Test 2: expected 74372DC0, got 00000000
loader.c:2838: Test failed: Test 3: ResolveDelayLoadedAPI succeeded with 00000000
loader.c:2839: Test failed: Test 3: Wrong callback count: 0
loader.c:2838: Test failed: Test 4: ResolveDelayLoadedAPI succeeded with 00000000
loader.c:2839: Test failed: Test 4: Wrong callback count: 0
loader.c:1917: Test failed: expected STILL_ACTIVE, got 195
loader.c:1952: Test failed: expected STILL_ACTIVE, got 195
=== w1064 (64 bit loader) ===
loader.c:2830: Test failed: Test 0: ResolveDelayLoadedAPI failed
loader.c:2831: Test failed: Test 0: expected 00007FFC76DA5510, got 0000000000000000
loader.c:2830: Test failed: Test 1: ResolveDelayLoadedAPI failed
loader.c:2831: Test failed: Test 1: expected 00007FFC6EFE1B00, got 0000000000000000
loader.c:2830: Test failed: Test 2: ResolveDelayLoadedAPI failed
loader.c:2831: Test failed: Test 2: expected 00007FFC76DA2390, got 0000000000000000
loader.c:2838: Test failed: Test 3: ResolveDelayLoadedAPI succeeded with 0000000000000000
loader.c:2839: Test failed: Test 3: Wrong callback count: 0
loader.c:2838: Test failed: Test 4: ResolveDelayLoadedAPI succeeded with 0000000000000000
loader.c:2839: Test failed: Test 4: Wrong callback count: 0
loader.c:1917: Test failed: expected STILL_ACTIVE, got 195
loader.c:1952: Test failed: expected STILL_ACTIVE, got 195
Hi,
While running your changed tests on Windows, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at
https://testbot.winehq.org/JobDetails.pl?Key=23917
Your paranoid android.
=== w2003std (32 bit fiber) ===
fiber: unhandled exception c0000005 at 77E61897
Hi,
While running your changed tests on Windows, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at
https://testbot.winehq.org/JobDetails.pl?Key=23913
Your paranoid android.
=== w8 (32 bit capture) ===
capture.c:181: Test failed: Position 1015 expected 0
capture.c:231: Test failed: Position 2167 expected 1463
capture.c:263: Test failed: Position 2167 expected 1463
capture.c:325: Test failed: Position 3255 gap 1344
capture.c:349: Test failed: Position 4343 expected 3703
capture.c:374: Test failed: Position 4791 expected 4151
=== w864 (32 bit capture) ===
capture.c:181: Test failed: Position 1015 expected 0
capture.c:231: Test failed: Position 2167 expected 1463
capture.c:263: Test failed: Position 2167 expected 1463
capture.c:325: Test failed: Position 3255 gap 1344
capture.c:329: Test failed: GCP 13888 vs. BufferSize 21996
capture.c:349: Test failed: Position 4343 expected 3703
capture.c:350: Test failed: flags 1
capture.c:374: Test failed: Position 4791 expected 4151
=== w1064 (32 bit capture) ===
capture.c:181: Test failed: Position 1079 expected 0
capture.c:231: Test failed: Position 2167 expected 1527
capture.c:263: Test failed: Position 2167 expected 1527
capture.c:325: Test failed: Position 4151 gap 2176
capture.c:329: Test failed: GCP 11648 vs. BufferSize 21996
capture.c:349: Test failed: Position 5239 expected 4599
capture.c:350: Test failed: flags 1
capture.c:374: Test failed: Position 5687 expected 5047
=== w864 (64 bit capture) ===
capture.c:181: Test failed: Position 119 expected 0
capture.c:231: Test failed: Position 2167 expected 567
capture.c:263: Test failed: Position 2167 expected 567
capture.c:325: Test failed: Position 3191 gap 2176
=== w1064 (64 bit capture) ===
capture.c:181: Test failed: Position 1079 expected 0
capture.c:231: Test failed: Position 2167 expected 1527
capture.c:263: Test failed: Position 2167 expected 1527
capture.c:325: Test failed: Position 4151 gap 2176
capture.c:329: Test failed: GCP 12992 vs. BufferSize 21996
capture.c:349: Test failed: Position 5303 expected 4599
capture.c:350: Test failed: flags 1
capture.c:374: Test failed: Position 5751 expected 5047
On Thu, Jun 30, 2016 at 5:57 AM, Matthieu Nottale
<matthieu.nottale(a)infinit.io> wrote:
>
> IP dual stack (v4+v6) should be disabled by default, but previous code
> was setting IPV6_V6ONLY in bind() which prevented user to override it.
> This patch moves setting IPV6_V6ONLY to socket creation time.
Hi, can you explain more about what is the problem? Is there any
application affected?
> @@ -7163,6 +7149,14 @@ SOCKET WINAPI WSASocketW(int af, int type, int protocol,
> TRACE("\tcreated %04lx\n", ret );
> if (ipxptype > 0)
> set_ipx_packettype(ret, ipxptype);
> +#ifdef IPV6_V6ONLY
> + if (af == WS_AF_INET6)
> + {
> + // dual stack (v4+v6) should be disabled by default
> + int enable = 1;
> + WS_setsockopt(ret, WS_IPPROTO_IPV6, WS_IPV6_V6ONLY, &enable, sizeof(enable));
> + }
> +#endif
> return ret;
> }
// comments are not allowed, use /* */. Please use unixaf == AF_INET6
as the code uses that as the af var was already parsed by this point
in the code.
And please write tests to prove this behavior, create the AF_INET6
socket and getsockopt(IPV6_V6ONLY) in order to determine the default
on Windows and then bind and read again to prove it does not change
automagically (like Wine is doind). Since in Wine the operation is
only done when binding to anyaddr it should be useful to also try a
specific address bind and check too.
Best wishes,
Bruno