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
May 2016
- 41 participants
- 250 messages
Re: [PATCH] d3dx9: Improve performance and memory usage in preshader constants setting.
by Matteo Bruni
2016-05-31 11:48 GMT+02:00 Paul Gofman <gofmanp(a)gmail.com>:
> On 05/31/2016 12:24 AM, Matteo Bruni wrote:
>> This seems overly complicated and fragile.
>> Instead of this kind of "5 instructions bytecode" isn't it easier to
>> just store and then lookup a struct with all the info you need?
> Keeping a struct with offsets & count altogether is of course more
> straightforward, but I intentionally did it this way to save a lot of
> extra space and to introduce an easier coalescing. When there is a
> matrix transpose involved (which happens quite often in real apps as far
> as I have seen) the whole structure would be duplicated for every matrix
> element. In the current approach each element for transposed matrix has
> just one offset (destination offset changes sequentially and does not
> come to the array for each matrix element) and one count of 1. The other
> way to optimize this is to introduce a separate operation for transposed
> matrix copy, but will it really be simpler or nicer than it is now?
> Current approach is indeed a sort of encoding the data copy into a very
> simple bytecode. Keeping the whole struct and optimizing as a separate
> op for matrix transpose would be the same in principle, but I am afraid
> will result in a bit more code and a bit more mess as there will be more
> cases to handle. I thought the current approach is simpler as the data
> copy is encoded in a generic and simple way so on the actual copy I do
> not have to care for any specifics of initial parameter & constant
> layout, as well as in process of extending the array & coalescing.
I don't see why just moving the part of set_constants() which
generates the set_state structures for each "copy" to init time would
be more complicated than the current solution. It might take some more
memory (not a whole lot more, AFAICS) but other than that it seems
strictly nicer to me. Maybe it's a case of "beauty is in the eye of
the beholder", I don't know...
The issue with transposed matrices seems mostly orthogonal to the
encoding of the constant uploads and I agree it's important. What
about simply adding a transpose flag and the stride of the matrix and
encode it all in one struct (or something like a
COPY_STATE_TYPE_COPY_TRANSPOSED op for your approach)? It seems it
should be good from a practical standpoint and it should reduce the
number of operations (encoded either way) you have to store by a lot.
>> I
>> guess the end result would be something akin to storing an array of
>> struct d3dx_const_copy_state in place of struct d3dx_const_param_set.
>> I don't know how the code would exactly look like but I would start by
>> moving building all the struct d3dx_const_copy_param to init time.
> I am not sure I understand what you mean here, could you please clarify?
> In the variant currently suggested the whole building of structure
> responsible for parameter copy is already done solely at init time.
> Shader/preshader full constant structure is not stored anymore. There is
> still an array of parameters and constant description left which is
> currently used in effect.c code for setting sampler states. This could
> easily be optimized further by not storing the parameters other than
> samplers and storing just register index instead of the whole constant
> descs for them, but this looked as a separate step to me not fully
> related to this patch. Or probably I am misunderstanding your point here.
Yeah, that can and should certainly be a separate patch.
What I mean is storing the structs d3dx_const_copy_state you compute
in set_constants() (as they are right before actually setting the
values) in struct d3dx_const_tab in place of the structs
d3dx_const_param_set you use to generate them.
Does it make sense?
>> BTW
>> the coalescing you currently do in add_const_set() could be
>> potentially done as a separate pass after you generate all the
>> "d3dx_const_copy_state-like" structures (but still at init time),
>> which might be simpler.
> It can be done as a separate pass, but why? In my understanding it will
> result just in bigger intermediate array and a few more lines of code. I
> will need to do all the same but not at once when getting an "copy
> request" but from scanning the pre-stored array. Or am I missing something?
No, that's right. It is just an alternative option which I mentioned
because it might be simpler or more powerful (e.g. it makes possible
to coalesce multiple copies which are not next to each other - it
probably wouldn't help much at the moment since you can't coalesce
accesses from multiple parameters) in some case. Feel free to take or
ignore it.
May 31, 2016
Re: [PATCH 6/7] d3drm: Partially implement IDirect3DRMTexture*::InitFromFile. (v5)
by Aaryaman Vasishta
Yup, I'm working on frames and viewports right now. There's no immediate
need for these to get in, but I hope it will, eventually :)
Cheers,
Aaryaman
On Wed, Jun 1, 2016 at 12:51 AM, Henri Verbeet <hverbeet(a)gmail.com> wrote:
> On 31 May 2016 at 14:01, Aaryaman Vasishta <jem456.vasishta(a)gmail.com>
> wrote:
> > Any reviews? Should I resend this patch?
> >
> I had hoped to have reviewed this by now, but clearly haven't. I'm not
> sure when I will, but in the mean time, if you have easier patches,
> those don't necessarily need to wait for these to go in.
>
May 31, 2016
Re: [PATCH 6/7] d3drm: Partially implement IDirect3DRMTexture*::InitFromFile. (v5)
by Henri Verbeet
On 31 May 2016 at 14:01, Aaryaman Vasishta <jem456.vasishta(a)gmail.com> wrote:
> Any reviews? Should I resend this patch?
>
I had hoped to have reviewed this by now, but clearly haven't. I'm not
sure when I will, but in the mean time, if you have easier patches,
those don't necessarily need to wait for these to go in.
May 31, 2016
Re: [PATCH] user32/tests: Fix a leak when creating test icons (Valgrind)
by Nikolay Sivov
On 31.05.2016 14:52, Marvin wrote:
> 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=23256
>
> Your paranoid android.
>
>
> === w864 (32 bit cursoricon) ===
>
> === w1064 (32 bit cursoricon) ===
>
> === w864 (64 bit cursoricon) ===
>
> === w1064 (64 bit cursoricon) ===
>
Those are already failing without this patch.
May 31, 2016
Re: [PATCH 6/7] d3drm: Partially implement IDirect3DRMTexture*::InitFromFile. (v5)
by Aaryaman Vasishta
Any reviews? Should I resend this patch?
Cheers,
Aaryaman
On Tue, May 24, 2016 at 8:36 PM, Aaryaman Vasishta <
jem456.vasishta(a)gmail.com> wrote:
>
>
> On Tue, May 24, 2016 at 8:32 PM, Henri Verbeet <hverbeet(a)gmail.com> wrote:
>
>> On 24 May 2016 at 16:49, Aaryaman Vasishta <jem456.vasishta(a)gmail.com>
>> wrote:
>> > Hi,
>> >
>> > Now that the first 5 patches in the series are committed, I was
>> wondering if
>> > there's any changes required in this patch (and 7/7) ?
>> >
>> Possibly, but this one is a bit more complicated than the 5 that came
>> before, and I haven't reviewed it in detail yet.
>>
> Sure, I will wait for your review :)
>
> Cheers,
> Aaryaman
>
May 31, 2016
Re: [PATCH] user32/tests: Fix a leak when creating test icons (Valgrind)
by Marvin
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=23256
Your paranoid android.
=== w864 (32 bit cursoricon) ===
cursoricon.c:1438: Test failed: Create cursor failed.
cursoricon.c:1443: Test failed: GetIconInfo() failed.
cursoricon.c:1445: Test failed: Last error: 1402
cursoricon.c:1460: Test failed: DestroyCursor() failed.
cursoricon.c:1462: Test failed: Last error: 1402
cursoricon.c:1595: Test failed: Create cursor failed (error = -559038737).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1602: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1603: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0x0).
cursoricon.c:1604: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 1).
cursoricon.c:1610: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:1622: Test failed: Create cursor failed (error = -559038737).
cursoricon.c:1628: Test failed: Unexpected number of steps in cursor (0 != 3)
cursoricon.c:1637: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1639: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1640: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1643: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1637: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1639: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 1.
cursoricon.c:1640: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1643: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1637: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1639: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 2.
cursoricon.c:1640: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1643: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1662: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:1668: Test failed: Create cursor failed (error = -559038737).
cursoricon.c:1674: Test failed: Unexpected number of steps in cursor (0 != 1)
cursoricon.c:1681: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1683: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1684: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1687: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != ~0).
cursoricon.c:1704: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:1716: Test failed: Create cursor failed (error = deadbeef).
cursoricon.c:1722: Test failed: Unexpected number of steps in cursor (0 != 3)
cursoricon.c:1733: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1735: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1736: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xc0de).
cursoricon.c:1739: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1733: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1735: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 1.
cursoricon.c:1736: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xcafe).
cursoricon.c:1739: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1733: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1735: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 2.
cursoricon.c:1736: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbabe).
cursoricon.c:1739: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1747: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:2624: Test failed: LoadImage() failed with 0.
cursoricon.c:2624: Test failed: LoadImage() failed with 0.
=== w1064 (32 bit cursoricon) ===
cursoricon.c:1438: Test failed: Create cursor failed.
cursoricon.c:1443: Test failed: GetIconInfo() failed.
cursoricon.c:1445: Test failed: Last error: 1402
cursoricon.c:1460: Test failed: DestroyCursor() failed.
cursoricon.c:1462: Test failed: Last error: 1402
cursoricon.c:1595: Test failed: Create cursor failed (error = -559038737).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1602: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1603: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0x0).
cursoricon.c:1604: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 1).
cursoricon.c:1610: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:1622: Test failed: Create cursor failed (error = -559038737).
cursoricon.c:1628: Test failed: Unexpected number of steps in cursor (0 != 3)
cursoricon.c:1637: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1639: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1640: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1643: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1637: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1639: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 1.
cursoricon.c:1640: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1643: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1637: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1639: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 2.
cursoricon.c:1640: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1643: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1662: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:1668: Test failed: Create cursor failed (error = -559038737).
cursoricon.c:1674: Test failed: Unexpected number of steps in cursor (0 != 1)
cursoricon.c:1681: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1683: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1684: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1687: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != ~0).
cursoricon.c:1704: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:1716: Test failed: Create cursor failed (error = deadbeef).
cursoricon.c:1722: Test failed: Unexpected number of steps in cursor (0 != 3)
cursoricon.c:1733: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1735: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1736: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xc0de).
cursoricon.c:1739: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1733: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1735: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 1.
cursoricon.c:1736: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xcafe).
cursoricon.c:1739: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1733: Test failed: GetCursorFrameInfo() failed for cursor 00000000: (00000000, 00000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1735: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 2.
cursoricon.c:1736: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbabe).
cursoricon.c:1739: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1747: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:2624: Test failed: LoadImage() failed with 0.
cursoricon.c:2624: Test failed: LoadImage() failed with 0.
=== w864 (64 bit cursoricon) ===
cursoricon.c:1438: Test failed: Create cursor failed.
cursoricon.c:1443: Test failed: GetIconInfo() failed.
cursoricon.c:1445: Test failed: Last error: 1402
cursoricon.c:1460: Test failed: DestroyCursor() failed.
cursoricon.c:1462: Test failed: Last error: 1402
cursoricon.c:1595: Test failed: Create cursor failed (error = -559038737).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1602: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1603: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0x0).
cursoricon.c:1604: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 1).
cursoricon.c:1610: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:1622: Test failed: Create cursor failed (error = -559038737).
cursoricon.c:1628: Test failed: Unexpected number of steps in cursor (0 != 3)
cursoricon.c:1637: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1639: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1640: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1643: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1637: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1639: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 1.
cursoricon.c:1640: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1643: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1637: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1639: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 2.
cursoricon.c:1640: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1643: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1662: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:1668: Test failed: Create cursor failed (error = -559038737).
cursoricon.c:1674: Test failed: Unexpected number of steps in cursor (0 != 1)
cursoricon.c:1681: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1683: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1684: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1687: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != ~0).
cursoricon.c:1704: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:1716: Test failed: Create cursor failed (error = deadbeef).
cursoricon.c:1722: Test failed: Unexpected number of steps in cursor (0 != 3)
cursoricon.c:1733: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1735: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1736: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xc0de).
cursoricon.c:1739: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1733: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1735: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 1.
cursoricon.c:1736: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xcafe).
cursoricon.c:1739: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1733: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1735: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 2.
cursoricon.c:1736: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbabe).
cursoricon.c:1739: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1747: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:2624: Test failed: LoadImage() failed with 0.
cursoricon.c:2624: Test failed: LoadImage() failed with 0.
=== w1064 (64 bit cursoricon) ===
cursoricon.c:1438: Test failed: Create cursor failed.
cursoricon.c:1443: Test failed: GetIconInfo() failed.
cursoricon.c:1445: Test failed: Last error: 1402
cursoricon.c:1460: Test failed: DestroyCursor() failed.
cursoricon.c:1462: Test failed: Last error: 1402
cursoricon.c:1595: Test failed: Create cursor failed (error = -559038737).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1602: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1603: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0x0).
cursoricon.c:1604: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 1).
cursoricon.c:1610: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:1622: Test failed: Create cursor failed (error = -559038737).
cursoricon.c:1628: Test failed: Unexpected number of steps in cursor (0 != 3)
cursoricon.c:1637: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1639: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1640: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1643: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1637: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1639: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 1.
cursoricon.c:1640: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1643: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1637: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1639: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 2.
cursoricon.c:1640: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1643: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1662: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:1668: Test failed: Create cursor failed (error = -559038737).
cursoricon.c:1674: Test failed: Unexpected number of steps in cursor (0 != 1)
cursoricon.c:1681: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1683: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1684: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbeef).
cursoricon.c:1687: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != ~0).
cursoricon.c:1704: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:1716: Test failed: Create cursor failed (error = deadbeef).
cursoricon.c:1722: Test failed: Unexpected number of steps in cursor (0 != 3)
cursoricon.c:1733: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1735: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 0.
cursoricon.c:1736: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xc0de).
cursoricon.c:1739: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1733: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1735: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 1.
cursoricon.c:1736: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xcafe).
cursoricon.c:1739: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1733: Test failed: GetCursorFrameInfo() failed for cursor 0000000000000000: (0000000000000000, 0000000000000000).
cursoricon.c:1474: Test failed: GetIconInfo() failed
cursoricon.c:1735: Test failed: GetCursorFrameInfo() returned wrong cursor data for frame 2.
cursoricon.c:1736: Test failed: GetCursorFrameInfo() unexpected param 4 value (0xdead != 0xbabe).
cursoricon.c:1739: Test failed: GetCursorFrameInfo() unexpected param 5 value (57005 != 3).
cursoricon.c:1747: Test failed: DestroyCursor() failed (error = 1402).
cursoricon.c:2624: Test failed: LoadImage() failed with 0.
cursoricon.c:2624: Test failed: LoadImage() failed with 0.
May 31, 2016
Re: [PATCH 2/5] wined3d: Implement pure integer vertex attributes.
by Józef Kucia
On Tue, May 31, 2016 at 12:04 PM, Henri Verbeet <hverbeet(a)gmail.com> wrote:
> On 30 May 2016 at 14:24, Józef Kucia <jkucia(a)codeweavers.com> wrote:
>> + if (stream_info->use_pure_integers
>> + && (element->format->flags[WINED3D_GL_RES_TYPE_BUFFER] & WINED3DFMT_FLAG_INTEGER))
>> + {
>> + GL_EXTCALL(glVertexAttribIPointer(i, element->format->gl_vtx_format, element->format->gl_vtx_type,
>> + element->stride, element->data.addr + state->load_base_vertex_index * element->stride));
>> + }
>> + else
>> + {
>> + GL_EXTCALL(glVertexAttribPointer(i, element->format->gl_vtx_format, element->format->gl_vtx_type,
>> + element->format->gl_normalized, element->stride,
>> + element->data.addr + state->load_base_vertex_index * element->stride));
>> + }
> stream_info->use_pure_integers strikes me more as a property of the
> shader. I.e., if you replaced it with something like "state->vs &&
> state->vs->reg_maps.shader_version.major >= 4", would anything of
> value be lost?
True, nothing would be lost.
May 31, 2016
Re: [PATCH 2/5] wined3d: Implement pure integer vertex attributes.
by Henri Verbeet
On 30 May 2016 at 14:24, Józef Kucia <jkucia(a)codeweavers.com> wrote:
> + if (stream_info->use_pure_integers
> + && (element->format->flags[WINED3D_GL_RES_TYPE_BUFFER] & WINED3DFMT_FLAG_INTEGER))
> + {
> + GL_EXTCALL(glVertexAttribIPointer(i, element->format->gl_vtx_format, element->format->gl_vtx_type,
> + element->stride, element->data.addr + state->load_base_vertex_index * element->stride));
> + }
> + else
> + {
> + GL_EXTCALL(glVertexAttribPointer(i, element->format->gl_vtx_format, element->format->gl_vtx_type,
> + element->format->gl_normalized, element->stride,
> + element->data.addr + state->load_base_vertex_index * element->stride));
> + }
stream_info->use_pure_integers strikes me more as a property of the
shader. I.e., if you replaced it with something like "state->vs &&
state->vs->reg_maps.shader_version.major >= 4", would anything of
value be lost?
May 31, 2016
Re: [PATCH] d3dx9: Improve performance and memory usage in preshader constants setting.
by Paul Gofman
On 05/31/2016 12:24 AM, Matteo Bruni wrote:
>
>> +struct d3dx_const_copy_state
> I'm not entirely happy with the name, maybe
> d3dx_const_param_eval_output or something in that fashion?
I will rename to d3dx_const_param_eval_output.
>
>> unsigned int out;
>> + unsigned int *in = (unsigned int *)param->data + set_state.param_offset + j;
>> + switch (table_info[set_state.table].type)
>> + {
>> + case PRES_VT_FLOAT: set_number(&out, D3DXPT_FLOAT, in, param->type); break;
>> + case PRES_VT_INT: set_number(&out, D3DXPT_INT, in, param->type); break;
>> + case PRES_VT_BOOL: set_number(&out, D3DXPT_BOOL, in, param->type); break;
>> + default:
>> + FIXME("Unexpected type %#x.\n", table_info[set_state.table].type);
>> + break;
>> + }
>> + regstore_set_values(rs, set_state.table, &out, set_state.table_offset + j, 1);
>> + }
>> + }
>> + set_state.param_offset += count;
>> + set_state.table_offset += count;
>> + break;
>> + }
>> + }
>> + }
>> +}
> This seems overly complicated and fragile.
> Instead of this kind of "5 instructions bytecode" isn't it easier to
> just store and then lookup a struct with all the info you need?
Keeping a struct with offsets & count altogether is of course more
straightforward, but I intentionally did it this way to save a lot of
extra space and to introduce an easier coalescing. When there is a
matrix transpose involved (which happens quite often in real apps as far
as I have seen) the whole structure would be duplicated for every matrix
element. In the current approach each element for transposed matrix has
just one offset (destination offset changes sequentially and does not
come to the array for each matrix element) and one count of 1. The other
way to optimize this is to introduce a separate operation for transposed
matrix copy, but will it really be simpler or nicer than it is now?
Current approach is indeed a sort of encoding the data copy into a very
simple bytecode. Keeping the whole struct and optimizing as a separate
op for matrix transpose would be the same in principle, but I am afraid
will result in a bit more code and a bit more mess as there will be more
cases to handle. I thought the current approach is simpler as the data
copy is encoded in a generic and simple way so on the actual copy I do
not have to care for any specifics of initial parameter & constant
layout, as well as in process of extending the array & coalescing.
> I
> guess the end result would be something akin to storing an array of
> struct d3dx_const_copy_state in place of struct d3dx_const_param_set.
> I don't know how the code would exactly look like but I would start by
> moving building all the struct d3dx_const_copy_param to init time.
I am not sure I understand what you mean here, could you please clarify?
In the variant currently suggested the whole building of structure
responsible for parameter copy is already done solely at init time.
Shader/preshader full constant structure is not stored anymore. There is
still an array of parameters and constant description left which is
currently used in effect.c code for setting sampler states. This could
easily be optimized further by not storing the parameters other than
samplers and storing just register index instead of the whole constant
descs for them, but this looked as a separate step to me not fully
related to this patch. Or probably I am misunderstanding your point here.
> BTW
> the coalescing you currently do in add_const_set() could be
> potentially done as a separate pass after you generate all the
> "d3dx_const_copy_state-like" structures (but still at init time),
> which might be simpler.
It can be done as a separate pass, but why? In my understanding it will
result just in bigger intermediate array and a few more lines of code. I
will need to do all the same but not at once when getting an "copy
request" but from scanning the pre-stored array. Or am I missing something?
> Whitespace.
>> @@ -931,21 +1107,17 @@ static HRESULT set_constants_param(struct d3dx_regstore *rs, struct d3dx_const_t
>> major_stride = max(minor, table_info[table].reg_component_count);
>> n = min(major * major_stride,
>> desc.RegisterCount * table_info[table].reg_component_count + major_stride - 1) / major_stride;
>> +
>> for (i = 0; i < n; ++i)
>> {
>> for (j = 0; j < minor; ++j)
>> {
>> - unsigned int out;
>> - unsigned int *in;
>> unsigned int offset;
>>
>> offset = start_offset + i * major_stride + j;
>> - if (offset / table_info[table].reg_component_count >= rs->table_sizes[table])
>> - {
>> - if (table_info[table].reg_component_count != 1)
>> - FIXME("Output offset exceeds table size, name %s, component %u.\n", desc.Name, i);
>> + if ((offset - start_offset) / table_info[table].reg_component_count >= desc.RegisterCount)
>> break;
> Maybe keeping a WARN or something makes sense here?
>
This break is just normal for boolean register set (it is covered by
test case) and should not happen for vec4 register sets. This is because
the inner loop can never be bound by desc.RegisterCount for vec4
registers (as nminor <= 4 and limiting just outer 'n' loop counter is
sufficient), but can be bound for boolean single value registers.
I will get it back in the same way it was before (FIXME for vec4
register sets and nothing for boolean).
May 31, 2016
Broken AppDB Test Results Pages
by Jimi Huotari
Greetings!
I sent two mails about this to appdb(a)winehq.org the other day, but
austin987 suggested I'll mail here (and Cc jnewman), too, since it has
been a few days now.
So I broke a couple of pages:
//appdb.winehq.org/objectManager.php?sClass=version&iId=24670
//appdb.winehq.org/objectManager.php?sClass=version&iId=24695
Using QupZilla (QtWebEngine edition), the Xinha editor took its built-in
ad-block rules, with some of the style code, and included them in the
code for the page, which breaks most of it (none of the test results or
notes/comments\bugs show up).
Loading up the form at AppDB resulted into a count of HTML: 259501, and
this number goes up by about the same amount every time the form is
reloaded, and (probably) all of it will be included in the code.
It would be great if someone with the power to do so could undo my edits
to the two pages I mentioned, as I can't do anything about it myself. :]
I already reported the issue upstream of QupZilla, and a fix was quickly
put in place there, but the editor itself remains vulnerable (no idea
how big of an annoyance /really/ exploiting it could become).
Thank you, and apologies for the inconvenience!
May 31, 2016