History log of /external/libdrm/exynos/exynos_fimg2d.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
676462c43e97896caa891b1e0aeb27d5d4f13637 29-Nov-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos/fimg2d: add g2d_move

We already have g2d_copy() which implements G2D copy
operations from one buffer to another. However we can't
do a overlapping copy operation in one buffer.

Add g2d_move() which acts like the standard memmove()
and properly handles overlapping copies.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
/external/libdrm/exynos/exynos_fimg2d.c
51fd93bc38a33df33f7bf6cbf1ae3fbf74a47dba 29-Nov-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos: fimg2d: add g2d_set_direction

This allows setting the two direction registers, which specify how
the engine blits pixels. This can be used for overlapping blits,
which happen e.g. when 'moving' a rectangular region inside a
fixed buffer.

Reviewed-by: Hyungwon Hwang <human.hwang@samsung.com>
Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Signed-off-by: Hyungwon Hwang <human.hwang@samsung.com>
/external/libdrm/exynos/exynos_fimg2d.c
60df3581961ef7f1003459f696e5954b5df30aeb 29-Nov-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos/fimg2d: add g2d_config_event

This enables us to pass command buffers to the kernel which
trigger an event on the DRM fd upon completion.
The final goal is to enable asynchronous operation of the
G2D engine, similar to async page flips.

Passing the event userdata pointer through the G2D context
was chosen to not change the current API (e.g. by adding
a userdata argument to each public functions).

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
/external/libdrm/exynos/exynos_fimg2d.c
df21b293e9cf550ec8d6a3e49461350dbdf14260 08-Sep-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos/fimg2d: remove g2d_context from public header

All functions from the public API only operation on
struct g2d_context*, so this shouldn't break too much.

Make the context private since we don't want the
user to modify its content directly. Also remove
the defines that were only used for fields of
g2d_context.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
/external/libdrm/exynos/exynos_fimg2d.c
ce4a4f6e21d4112f0b88c973283b586e1fccddd9 08-Sep-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos/fimg2d: add message prefix

Add a prefix to the messages printed to the console via
printf() and fprintf() so that one can easily see where
the message comes from.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
bf666b5e999236ec6406afd60ca35a465c6b3262 08-Sep-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos/fimg2d: make g2d_add_cmd() less heavy

The function currently checks for each added command
if an overflow of the corresponding command buffers
occurs, but none of the callers ever checks the
return value.

Since all callers are now converted to use
g2d_check_space() simplify the function.

(1) The overflow checks become asserts, so they're only
active for debug builds. This is fine since
g2d_add_cmd() is not part of the public API.

(2) Switch the return value to void.

(3) Explicitly state that the caller has to check
buffer space before calling g2d_add_cmd().

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
6a4479da71e93ef5141d9c493c235c2beb64170a 08-Sep-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos/fimg2d: remove superfluous initialization of g2d_point_val

The g2d_point_val union consists of two coordinates of 16
bits. Whenever this union is used though, both coordinates
are explicitly set. Hence prior initialization is unnecessary.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
76d1c6b15725f1e7de3c60b0398639e06bf295be 08-Sep-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos/fimg2d: remove default case from g2d_get_blend_op()

We now validate the blending mode via g2d_validate_mode()
prior to feeding it to g2d_get_blend_op().

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
e3c97d1a2473cd06a964599d10465f1e6a4d9015 08-Sep-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos/fimg2d: add g2d_validate_xyz() functions

The G2D headers define a number of modes through enums
(like e.g. color, select, repeat, etc.).

This introduces g2d_validate_select_mode() and
g2d_validate_blending_op() which validate a
select mode or blending operation respectively.

Use this together with g2d_check_space() in
g2d_{blend,scale_and_blend}().

For this we move parameter validation to the top and
also validate the select mode of the source image and
the requested blending operation before starting
command submission.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
2362c88251d4bba0bb76d2a25f233004c6f99134 08-Sep-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos/fimg2d: add g2d_check_space()

This is going to be used to check if the command buffers have
enough space left prior to actual submission of the commands.

Use this in g2d_{solid_fill,copy,copy_with_scale}().

For this the parameter validation before buffer space
checking so that we can exit early if it fails.
Also don't reset the G2D context in this situation since
the buffers are not partially submitted anymore.

