Commit Graph

3356 Commits

Author SHA1 Message Date
Paulo Zanoni 2d9effca14 Fix "always false" conditionals
Enums are unsigned by default in gcc and we can't rely on any specific
signedess for the other compilers.

i965_render.c: In function ‘i965_prepare_composite’:
i965_render.c:2018:2: warning: comparison of unsigned expression < 0 is always false
i965_render.c:2025:2: warning: comparison of unsigned expression < 0 is always false
i965_render.c:2050:3: warning: comparison of unsigned expression < 0 is always false
i965_render.c:2057:3: warning: comparison of unsigned expression < 0 is always false

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
[ickle: take advantage and rename the enum values]
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-18 09:47:31 +01:00
Chris Wilson 7bcd1d2b75 sna: perform a warnings reduction pass
Didn't spot anything that might have led to a genuine bug, but this
should help improve the signal-to-noise ratio of warnings in the future.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-17 22:33:28 +01:00
Chris Wilson a5b5b4ebb1 sna: Apply the screen offset for direct upload of a composited pixmap
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38733
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-17 00:28:57 +01:00
Chris Wilson daeb9291e2 sna/trapezoids: Ensure we do not overrun the vertical edges for mono
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-17 00:27:55 +01:00
Chris Wilson 481df2618a sna: Add debug option to force allocaiton of gpu-only pixmaps
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-17 00:27:32 +01:00
Chris Wilson 52f93c9546 sna/glyphs: Disable the glyph cache for debugging
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-16 23:24:16 +01:00
Chris Wilson c8a144d6f8 sna/glyphs: Correct offset of fallback-via-mask glyphs
Under a compositing manager where we have fun values for both
drawable->x/y and pixmap->screen.x/y, we were not drawing either the
glyphs into the mask correctly and then failed to composite the mask in
the right position on top of the pixmap.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-16 23:06:43 +01:00
Chris Wilson 1eea2c4e60 sna: Can't free bo from the active list
As the active bo is still referenced in the request list, we can not
simply free it but need to wait for it to be purged on expiration.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-16 23:00:55 +01:00
Chris Wilson d743c456db sna: Debug option to disable tiling
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-16 20:34:33 +01:00
Chris Wilson 8c35df4493 sna: Remove bad assert
The caller intentionally violates this assert, so it is useless.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-16 20:33:57 +01:00
Chris Wilson 72ca1fdf2f configure: Introduce --with-builderstring
Julien Cristau disliked my broadcasting of the git tree used to build
his distribution package as it bore little relevance to his users. As it
is only useful for people installing their own drivers (as a means of
sanity checking that they are running the right driver), we introduce
the --with-builderstring idiom borrowed from the xserver. This allows
the builder to override the use of `git describe` and either leave it
blank or to fill it with something useful for their own purposes.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-15 18:00:07 +01:00
Chris Wilson 544a4167c1 sna/trapezoids: Amalgamate adjacent mono spans
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-14 18:38:57 +01:00
Chris Wilson 3565c48c4b sna: Yet another s/x/y/ typo
Every time I do a transformation into pixmap space I like to include one
of these copy'n'paste errors.

Reported-by: Paul Neumann <paul104x@yahoo.de>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40850
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-14 17:45:41 +01:00
Chris Wilson 4d4aca21fd sna: assert that the memcpy upload path points to valid regions
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-14 17:44:38 +01:00
Chris Wilson 8396105178 sna/gen3: Reset the shader after playing video
Another piece of state we zap without marking as dirty when playing
video.

Reported-by: Paul Neumann <paul104x@yahoo.de>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40842
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-13 18:37:01 +01:00
Chris Wilson 34c03f2215 sna: Clear the list of buffers upon server regen
Or else we may try to clear the new framebuffer with an invalid batch,
because it will reuse the same bo as last time and that bo may still
think it is part of the old batch.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-13 17:24:14 +01:00
Chris Wilson 831cdb8371 sna/debug: Assert that BLT commands on gen2/3 are properly fenced
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-13 17:09:38 +01:00
Chris Wilson a9242a77f0 sna: Add a couple of debug statements for why we may not flush the scanout
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-13 16:20:40 +01:00
Chris Wilson 0056bfd11e video: Stop advertising unsupported Xv attributes
We have yet to implement a yuv-shader that applies
contrast/brightness/saturation and so should not advertise such
features, potentially allowing the client to fallback and perform the
adjustments itself.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-13 14:44:48 +01:00
Chris Wilson 84a7c11a81 sna/video: Stop advertising unsupported Xv attributes
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-13 14:42:33 +01:00
Chris Wilson a0d533ea8d sna/trapezoids: Implement a mono-rasteriser to skip opacity spans
For mono-rasteriser we can simply emit the composite spans without
requiring an opacity shader.

