Prior to this change, cogl often queried GLX so that it returned
a framebuffer that could not support an alpha component.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
In order to be more consistent with backends such as gl, support for
creating a surface from content, width, and height parameters was
moved into the backend itself. The option to pass cairo-cogl a
framebuffer to create a texture from still exists, just now it is
not the only option.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
This makes it so that operators requiring transparent values to be
used outside of the bounds of the source and/or mask textures will
trigger a second rendering of transparent pixels.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
This adds correct support for negative stride images by uploading
them to a texture in their upside-down orientation and then
vertically inverting the matrix with which they are read, which
is required because OpenGL (and therefore cogl) cannot pack pixels
with a negative stride.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Prior to this change, API functions like path_exents returned
incorrect results if the cogl-specific representation of rectangular
paths was being used.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Prior to this, the rectangular filling fast path passed arguments to
_cairo_cogl_journal_log_rectangle as if they represented the
coordinates of two opposite points on the rectangle, when the arguments
actually represent a rectangle with the x and y coordinates of one
point and the width and height of the rectangle.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
This adds supporte for raster sources using the same method that
is used to support radial gradient and mesh sources.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Prior to this change, the boilerplate code crashed when given surface
dimensions less than 1. This fixes such behaviour by rounding the
dimensions up to 1, which is also done by the boilerplate code for
several other backends.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Many of the tests in the test suite do many replays of different
small parts of a single surface. When combined with the cogl backend's
journaling mechanism, this consumes very large amounts of memory, as
the entire surface is allocated for each replay. This changes this
behaviour so that only the portion of the surface that will be used
is allocated.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Due to recent changes, all unbounded Porter-Duff compositing operators
can be properly supported in addition to IN.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Prior to this change, the context functions were using the accelerated
rectangle-filling path even if there was a preexisting rectangular path,
producing incorrect results.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
This changes the interpretation of multiple boxes in the clip from
using the intersection of the multiple boxes to using the union of
the multiple boxes, which corrects many results in the test suite.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Prior to this change, CAIRO_EXTEND_NONE was handled the same way as
CAIRO_EXTEND_PAD, which produced incorrect results in many tests.
This fixes such behaviour by created a per-source and per-mask clip
that is applied so that areas outside the bounds of the source or
mask textures are not sampled during drawing.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Prior to this change, the set of template pipelines did not
properly apply to the full combination of mask and source patterns,
which could be either textures or solids.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
This fixes a bug in which the texture coordinate attributes were
being read from the wrong location in the mapped buffer, due to a
typo in the original code.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Due to how cairo matrix math works, the x0 and y0 elements of the
texture matrix were not being normalized, leading to incorrect
results in several tests.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Cogl enters into an infinite recursion if a texture is specified
for layer 1 of a pipeline but no texture is specified for layer 0.
This works around the bug by setting the mask texture on layer 0
if there is no source texture.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
The buffer stack was moved from the surface to the device, as
mapped buffers are shared across all surfaces using the device
and more than one surface may be doing so. Stemming from this, if
a surface tries to map a buffer without first unmapping one that
has been mapped by another surface, it will trigger an error.
The parent backend functions were moved from the device to the
context, as it is possible that the context creation function could
be passed a non-cogl device. Prior to this change, many of the
subsurface tests segfaulted.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Previously, if an unbounded recording surface was given as the
source, the program triggered an assertion failure in the recording
surface code, as acquire_source_image cannot be used on the surface
in this case. This adds a new path to deal with such an unbounded
source surface.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Previously, the rectangle fallback path in surface_paint was
incorrectly passing and int to a function that required a
fixed-point number.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
With the new cogl API, casting the framebuffer into offscreen
and onscreen types with the provided macros is a deprecated
behavior.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Before this change, there was the possibility of context functions
only meant for the cogl surface backend being used on a non-cogl
surface.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Without this, a buffer-swapping function only usable on onscreen
framebuffers would have been used on offscreen framebuffers.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
In order to satisfy the runtime check that accounts for new
API functions that modify the transformation matrix, the new
functions for translation from backend to user coordinates must
be accounted for.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
The path functions in the cogl API have now been split into a
separate one which builds from the same codebase. In order to
compile with this change, the new library has to be added as
an explicit dependency.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
The old boilerplate code no longer worked due to the deprecation of
functions for swapping the buffers that it used.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
These are more changes required to match the new backwards-incompatible
API of cogl-experimental.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
This is the first part of updates to match the backwards-incompatible
changes that have been made in the cogl-experimental public API
since this backend last worked.
Signed-off-by: George Matsumura <gmmatsumura01@bvsd.org>
Update fontconfig wrap to upstream now that it's been merged.
Add gperf wrap which is needed for fontconfig, same as in the
upstream fontconfig repo (this can't be put into wrapdb yet
because it requires changes to source files).
- vsnprintf and snprintf are available since vs2015
- define ISREG if not provided
- guard unistd.h include with HAVE_UNISTD_H
- isnan() is available after vs2010
When the build dir is different from the source dir,
"png.png" is not a valid path. As we can't dispose of
an allocated filename, we add an atexit handler.
This way all binutils tools are detected with $CHOST prefix
if exist. And strings is allowed to be substituted with
STRINGS environment override, so 'llvm-strings' (or other)
alternative can be used.
Bug: https://bugs.gentoo.org/726200
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
This function is reachable via cairo_ft_font_face_create_for_ft_face()
-> _cairo_ft_unscaled_font_create_from_face() ->
_cairo_ft_unscaled_font_create_internal() ->
_cairo_ft_unscaled_font_map_lock(). Thus, it could happen that nothing
initialized mutexes before this code runs.
Signed-off-by: Uli Schlachter <psychon@znc.in>