summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2012-01-08sna: Tune cache size for cpu bo cacheChris Wilson
This helps SNB on cairo-traces that utilize lots of temporary uploads (rasterised sources and masks for instance), but comes at a cost of regressing others... In order to counter the regression from increasing the GTT cache size, the CPU/GTT vma cache are split and accounted separately. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08sna: Bubble sort the partial buffer list back into order after trimming paddingChris Wilson
After reducing the used size in the partial buffer, we need to resort the list to maintain the list in decreasing amount of available space. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08sna/gen[67]: Hook into the clear operation for glyph masksChris Wilson
Allow SandyBridge to specialise its clear routine to reduce the number of ring switches. It may be interesting to specialise the clear routines even further and use the special render clear commands... Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08sna/trapezoids: Don't risk stalling for inplace SRC trapezoidsChris Wilson
Optimistically we would replace the GPU damage with the new set of trapezoids. However, if any partial damage remains then the next operation which is often to composite another layer of trapezoids (for complex clipmasks) using IN will then stall. This fixes a regression in firefox-fishbowl (and lesser regressions throughout the cairo-traces). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08sna: Do not upload an untiled GPU bo if we already have a CPU boChris Wilson
Continuing the tuning for sna_copy_boxes. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08sna: Trim usage of vmappingChris Wilson
The first, and likely only, goal is to support SHMPixmap efficiently (and without compromising SHMImage!) which we want to preserve as vmaps and never create a GPU bo. For all other use cases, we will want to create snoopable CPU bo ala the LLC buffers on SandyBridge. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08sna: Do not move-to-gpu for sna_copy_boxes if we have a cpu boChris Wilson
We trade-off the extra copy in the hope that as we haven't used the GPU bo before then, we won't need it again. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-07sna: Missing chunks from last commitChris Wilson
And update the check for reusing the blit! Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-07sna: Prevent reuse of scanlines after the buffer is destroyedChris Wilson
Once the buffer is destroyed, it may be reallocated with a new pitch. We could track handle and pitch, but it is easier to simply restart the blit after the buffer is freed. References: https://bugs.freedesktop.org/show_bug.cgi?id=44277 References: https://bugs.freedesktop.org/show_bug.cgi?id=44555 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-07sna: Pad upload buffers to ensure there are an even number of rowsChris Wilson
One restriction common to all generations is that samplers access pairs of rows and so we need to pad the buffer to accommodate access to that second row. Do so unconditionally along paths that may be used by the render pipeline. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna/blt: Amalgamate many PolyFillRect of single boxesChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna: Also mark a bo created by force-to-gpu as being all-damagedChris Wilson
Similar to the action taken into move-to-gpu so that we forgo the overhead of damage tracking when the initial act of creation is on the render paths. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna: Support performing alpha-fixup on the sourceChris Wilson
By inlining the swizzling of the alpha-channel we can support BLT copies from an alpha-less pixmap to an alpha-destination. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna: always skip active search when requested for find an inactive boChris Wilson
References: https://bugs.freedesktop.org/show_bug.cgi?id=44504 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna: Optimise sna_poly_segment() for the frequent no-op caseChris Wilson
Strange as it may seem... But the principle of doing less work with greater locality should help everywhere, just not as noticeable when real work is performed. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna: Only force a pipeline flush for a change of destination, not sourcesChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna/gen6: Reuse current no-blending setup for PictOpClearChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna/gen6: Tidy emission of CC state (blending)Chris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna/trapezoids: Add debug markers for move-to-cpuChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna: fast path move-to-cpu of an all-damaged CPU boChris Wilson
When the bo is already completely damaged on the CPU, all we need to do is to sync with the CPU bo. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna: Pass the real destination pixmap to sna_write_boxes()Chris Wilson
Faking it for the render upload simply isn't good enough, since we need the correct drawrect. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna/trapezoids: Use a slightly faster miTrapezoidBounds()Chris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna: Only need to remove the pixmap from the dirty CPU list when clearing damageChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna: The condition for automatically using the GPU source is no CPU damageChris Wilson
With no CPU damage to upload, we know that there is no reason not to use the GPU bo. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06sna: Rearrange use-cpu-bo to avoid reducing GPU damageChris Wilson
If we spot that the region is wholly contained within the CPU damage initially, we can conclude that is not in the GPU damage without reduction. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna/gen6: Only force BLT if the src and dst overlaps for self-copyChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Only force a batch continuation if the scanout is written toChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna/gen6: Enable reuse of source PictureChris Wilson
Check if the source and mask are identical pictures and just copy the source channel to the mask in that case. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Quickly handle the common case of using a CPU source pixmapChris Wilson
For the common case (at least with llc bo) where we are immediately using an uploaded image from its linear buffer, check upfront before computing the sampled region for transfer to the GPU. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Quickly handle the common case of using a GPU source pixmapChris Wilson
For the common case of glyphs, the pixmap is entirely on the GPU which can be quickly tested before performing the more complex transformations to determine how much pixel data we need to upload. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Check that the GTT is no longer mapped before ensuring the shadow pointerChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Only mark the pixmap as GTT mapped if the private owns the pixelsChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Make sure that we do not attach to SHM pixmaps in ignoranceChris Wilson
Without xserver support for notification of when scratch pixmaps are reused, we simply cannot attach our privates to them lest we cause corruption with SHM pixmaps. This is a recent regression back unto an old, old xserver issue. Reported-by: Paul Neumann <paul104x@yahoo.de> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44503 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Add more debugging to use-gpu-boChris Wilson
To aide debugging in conjunction with compositors and their crazy offsets. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Check for usable pixmap before deference its privateChris Wilson
Beware the NULL pointer and early deference. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Enable using the render pipeline for uploads to Y-tiled pixmapsChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Mark the upload as having acquired the GTT mappingChris Wilson
In order for the entire PutImage to be performed inplace, we need to maintain the tendency to keep doing inplace operations. This hint is provided by tracking whether or not the last operation used the GTT mapping. However, that hint was not being provided by zpixmap_blt. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Avoid operating inplace if we have pending CPU damageChris Wilson
If the operation does not replace existing CPU damage, we are likely to want to reuse the pixmap again on the CPU, so avoid mixing CPU/GPU operations. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Avoid switching rings for uploading dataChris Wilson
On systems that incur painful overhead for ring switches, it is usually better to create a large buffer and perform a sparse copy on the same ring than create a compact buffer and use the BLT. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna/trapezoids: Try creating the trapezoids mask inplace if not using spansChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Throttle, throttle, throttle.Chris Wilson
This reverts 281425551bdab7eb38ae167a3205b14ae3599c49 as it was causing insufferable lag in firefox. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Attach to the pixmap for source counting when deferring uploadsChris Wilson
If we decide to defer the upload for this instance of the source pixmap, mark it so. Then if we do use it again we will upload it to a GPU bo and hopefully reuse those pixels. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Try doing a cheap is-contained check before reducing damageChris Wilson
If the pixmap is entirely within the current CPU damage, we can forgo reducing either the GPU or CPU damage when checking whether we need to upload dirty pixels for a source texture. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Check the composite-rectangles will be on the GPU before forcibly attachingChris Wilson
If we think that the operation is better performed on the CPU, avoid the overhead of manipulating our privates. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Deferred attachment to a pixmap needs to mark the pixmap as entirely dirtyChris Wilson
As demonstrated with oversized glyphs and a chain of catastrophy, when attaching our private to a pixmap after creation we need to mark the entire CPU pixmap as dirty as we never tracked exactly which bits were dirtied. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Immediately upload oversized glyphsChris Wilson
Glyphs, even large ones, we suspect will be reused and so the deferred upload is counterproductive. Upload them immediately and mark them as special creatures for later debugging. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Don't perform a deferred attachment for vmapping if not supportedChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Use the created cpu-bo for upload and downloadChris Wilson
As we explicitly create CPU bo when wanted, we no longer desire to spontaneously create vmaps for simply uploading to the GPU bo. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05sna: Fix assertion as we may want to create active bo with cpu mappingsChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-04sna/damage: Fix reduction to copy the boxes correctlyChris Wilson
We need to be carefully to copy the boxes in a strict lifo order so as to avoid overwritting the last boxes when reusing the array allocations. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>