For single trapezoids, it will be more interesting to emit triangles
directly. However, we still need to compute the union of many
trapezoids, and this builds upon existing code.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-13 13:21:33 +01:00
Chris Wilson 343b99d2a8 sna: Reuse the smallest bo that fits the request
When scanning the active list, pick the smallest that we can reuse.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-13 12:20:17 +01:00
Chris Wilson 90071454d2 sna: Don't clear the kernel-needs-flush flag if we emit a MI_FLUSH
We need to mirror the kernel active lists in order to predict when it
will stall upon an access to a bo, and so we cannot clear the
needs_flush for our own MI_FLUSH.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-13 11:37:17 +01:00
Chris Wilson 2deafe2d95 sna/accel: Use correct enum for requesting a write-buffer
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-13 11:34:43 +01:00
Chris Wilson 544b1a678d sna/gen5: Fix debug compilation
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-13 11:34:25 +01:00
Chris Wilson 6b1ed58d63 sna/gen5: Avoid bitfields for simple assignments 2011-09-12 19:25:08 +01:00
Chris Wilson 03a7fc16f9 sna: Avoid the call overhead for the trivial clip case
Profile guided micro-optimisation. /o\

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-12 12:20:24 +01:00
Chris Wilson 2540c877d4 sna/gen6: Prefer RENDER for copies as it compacts better
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-12 11:54:46 +01:00
Chris Wilson f2a617dcc5 sna: Use single precision for computing the texcoord scale factor
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-12 11:54:02 +01:00
Chris Wilson c2e19987c3 sna: Provide a direct lookup cache of alpha values
To reflect recent changes in cairo.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-12 10:56:29 +01:00
Chris Wilson 04c5a3df02 sna: Fix compilation without timerfd()
Based on the patch by Konstantin Belousov.

Reported-by: Konstantin Belousov <konstantin.belousov@zoral.com.ua>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-12 09:20:58 +01:00
Chris Wilson ae887c9d1c sna/trapezoids: Prevent a memleak if feed lots of degenerate boxes
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-11 13:59:08 +01:00
Chris Wilson ac4d4cdbc1 sna: Mark the bo as reusable after extracting the handle from the buffer
The whole purpose for that little dance was so that we could reuse the
bo. However, we left it marked as non-reusable in order for us not to
tie up memory with too many buffers and so defeated the purpose of
trying to place it into the inactive cache.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-09 23:15:14 +01:00
Chris Wilson b3429cf12d sna/gen3: Use a clear pattern for ill-defined radial gradients
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-09 18:09:55 +01:00
Chris Wilson b6837c21b4 sna/gen5: Prefer BLT for solids
And Ironlake also fails to live up to the promise that its GPU is fast
enough to run simple programs at memory rates.

x11perf -trap300 5x fold improvement. No obvious improvement elsewhere
yet.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-09 15:48:30 +01:00
Chris Wilson 27e42b4e12 sna: Prefer memcpy_blt over fbBlt
We know we have compatible formats since we have a gpu_bo attached to
the pixmap, so we can use the simpler direct memcpy rather than calling
fbPutZImage/fbBlt.

On my i3-330m, this improves putimage500 from 730 to 1100 ops/s.

Reported-by: Michael Larabel <Michael@phoronix.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-09 15:26:04 +01:00
Chris Wilson 2e1bf7e1b4 sna: Record git-tree used for compilation
Hopefully, I have all the dependencies correct for auto-updating and
should continue to work with tarballs...

