Closed
Bug 574239
Opened 15 years ago
Closed 15 years ago
ThebesLayerD3D9 needs to retain layer contents
Categories
(Core :: Graphics, defect)
Tracking
()
RESOLVED
FIXED
People
(Reporter: bas.schouten, Assigned: bas.schouten)
Details
Attachments
(1 file)
8.83 KB,
patch
|
jrmuizel
:
review+
|
Details | Diff | Splinter Review |
ThebesLayerD3D9 needs to retain its layer contents across changes to the visible region when there is a large intersection between the old and the new visible region (like with most scrolling operations).
Attachment #453621 -
Flags: review?(jmuizelaar)
Comment 1•15 years ago
|
||
Comment on attachment 453621 [details] [diff] [review]
Retain ThebesLayerD3D9 content
>+/**
>+ * Retention threshold - amount of pixels intersection required to enable
>+ * layer content retention.
>+ */
>+#define RETENTION_THRESHOLD 16384
You should add a comment about where this number came from. If it came from nowhere
just say that.
>+ device()->CreateTexture(newBounds.width, newBounds.height, 1,
> D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8,
> D3DPOOL_DEFAULT, getter_AddRefs(mTexture), NULL);
I'm concerned that texture allocation during scrolling isn't going to do wonders for our performance.
However, I'm not sure what will be best. Perhaps a linear system buffer backed by texture tiles.
>+ nsIntRegion retainedRegion;
>+ const nsIntRect *r;
>+ for (nsIntRegionRectIterator iter(oldVisibleRegion);
>+ (r = iter.Next()) != nsnull;) {
I prefer this idiom:
http://mxr.mozilla.org/mozilla-central/source/gfx/src/thebes/nsThebesRenderingContext.cpp#296
>+ if (r->width * r->height > RETENTION_THRESHOLD) {
>+ RECT oldRect, newRect;
>+
>+ // Calculate the retained rectangle's position on the old and the new
>+ // surface.
>+ oldRect.left = r->x - oldBounds.x;
>+ oldRect.top = r->y - oldBounds.y;
>+ oldRect.right = oldRect.left + r->width;
>+ oldRect.bottom = oldRect.top + r->height;
an extra line here wouldn't hurt
>+ newRect.left = r->x - newBounds.x;
>+ newRect.top = r->y - newBounds.y;
>+ newRect.right = newRect.left + r->width;
>+ newRect.bottom = newRect.top + r->height;
Attachment #453621 -
Flags: review?(jmuizelaar) → review+
Assignee | ||
Comment 2•15 years ago
|
||
Pushed http://hg.mozilla.org/mozilla-central/rev/4b3e2b20b132.
Follow-ups coming for more performance improvements.
Status: ASSIGNED → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•