The repeat mode in g2d_copy_with_scale() is checked first
to make computation of space easier.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
9017619714eb432fa9bb1e94139cc2ad40fc7001 08-Sep-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos/fimg2d: simplify base address submission in g2d_scale_and_blend()

Use g2d_add_base_addr() for source and destination base
address just like all other calls.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
a8dc2e75cfb2acecae7cb7aeefa20b9c92abd297 08-Sep-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos/fimg2d: fix empty buffer handling in g2d_flush()

Empty command buffers are no error, we just don't have
anything to do for flushing then.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
53b1081da1b05e6225d93d4a6890fba4eba8313e 12-Jun-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos/fimg2d: simplify g2d_fini()

free()ing a nullptr is a noop, so remove the check.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Acked-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
7da8f07274cfe57cfd157e184f1f0b4c15405b9e 12-Jun-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos: fimg2d: fix return codes

Even if flushing the command buffer doesn't succeed, the
G2D calls would still return zero. Fix this by just passing
the flush return code.

In fact error handling currently ignores the fact that
g2d_add_cmd() can fail. This is going to be handled
in a later patch.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Acked-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
0f8da82500ec542e269092c0718479e25eaff5f6 31-Mar-2015 Emil Velikov <emil.l.velikov@gmail.com> drm: remove drm_public macro

Some compilers (like the Oracle Studio), require that the function
declaration must be annotated with the same visibility attribute as the
definition. As annotating functions with drm_public is no longer
required just remove the macro.

Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Damien Lespiau <damien.lespiau@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Cc: Michel Dänzer <michel.daenzer@amd.com>
Cc: Rob Clark <robdclark@gmail.com>
Cc: Thierry Reding <treding@nvidia.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
42465feb9759ef5a6d79d7e628510cd0a081f913 05-Apr-2015 Emil Velikov <emil.l.velikov@gmail.com> drm: rename libdrm{,_macros}.h

Provide a more meaningful name, considering what it does.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
9a0949a8f46b6b844ab4a1ecce79a9e9078151c6 11-Mar-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos: add exynos prefix to fimg2d header

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Inki Dae <inki.dae@samsung.com>
Tested-by: Joonyoung Shim <jy0922.shim@samsung.com>
/external/libdrm/exynos/exynos_fimg2d.c
736d6a1f0f8292fe3f3d0b38f5d69b8693767537 16-Mar-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos: use structure initialization instead of memset

Keeps the code cleaner, since the structs have to be initialized
once anyway.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Inki Dae <inki.dae@samsung.com>
Tested-by: Joonyoung Shim <jy0922.shim@samsung.com>
[evelikov: squash trivial conflict]
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>

Conflicts:
tests/exynos/exynos_fimg2d_test.c
/external/libdrm/exynos/exynos_fimg2d.c
89037326ca6012ba18be29dc6587e11617164400 11-Mar-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos: honor the repeat mode in g2d_copy_with_scale

This is useful when the default repeat mode, which is 'repeat'
produces artifacts at the borders of the copied image.
Choose the 'pad' mode to make use of the color of the destination
image.

In my usage case the destination is the framebuffer, which is
solid filled with a background color. Scaling with 'pad' mode
would then just do the right thing and also produces nice
borders on the output.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Inki Dae <inki.dae@samsung.com>
Tested-by: Joonyoung Shim <jy0922.shim@samsung.com>
/external/libdrm/exynos/exynos_fimg2d.c
03c9cccfa03b999874f794c02ddce7e7dfb04c93 11-Mar-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos: add g2d_scale_and_blend

This is a combination of g2d_copy_with_scale and g2d_scale.
It is a pretty common operation to scale one buffer and then
blend it on top of another, so provide a direct way to that
operation.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Inki Dae <inki.dae@samsung.com>
Tested-by: Joonyoung Shim <jy0922.shim@samsung.com>
/external/libdrm/exynos/exynos_fimg2d.c
f7b0586f164f3157fae228c5e413a38d1650cada 24-Feb-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos: fimg2d: whitespace fix in g2d_flush

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
0d48697e7c10345f940b74de1cd476ec987058bb 24-Feb-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos: fimg2d: introduce G2D_OP_INTERPOLATE