The next step is to perhaps include it in the usual version number,
perhaps as patch level?

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-09 15:26:04 +01:00
Chris Wilson f73cd955e7 sna/trapezoids: Hook up Imprecise AddTraps in lieu of spans
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-09 11:37:32 +01:00
Chris Wilson adde6eab5d sna/trapezoids: Fast upload path for gpu busy bo
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-08 23:35:33 +01:00
Chris Wilson e9ca05331d sna/traps: Use the trapezoid path for AddTraps
Usually this will be to CPU-only pixmap, but just on the off-chance that
we are stalling for a GPU pixmap just the faster path developed for
Trapezoids.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-08 22:54:22 +01:00
Chris Wilson afdb8aa89a sna/gen3: Do not assume video updates are always vsync'ed
In case the video is running async, then there may be subsequent
instructions within the batch and so we do need to mark the clobbered
state as dirty when setting up the video frame.

Reported-by: Paul Neumann <paul104x@yahoo.de>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40693
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-07 20:27:36 +01:00
Chris Wilson 6aee152cb8 sna/gen2: Flush the batch when we run out of vertex space
Unlike the later gen, we do not yet use a separate vertex buffer and so
when can no longer fit a rectangle (and its CA ghost) we must flush the
batch. Due to the duplication required for the CA pass, the normal
checks to see whether we had sufficient space to add the new command
were passing as they failed to take into account the need to submit the
whole primitive again.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-04 12:57:17 +01:00
Chris Wilson 48bfe4e6de sna/gen2: Improve batch decoder.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-04 12:46:32 +01:00
Chris Wilson 2cda0aaf39 sna/trapezoids: Check for alignment after projection
If after projection onto the Imprecise fast sample grid, the trapezoid
becomes a pixel-aligned box, treat it as such and send it down the fast
paths.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-04 11:20:07 +01:00
Chris Wilson db0fb368c1 sna: Add missing implementation for Triangles
Feed both into spans and as a mask fallback.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-04 11:19:31 +01:00
Chris Wilson 695e7115ef sna/trapezoids: Edges may lie out of bounds
We cannot assume that the edge lies completely within the target, so we
must make sure that the initial prev_x is truly less than any possible
value whilst sorting intersections.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-01 15:51:31 +01:00
Chris Wilson 9a563ea03b sna: Use the shadow buffer for PutImage
This is optimising for the x11perf putimage benchmark, but nevertheless,
uploading the PutImage directly into the uncached scanout is between
2-20x slower than making a temporary copy in the shaodw buffer and
doing a deferred update. Most of the overhead is in the kernel, and
should be addressed there (rather than worked around) and a portion is
due to the overdraw in the benchmark (which is not likely to be
realistic, but then again neither should PutImage be!).

The argument for uploading inplace when possible is that given that the
buffer already exists on the GPU implies that is likely to be used again
in future by the GPU and so we will be uploading it at some point.
Deferring that upload incurs an extra copy. The putimage benchmark does
not actually use the pixel data and so that extra cost is not being
measured.

Reported-by: Michael Larabel <Michael@phoronix.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-31 23:58:39 +01:00
Chris Wilson 32fc0c896e sna/gen6: Prefer the BLT ring, except for copies on behalf of DRI
As demonstrated by the all-important trap300, using the BLT is 2x faster
than the RENDER ring for the simple case of solid fills. (Though note
that performing the relocations costs 3x as much CPU for 2x GPU
performance.) One case that may regress from this change is copywinpix
which should benefit from the batching in the RENDER commands, and might
warrant revisiting in the future (with realistic and synthetic
benchmarks in hand!)

However, due to the forced stall when switching rings, we still want to
perform RENDER copies on behalf of DRI clients and before page-flips.

Checking against cairo-perf-trace indicated no major impact -- I had
worried that setting the BLT flag for some clears might have had a
knock-on effect causing too many operations that could be pipelined on
the RENDER ring to be sent to the BLT ring instead.

Reported-by: Michael Larabel <Michael@phoronix.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-31 23:58:39 +01:00
Chris Wilson 5586dd729b sna/trapezoids: Refactor to project the trapezoid only once
And doing so means that we can go back to using the common validity
check.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-31 09:55:05 +01:00
Chris Wilson 3507437cdb sna/trapezoids: Reject invalid traps after projecting onto the sample grid
If either of the edges are degenerate on the sample grid, then the trap
has zero height and must be skipped. (Otherwise if just one edge becomes
degenerate than the polygon becomes unbalanced and the rasteriser will
implode.)

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-30 22:13:37 +01:00