Wine-Devel
By thread
wine-devel@list.winehq.org
By month
Messages by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
November 2021
- 83 participants
- 2620 messages
Re: [PATCH 8/8] wined3d: Try to allocate new Vulkan BOs from the client thread for DISCARD maps.
by Zebediah Figura
On 11/3/21 12:11 PM, Henri Verbeet wrote:
> On Wed, 3 Nov 2021 at 00:37, Zebediah Figura <zfigura(a)codeweavers.com> wrote:
>> +static bool adapter_vk_alloc_bo(struct wined3d_device *device, struct wined3d_resource *resource,
>> + unsigned int sub_resource_idx, struct wined3d_bo_address *addr)
>> +{
>> + wined3d_not_from_cs(device->cs);
>> +
>> + if (resource->type == WINED3D_RTYPE_BUFFER)
>> + {
>> + struct wined3d_buffer_vk *buffer_vk = wined3d_buffer_vk(buffer_from_resource(resource));
>> + struct wined3d_client_bo_vk *client_bo;
>> +
>> + if (!(client_bo = heap_alloc(sizeof(*client_bo))))
>> + return false;
>> +
>> + if (!wined3d_buffer_vk_create_buffer_object(buffer_vk, NULL, &client_bo->bo))
>> + {
>> + heap_free(client_bo);
>> + return false;
>> + }
>> +
>> + if (!client_bo->bo.b.map_ptr)
>> + {
>> + struct wined3d_client_bo_vk_map_ctx ctx = {.device = device, .client_bo = client_bo};
>> +
>> + WARN_(d3d_perf)("BO %p (chunk %p, slab %p) is not persistently mapped.\n", &client_bo->bo,
>> + client_bo->bo.memory ? client_bo->bo.memory->chunk : NULL, client_bo->bo.slab);
>> +
>> + wined3d_cs_map_object(device->cs, wined3d_client_bo_vk_map_cs, &ctx);
>> + wined3d_cs_finish(device->cs, WINED3D_CS_QUEUE_MAP);
>> + }
> wined3d_cs_map_object() almost sounds like it would emit a
> WINED3D_CS_OP_MAP, somewhat like wined3d_device_context_map() back
> when that was still called wined3d_cs_map()...
Indeed, except that WINED3D_CS_OP_MAP takes the resource. I don't think
we want to change that, either, although we could create a new CS op
instead of using WINED3D_CS_OP_CALLBACK.
(Now that I think about it, *is* there any sort of a rule as to what
deserves WINED3D_CS_OP_CALLBACK and what doesn't? I know that currently
it's just a matter of init and destroy, but it seeems a bit arbitrary on
reflection.)
> Here too, Vulkan could map from application threads, it just needs to
> be synchronised. In the general case we'd need to make sure the GPU
> isn't still using the bo, but that's not an issue for newly allocated
> bo's.
>
>> +void wined3d_buffer_rename(struct wined3d_buffer *buffer, struct wined3d_context *context, struct wined3d_bo *bo)
>> +{
>> + TRACE("buffer %p, context %p, bo %p.\n", buffer, context, bo);
>> +
>> + buffer->buffer_ops->buffer_rename_bo(buffer, context, bo);
>> + buffer->buffer_object = (uintptr_t)bo;
>> + wined3d_buffer_validate_location(buffer, WINED3D_LOCATION_BUFFER);
>> + wined3d_buffer_invalidate_location(buffer, ~WINED3D_LOCATION_BUFFER);
>> +}
>> +
> If we're doing this at the wined3d_buffer level, perhaps it would make
> sense to name this something like wined3d_buffer_set_bo(),
> wined3d_buffer_assign_bo(), or something along those lines.
>
>> +static void wined3d_buffer_vk_rename_bo(struct wined3d_buffer *buffer,
>> + struct wined3d_context *context, struct wined3d_bo *bo)
>> +{
>> + struct wined3d_bo_vk *prev_bo = (struct wined3d_bo_vk *)buffer->buffer_object;
>> + struct wined3d_context_vk *context_vk = wined3d_context_vk(context);
>> + struct wined3d_buffer_vk *buffer_vk = wined3d_buffer_vk(buffer);
>> + struct wined3d_bo_vk *bo_vk = wined3d_bo_vk(bo);
>> +
>> + if (prev_bo)
>> + {
>> + struct wined3d_bo_user *bo_user;
>> +
>> + LIST_FOR_EACH_ENTRY(bo_user, &prev_bo->b.users, struct wined3d_bo_user, entry)
>> + bo_user->valid = false;
>> + assert(list_empty(&bo_vk->b.users));
>> + list_move_head(&bo_vk->b.users, &prev_bo->b.users);
>> +
>> + if (prev_bo != &buffer_vk->bo)
>> + {
>> + struct wined3d_client_bo_vk *client_bo = CONTAINING_RECORD(prev_bo, struct wined3d_client_bo_vk, bo);
>> +
>> + wined3d_context_vk_destroy_bo(context_vk, &client_bo->bo);
>> + heap_free(client_bo);
>> + }
>> + }
>> + else
>> + {
>> + list_add_head(&bo_vk->b.users, &buffer_vk->b.bo_user.entry);
>> + }
>> +}
>> +
> I admit I didn't try very hard, but it's not immediately clear to me
> why we wouldn't always assign the new bo to "buffer_vk->bo" here, and
> mark the previous one for destruction.
>
Right, the basic reason is that the client thread might still be holding
a pointer to "bo_vk" in the wined3d_client_resource structure. I'll add
a comment to that effect...
Nov. 3, 2021
Re: [PATCH 1/8] wined3d: Pass a wined3d_device_vk to wined3d_context_vk_create_bo().
by Zebediah Figura
On 11/3/21 12:10 PM, Henri Verbeet wrote:
> On Wed, 3 Nov 2021 at 00:20, Zebediah Figura <zfigura(a)codeweavers.com> wrote:
>> With the goal of making the context_vk parameter optional, so that we can
>> allocate new BOs from the client thread.
>>
> This would mainly be for the wined3d_buffer_vk_create_buffer_object()
> call in patch 8/8, but in the Vulkan backend, we can always get the
> context through "device_vk->context_vk", provided we're inside an
> init_3d()/uninit_3d() pair. I.e., the Vulkan backend can make Vulkan
> calls from applications threads, it just needs synchronisation. I.e.,
> I don't think the Vulkan backend needs this.
It's true that this patch series is modeled more like the GL backend
than it needs to be in general.
I had gotten the impression that we didn't want to touch
wined3d_context_vk outside of the CS thread, even though it is thread
safe. If that's not the case, all the better, although I'm still more
than a little confused about the seemingly arbitrary division between
device and context in the Vulkan adapter.
>
> That said, I still think this change is probably the right thing to
> do, but with a bit of a different justification. We'll likely need a
> change like this for wined3d_context_gl_create_bo(), and then it makes
> sense to make wined3d_context_vk_create_bo() a device function as well
> for consistency.
>
>> -static bool wined3d_context_vk_create_slab_bo(struct wined3d_context_vk *context_vk,
>> +static bool wined3d_context_vk_create_slab_bo(struct wined3d_device_vk *device_vk, struct wined3d_context_vk *context_vk,
>> VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags memory_type, struct wined3d_bo_vk *bo)
>> {
> If we're making this a device function, that should probably be called
> wined3d_device_vk_create_slab_bo(), and be moved to device.c.
>
>> -BOOL wined3d_context_vk_create_bo(struct wined3d_context_vk *context_vk, VkDeviceSize size,
>> - VkBufferUsageFlags usage, VkMemoryPropertyFlags memory_type, struct wined3d_bo_vk *bo)
>> +BOOL wined3d_device_vk_create_bo(struct wined3d_device_vk *device_vk, struct wined3d_context_vk *context_vk,
>> + VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags memory_type, struct wined3d_bo_vk *bo)
>> {
> If we're making this a device function, this should be moved to
> device.c. And if we're touching this, be may as well use the standard
> "bool" instead of "BOOL".
>
Nov. 3, 2021
Re: [PATCH v2 3/5] mshtml: Don't release location when releasing the window.
by Jacek Caban
On 11/2/21 7:07 PM, Gabriel Ivăncescu wrote:
> We don't hold a refcount to the location, but only a weak ref (as tests show).
To be honest, the test is not really interesting and I think that it
would be better to hold the reference instead. What we observe in tests
may be explained by some uninteresting internal details (like maybe the
returned interface is just some sort of a wrapper), but current
behaviour is broken for scripts. As an example like:
location.prop = "test";
var v = location.prop;
location may be released between those sentences, causing "prop" to be lost.
I think that we can just remove the reference count test if it causes
problems.
Thanks,
Jacek
Nov. 3, 2021
Re: [PATCH v2 2/5] jscript: Implement Object.prototype.__proto__ property.
by Jacek Caban
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
Nov. 3, 2021
Re: [PATCH v2 1/5] jscript: Implement Object.prototype.isPrototypeOf method.
by Jacek Caban
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
Nov. 3, 2021
Re: [PATCH v5 3/7] win32u: fix return value of StretchDIBits for EMF DC.
by Jacek Caban
On 11/3/21 5:12 AM, Jin-oh Kang wrote:
> On Wed, Nov 3, 2021 at 1:09 AM Jacek Caban <jacek(a)codeweavers.com> wrote:
>> On 11/2/21 4:46 AM, Jin-oh Kang wrote:
>>> On Tue, Nov 2, 2021 at 6:21 AM Jacek Caban <jacek(a)codeweavers.com> wrote:
>>>> Hi Jinoh,
>>>>
>>>> On 11/1/21 6:30 AM, Jinoh Kang wrote:
>>>>> Signed-off-by: Jinoh Kang <jinoh.kang.kr(a)gmail.com>
>>>>> ---
>>>>> dlls/win32u/emfdrv.c | 2 +-
>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/dlls/win32u/emfdrv.c b/dlls/win32u/emfdrv.c
>>>>> index e05f11d7b9a..395d51048d8 100644
>>>>> --- a/dlls/win32u/emfdrv.c
>>>>> +++ b/dlls/win32u/emfdrv.c
>>>>> @@ -408,7 +408,7 @@ static INT CDECL EMFDRV_StretchDIBits( PHYSDEV dev, INT x_dst, INT y_dst, INT wi
>>>>> UINT wUsage, DWORD dwRop )
>>>>> {
>>>>> /* FIXME: Update bound rect */
>>>>> - return height_src;
>>>>> + return abs( info->bmiHeader.biHeight );
>>>>> }
>>>>>
>>>>> static INT CDECL EMFDRV_SetDIBitsToDevice( PHYSDEV dev, INT x_dst, INT y_dst, DWORD width,
>>>> For this and the next patch, you could simply remove
>>>> EMFDRV_StretchDIBits and EMFDRV_SetDIBitsToDevice and let the null
>>>> driver take care of it.
>>> The nulldrv code is still broken w.r.t. BI_RLE[48] case, so I guess
>>> that side needs fixing?
>>
>> If it's broken then ideally yes, but not necessarily in this series. A
>> quick testing with tests from your patches works fine.
> My gdi32 emf tests didn't cover the BI_RLE[48] cases mainly for
> brevity reasons--metafile.c was approaching ~10kloc at this point.
> Mind if I move all the fixtures to .rc files in the next patch series
> where I would (possibly) fix the nulldrv code to match EMF and cover
> more pathological cases?
Sure, a separated series is fine, it's not strictly related to this series.
>>>> I originally left it because of bound rect
>>>> update (that's supposed to happen in win32u instead of of gdi32), but
>>>> that doesn't seem worth keeping it now.
>>> I suppose the most ideal way to deal with it is to do normalization
>>> early (in either gdi32 or NtGdi* functions) so that the calculation
>>> code doesn't have to be duplicated between emfdc.c, EMFDRV and
>>> nulldrv. Currently the args are passed as-is to both EMFDC and NtGdi*,
>>> and the normalization work is done *twice*.
>>
>> NtGdi* functions generally need to validate input. They are syscalls
>> which generally can't trust callers much and we mostly follow what
>> Windows does here.
> I agree. A thing to note, though, is that in general validation !=
> normalisation (although the latter sometimes helps sanitize the
> input). It is possible that most normalization is done on the GDI32
> side, and win32k.sys accepts whatever it seems as valid. Then again,
> this is a pure speculation and I'm not an NT developer.
It's possible to test what Windows does by calling win32u functions
directly. Those functions are not really documented nor stable, through,
and we don't need to follow that very strictly, but it's generally good
to follow when possible.
Thanks,
Jacek
Nov. 3, 2021
Re: [PATCH] configure.ac: allow expressing dwarf version in CFLAGS and CROSSCFLAGS
by Jacek Caban
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
Nov. 3, 2021
Re: [PATCH] vbscript: Support VT_BSTR in stack_pop_bool.
by Jacek Caban
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
Nov. 3, 2021
Re: [PATCH 1/3] wined3d: Test if an offset is needed to get the correct filling convention (v3).
by Marvin
Hi,
While running your changed tests, 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=101249
Your paranoid android.
=== w1064v1809 (32 bit report) ===
d3d11:
d3d11.c:5920: Test failed: Got unexpected IAVertices count: 0.
d3d11.c:5921: Test failed: Got unexpected IAPrimitives count: 0.
d3d11.c:5922: Test failed: Got unexpected VSInvocations count: 0.
d3d11.c:5925: Test failed: Got unexpected CInvocations count: 0.
d3d11.c:5926: Test failed: Got unexpected CPrimitives count: 0.
=== w10pro64 (32 bit report) ===
d3d11:
d3d11.c:5920: Test failed: Got unexpected IAVertices count: 0.
d3d11.c:5921: Test failed: Got unexpected IAPrimitives count: 0.
d3d11.c:5922: Test failed: Got unexpected VSInvocations count: 0.
d3d11.c:5925: Test failed: Got unexpected CInvocations count: 0.
d3d11.c:5926: Test failed: Got unexpected CPrimitives count: 0.
=== debiant2 (32 bit report) ===
d3d11:
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
=== debiant2 (32 bit Arabic:Morocco report) ===
d3d11:
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
=== debiant2 (32 bit German report) ===
d3d11:
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
=== debiant2 (32 bit French report) ===
d3d11:
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
=== debiant2 (32 bit Hebrew:Israel report) ===
d3d11:
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
=== debiant2 (32 bit Hindi:India report) ===
d3d11:
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
=== debiant2 (32 bit Japanese:Japan report) ===
d3d11:
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
=== debiant2 (32 bit Chinese:China report) ===
d3d11:
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
=== debiant2 (32 bit WoW report) ===
d3d11:
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999999e-002.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42500000e-001.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373704e-003), expected 0x147ae (4.99999553e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747632e-003), expected 0x1eb85 (7.49999329e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750145e-002), expected 0x33333 (1.24999888e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899935e-001), expected 0xa47ae1 (6.42500022e-001).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097461e-002), expected 0x85293 (3.25099845e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940032e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666209e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258030e-002), expected 0x47b (1.75020981e-002).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894179e-001), expected 0xa47a (6.42496376e-001).
=== debiant2 (64 bit WoW report) ===
d3d11:
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999989e-003.
d3d11.c:28005: Test failed: Got depth 4.99374978e-003, expected 4.99999989e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999983e-003.
d3d11.c:28005: Test failed: Got depth 7.48750009e-003, expected 7.49999983e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999997e-002.
d3d11.c:28005: Test failed: Got depth 1.24749998e-002, expected 1.24999997e-002.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42499986e-001.
d3d11.c:28005: Test failed: Got depth 6.40899956e-001, expected 6.42499986e-001.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28005: Test failed: Got depth 2.50997487e-003, expected 2.50999994e-003.
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373721e-003), expected 0x147ae (4.99999570e-003).
d3d11.c:28013: Test failed: Got value 0x14745 (4.99373721e-003), expected 0x147ae (4.99999570e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097479e-002), expected 0x85293 (3.25099863e-002).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747634e-003), expected 0x1eb85 (7.49999331e-003).
d3d11.c:28013: Test failed: Got value 0x1eab3 (7.48747634e-003), expected 0x1eb85 (7.49999331e-003).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097479e-002), expected 0x85293 (3.25099863e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750147e-002), expected 0x33333 (1.24999890e-002).
d3d11.c:28013: Test failed: Got value 0x33190 (1.24750147e-002), expected 0x33333 (1.24999890e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097479e-002), expected 0x85293 (3.25099863e-002).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899956e-001), expected 0xa47ae0 (6.42499983e-001).
d3d11.c:28013: Test failed: Got value 0xa41204 (6.40899956e-001), expected 0xa47ae0 (6.42499983e-001).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097479e-002), expected 0x85293 (3.25099863e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097479e-002), expected 0x85293 (3.25099863e-002).
d3d11.c:28013: Test failed: Got value 0x8528f (3.25097479e-002), expected 0x85293 (3.25099863e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940078e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x28e (9.97940078e-003), expected 0x290 (1.00099184e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666207e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x331 (1.24666207e-002), expected 0x334 (1.25123980e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258035e-002), expected 0x47b (1.75020974e-002).
d3d11.c:28022: Test failed: Got value 0x476 (1.74258035e-002), expected 0x47b (1.75020974e-002).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894175e-001), expected 0xa47a (6.42496347e-001).
d3d11.c:28022: Test failed: Got value 0xa411 (6.40894175e-001), expected 0xa47a (6.42496347e-001).
Nov. 3, 2021
[PATCH 3/3] wined3d: Emulate fractional viewports if GL doesn't support them (v3).
by Stefan Dösinger
This allows test_fractional_viewports to pass regardless of GL capabilies.
I don't think we can get rid of WINED3D_PIXEL_CENTER_INTEGER (and add +0.5
in the client libs) due to vpos in d3d9 shaders.
Signed-off-by: Stefan Dösinger <stefan(a)codeweavers.com>
---
Version 3: Properly assign gl_info->limits.viewport_subpixel_bits. v2 of the
patch had a compile error...
Version 2: Make it depend on GL_VIEWPORT_SUBPIXEL_BITS instead of support
for GL_ARB_viewport_array. Floor viewport coordinates passed to GL if we
use GL_ARB_viewport_array but decide the subpixel support is insufficient.
---
dlls/wined3d/adapter_gl.c | 3 +++
dlls/wined3d/adapter_vk.c | 1 +
dlls/wined3d/state.c | 16 ++++++++++++++++
dlls/wined3d/wined3d_private.h | 14 +++++++++++---
4 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index 2a91418b0d0..7ec30cb4356 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -991,6 +991,7 @@ static void quirk_broken_arb_fog(struct wined3d_gl_info *gl_info)
static void quirk_broken_viewport_subpixel_bits(struct wined3d_gl_info *gl_info)
{
+ gl_info->limits.viewport_subpixel_bits = 0;
if (gl_info->supported[ARB_CLIP_CONTROL])
{
TRACE("Disabling ARB_clip_control.\n");
@@ -3655,6 +3656,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
TRACE("Disabling ARB_clip_control because viewport subpixel bits < 8.\n");
gl_info->supported[ARB_CLIP_CONTROL] = FALSE;
}
+ gl_info->limits.viewport_subpixel_bits = subpixel_bits;
}
if (gl_info->supported[ARB_CLIP_CONTROL] && !gl_info->supported[ARB_VIEWPORT_ARRAY])
{
@@ -5141,6 +5143,7 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_
d3d_info->full_ffp_varyings = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_FULL_FFP_VARYINGS);
d3d_info->scaled_resolve = !!gl_info->supported[EXT_FRAMEBUFFER_MULTISAMPLE_BLIT_SCALED];
d3d_info->pbo = !!gl_info->supported[ARB_PIXEL_BUFFER_OBJECT];
+ d3d_info->subpixel_viewport = gl_info->limits.viewport_subpixel_bits >= 8;
d3d_info->feature_level = feature_level_from_caps(gl_info, &shader_caps, &fragment_caps);
d3d_info->filling_convention_offset = gl_info->filling_convention_offset;
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c
index d82b5221d3c..4ca839e72b1 100644
--- a/dlls/wined3d/adapter_vk.c
+++ b/dlls/wined3d/adapter_vk.c
@@ -2223,6 +2223,7 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_
d3d_info->scaled_resolve = false;
d3d_info->pbo = true;
d3d_info->feature_level = feature_level_from_caps(&shader_caps);
+ d3d_info->subpixel_viewport = true;
/* Like GL, Vulkan doesn't explicitly specify a filling convention and only mandates that a
* shared edge of two adjacent triangles generate a fragment for exactly one of the triangles.
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 901771fdcc1..5e41f681c75 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -4208,6 +4208,22 @@ static void viewport_miscpart(struct wined3d_context *context, const struct wine
viewports[i * 4 + 1] = vp[i].y;
viewports[i * 4 + 2] = vp[i].width;
viewports[i * 4 + 3] = vp[i].height;
+
+ /* Don't pass fractionals to GL if we earlier decided not to use
+ * this functionality for two reasons: First, GL might offer us
+ * fewer than 8 bits, and still make use of the fractional, in
+ * addition to the emulation we apply in shader_get_position_fixup.
+ * Second, even if GL tells us it has no subpixel precision (Mac OS!)
+ * it might still do something with the fractional amount, e.g.
+ * round it upwards. I can't find any info on rounding in
+ * GL_ARB_viewport_array. */
+ if (!context->d3d_info->subpixel_viewport)
+ {
+ viewports[i * 4] = floor(viewports[i * 4]);
+ viewports[i * 4 + 1] = floor(viewports[i * 4 + 1]);
+ viewports[i * 4 + 2] = floor(viewports[i * 4 + 2]);
+ viewports[i * 4 + 3] = floor(viewports[i * 4 + 3]);
+ }
}
if (context->viewport_count > state->viewport_count)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 6e122ce31dc..1f1e2e91dbb 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -240,6 +240,7 @@ struct wined3d_d3d_info
uint32_t full_ffp_varyings : 1;
uint32_t scaled_resolve : 1;
uint32_t pbo : 1;
+ uint32_t subpixel_viewport : 1;
enum wined3d_feature_level feature_level;
DWORD multisample_draw_location;
@@ -3237,6 +3238,7 @@ struct wined3d_gl_limits
unsigned int framebuffer_width;
unsigned int framebuffer_height;
+ unsigned int viewport_subpixel_bits;
UINT glsl_varyings;
UINT glsl_vs_float_constants;
@@ -5760,7 +5762,7 @@ static inline BOOL shader_is_scalar(const struct wined3d_shader_register *reg)
static inline void shader_get_position_fixup(const struct wined3d_context *context,
const struct wined3d_state *state, unsigned int fixup_count, float *position_fixup)
{
- float center_offset;
+ float center_offset, x = 0.0f, y = 0.0f;
unsigned int i;
/* See get_projection_matrix() in utils.c for a discussion of the position fixup.
@@ -5777,8 +5779,14 @@ static inline void shader_get_position_fixup(const struct wined3d_context *conte
{
position_fixup[4 * i ] = 1.0f;
position_fixup[4 * i + 1] = 1.0f;
- position_fixup[4 * i + 2] = center_offset / state->viewports[i].width;
- position_fixup[4 * i + 3] = -center_offset / state->viewports[i].height;
+ if (!context->d3d_info->subpixel_viewport)
+ {
+ double dummy;
+ x = modf(state->viewports[i].x, &dummy) * 2.0f;
+ y = modf(state->viewports[i].y, &dummy) * 2.0f;
+ }
+ position_fixup[4 * i + 2] = (center_offset + x) / state->viewports[i].width;
+ position_fixup[4 * i + 3] = -(center_offset + y) / state->viewports[i].height;
if (context->render_offscreen)
{
--
2.32.0
Nov. 3, 2021