This sets up the blending equation in the following way:
out = src * src_alpha + dst * (1 - src_alpha)

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Tested-by: Joonyoung Shim <jy0922.shim@samsung.com>
/external/libdrm/exynos/exynos_fimg2d.c
ba858e06d8e73180643f40afa9f4de562dc40252 24-Feb-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos: fimg2d: remove TRUE/FALSE from header

The fimg2d header was defining TRUE and FALSE, but actually
these defines are just used once. Remove them, since they
don't make the code better readable/understandable.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c
74add49f1b829dd580aae1dfdce2a0ebbbba216c 24-Feb-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos: introduce g2d_add_base_addr helper function

In almost all functions the base address register is written, so it
makes sense to have a helper function for this.

v3: Wrap line as pointed out by Emil Velikov
<emil.l.velikov@gmail.com>.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Tested-by: Joonyoung Shim <jy0922.shim@samsung.com>
/external/libdrm/exynos/exynos_fimg2d.c
c8168fe5b8e4c448976a79d5b00d10e31e304cf5 24-Feb-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> tests/exynos: fix typos and change wording

No functional changes.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Tested-by: Joonyoung Shim <jy0922.shim@samsung.com>
/external/libdrm/exynos/exynos_fimg2d.c
1d7e78d7877f054f7b96d6a35d50255e76aed44f 24-Feb-2015 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos: replace G2D_DOUBLE_TO_FIXED macro with function

This also avoids the floating point conversion steps and just
uses pure integer arithmetic.
Since the G2D hardware scaling approach is a bit unintuitive,
document it in the function as well.

v2: Explicitly mention the normalization constant.
v3: Use common commenting style as pointed out by
Emil Velikov <emil.l.velikov@gmail.com>.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Tested-by: Joonyoung Shim <jy0922.shim@samsung.com>
/external/libdrm/exynos/exynos_fimg2d.c
d9ce09de12131fa8c5ff2d7c2dbd6b61d8a5fd14 04-Aug-2014 Maarten Lankhorst <maarten.lankhorst@canonical.com> exynos: Use symbol visibility.

No changes to exported symbols.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
/external/libdrm/exynos/exynos_fimg2d.c
e8c3c1358ecaf4e90f7d43762357ae6f8e2022b6 01-Jun-2014 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos: fix scaling factor computation in g2d_copy_with_scale

When division of source and destination width yields the
scaling factor for the x-coordinate, then it should be
source/destination _height_ for y.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
/external/libdrm/exynos/exynos_fimg2d.c
63f51fc4d34814c80d452e03814b5b495548987b 01-Jun-2014 Tobias Jakobi <tjakobi@math.uni-bielefeld.de> exynos: fix coordinate computation in g2d_copy

The right-bottom register isn't set correctly.
Looks like a copy-and-paste error.

Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
/external/libdrm/exynos/exynos_fimg2d.c
4e193aa817685d23cb38722788541caee0115cb5 17-Apr-2014 Daniel Kurtz <djkurtz@chromium.org> exynos_fimg2d: fix cast from pointer to integer of different size

Fixes two gcc [-Wpointer-to-int-cast] warnings.

Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Acked-by: Inki Dae <inki.dae@samsung.com>
/external/libdrm/exynos/exynos_fimg2d.c
bbf6e3dea3c79ea8e0c3e1dd8f80014201e003fc 18-Feb-2013 Inki Dae <inki.dae@samsung.com> libdrm/exynos: add test application for 2d gpu.

This patch adds library and test application for g2d gpu(fimg2d).

The fimg2d hardware is a 2D graphics accelerator(G2D) that
supports Bit Block Transfer(BitBLT).

The library includes the following primitive drawing operations:
.solid fill - This operation fills the given buffer with
the given color data.
.copy - This operation copies contents in source buffer to
destination buffer.
.copy_with_scale - This operation copies contents in source buffer
to destination buffer scaling up or down properly.
.blend - This operation blends contents in source buffer with
the ones in destination buffer.

And the above operations uses gem handle or user space address
allocated by malloc() as source or destination buffer.

And the test application includes just simple primitive drawing
tests with the above library.
And the guide to test is as the following,
"#exynos_fimg2d_test -s connector_id@crtc_id:mode"

With this above simple command, four primitive drawing operations
would be called step by step and also rendered on the output device
to the given connector and crtc id.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Rob Clark <robdclark@gmail.com>
/external/libdrm/exynos/exynos_fimg2d.c