summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* | Visual C++ support updatesChun-wei Fan2011-11-033-6/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Updated cogl.smbols and the property sheets due to the following commits: 63461c0f framebuffer: Add explicit buffer discard API a74c81ad onscreen: Support multisample based onscreen rendering dd7b16fa offscreen: Adds support for offscreen multisampling a8efe6af framebuffer: Adds experimental _finish() API f6daed62 clip: Adds cogl_clip_push_primitive API 6253b09c texture-2d-sliced: make CoglTexture2DSliced public 426c8b8f features: Support more than 32 features! 1d8fd64e meta-texture: This publicly exposes CoglMetaTexture 79719347 framebuffer: split out CoglOnscreen code 90f10611 texture: Make CoglTextureRectangle experimentally public 1ee861a8 framebuffer: adds cogl_framebuffer_get_samples_per_pixel 18fb1ffab texture: Make CoglSubTexture experimental public api
* | Merge branch 'master' into msvc-supportChun-wei Fan2011-11-03131-3127/+5843
|\ \ | |/ | | | | | | | | | | | | | | | | Conflicts: cogl/cogl-sub-texture.c cogl/cogl-texture-2d.c cogl/cogl-texture-3d.c cogl/cogl-texture-rectangle.c cogl/cogl-texture.c cogl/cogl-util.h
| * Use the same number for n_tex_coord_attribs in all linked shadersNeil Roberts2011-11-027-50/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On GLES2, we need to specify an array size for the texture coord varying array. Previously this size would be decided in one of the following ways: - For generated vertex shaders it is always the number of layers in the pipeline. - For generated fragment shaders it is the highest sampled texture unit in the pipeline or the number of attributes supplied by the primitive, whichever is higher. - For user shaders it is usually the number of attributes supplied by the primitive. However, if the application tries to compile the shader and query the result before using it, it will always be at least 4. These shaders can quite easily end up with different values for the declaration which makes it fail to link. This patch changes it so that all of the shaders are generated with the maximum of the number of texture attributes supplied by the primitive and the number of layers in the pipeline. If this value changes then the shaders are regenerated, including user shaders. That way all of the shaders will always have the same value. https://bugzilla.gnome.org/show_bug.cgi?id=662184 Reviewed-by: Robert Bragg <robert@linux.intel.com>
| * test-just-vertex-shader: Sample a texture in the fragment pipelineNeil Roberts2011-11-021-10/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously the layer combine on the test pipeline was set up to replace the incoming color with the layer constant. This patch changes it to sample the replacement color from a 1x1 texture instead. This exposes a bug on the GLES2 backend where the vertex shader will be generated with a size for cogl_tex_coord_out of 4 but the corresponding declaration in the fragment shader will have n_layers, which is 1. This makes the program fail to link and the test fails. https://bugzilla.gnome.org/show_bug.cgi?id=662184 Reviewed-by: Robert Bragg <robert@linux.intel.com>
| * doc: deprecate cogl_texture_get_rowstride()Robert Bragg2011-11-021-9/+34
| | | | | | | | | | | | | | | | | | | | | | | | This documents that cogl_texture_get_rowstride() is deprecated (or rather it was a mistake that the api was ever published) and also clarifies the rowstride argument documentation for cogl_texture_get_data() to explain how it's automatically calculated when 0 is passed to help avoid misleading people into thinking that cogl_texture_get_rowstride() is an appropriate way to get a valid rowstride for that. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * Updated Spanish translationDaniel Mustieles2011-11-021-8/+9
| |
| * build: add missing header to fix make distRico Tzschichholz2011-11-021-0/+1
| |
| * Remove inclusion of Xlib headers in Cogl headersZan Dobersek2011-11-0116-29/+65
| | | | | | | | | | | | | | | | | | | | | | Xlib headers define many trivially named objects which can later cause name collision problems when only cogl.h header is included in a program or library. Xlib headers are now only included through including the standalone header cogl-xlib.h. https://bugzilla.gnome.org/show_bug.cgi?id=661174 Reviewed-by: Robert Bragg <robert@linux.intel.com>
| * crate: Use indicesJasper St. Pierre2011-11-011-22/+19
| | | | | | | | | | | | https://bugzilla.gnome.org/show_bug.cgi?id=661019 Reviewed-by: Robert Bragg <robert@linux.intel.com>
| * tests: ports test-sub-texture to not depend on clutterRobert Bragg2011-11-013-173/+125
| | | | | | | | | | | | | | | | As part of the on going effort to port the conformance tests that were originally written as clutter tests to be standalone cogl tests this patch ports the test-sub-texture test to be standalone now. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * tests: Adds test_utils_check_region() utility apiRobert Bragg2011-11-012-0/+56
| | | | | | | | | | | | | | | | For conformance tests that want to read back a region of pixels and check they all have the same color we now have a test_utils_check_region utility function for that. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * docs: Adds various missing 2.0 sections and symbolsRobert Bragg2011-11-014-14/+56
| | | | | | | | | | This adds a number of missing sections and symbols to the experimental 2.0 reference manual.
| * rectangles: rely on meta-texture api for clampingRobert Bragg2011-11-011-115/+4
| | | | | | | | | | | | | | Instead of emulating _CLAMP_TO_EDGE in cogl-primitives.c we now defer to cogl_meta_texture_foreach_in_region() to support _CLAMP_TO_EDGE for us. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * meta-texture: Support CLAMP_TO_EDGERobert Bragg2011-11-012-11/+247
| | | | | | | | | | | | | | | | | | cogl_meta_texture_foreach_in_region() now directly supports CLAMP_TO_EDGE wrap modes. This means the cogl_rectangle code will be able to build on this and makes the logic accessible to anyone developing custom primitives that need to support meta textures. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * primitive: Add n_indices arg to _set_indices functionRobert Bragg2011-11-014-16/+149
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When associating indices with a CoglPrimitive you are now forced to specify the number of indices that should be read when drawing. It's easy to forget to call cogl_primitive_set_n_vertices() after associating indices with a primitive (and anyway you can see that someone could be led to believe Cogl can determine that implicitly somewhow) so this should avoid a lot of mistakes with using the API. We'd expect that setting indices and updating the n_vertices property would go hand in hand 99% of the time anyway so this change should be more convenient as well as less error prone. This patch adds some documentation for cogl_primitive_set_indices and cogl_primitive_get/set_n_vertices. It also tries to clarify how the CoglPrimitive:n_vertices property is updated and what that property means in relation to other functions too. https://bugzilla.gnome.org/show_bug.cgi?id=661019 Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * doc: Adds some documentation for CoglIndicesRobert Bragg2011-11-011-1/+52
| | | | | | | | | | | | | | This adds just some basic documentation to try and explain what CoglIndices are useful for. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * spans: avoid normalize with normalize_factor of 1Robert Bragg2011-11-011-4/+7
| | | | | | | | | | | | | | if a normalize factor of 1 is passed then we don't need to normalize the starting point to find the closest point equivalent to 0. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * texture: Make CoglSubTexture experimental public apiRobert Bragg2011-11-018-46/+158
| | | | | | | | | | | | | | | | | | | | | | | | This exposes cogl_sub_texture_new() and cogl_is_sub_texture() as experimental public API. Previously sub-textures were only exposed via cogl_texture_new_from_sub_texture() so there wasn't a corresponding CoglSubTexture type. A CoglSubTexture is a high-level texture defined as a sub-region of some other parent texture. CoglSubTextures are high level textures that implement the CoglMetaTexture interface which can be used to manually handle texture repeating. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * framebuffer: adds cogl_framebuffer_get_samples_per_pixelRobert Bragg2011-11-016-0/+88
| | | | | | | | | | | | | | | | It's useful to be able to query back the number of point_samples_per_pixel that may have previously be chosen using cogl_framebuffer_set_samples_per_pixel(). Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * doc: Adds a cogl-texture-2d to the 2.0 reference manualRobert Bragg2011-11-011-0/+9
| | | | | | | | | | | | | | When we make CoglTexture2D public as experimental api we forgot to add a corresponding section the experimental 2.0 reference manual. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * texture: Make CoglTextureRectangle experimentally publicRobert Bragg2011-11-0111-64/+191
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This exposes CoglTextureRectangle in the experimental cogl 2.0 api. For now we just expose a single constructor; cogl_texture_rectangle_new_with_size() but we can add more later. This is part of going work to improve our texture apis with more emphasis on providing low-level access to the varying semantics of different texture types understood by the gpu instead of only trying to present a lowest common denominator api. CoglTextureRectangle is notably useful for never being restricted to power of two sizes and for being sampled with non-normalized texture coordinates which can be convenient for use a lookup tables in glsl due to not needing separate uniforms for mapping normalized coordinates to texels. Unlike CoglTexture2D though rectangle textures can't have a mipmap and they only support the _CLAMP_TO_EDGE wrap mode. Applications wanting to use CoglTextureRectangle should first check cogl_has_feature (COGL_FEATURE_ID_TEXTURE_RECTANGLE). Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * test-backface-culling: don't call _swap_buffersRobert Bragg2011-11-011-2/+0
| | | | | | | | | | | | | | | | | | | | | | This removes the call to cogl_framebuffer_swap_buffers in the test's paint() function since we shouldn't assume that the framebuffer is a CoglOnscreen framebuffer - in fact by default the framebuffer is offscreen. The swap was resulting in a crash since cogl_framebuffer_swap_buffers has started asserting that the given framebuffer is a CoglOnscreen. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * Start to reduce dependence on glibRobert Bragg2011-11-0149-300/+381
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we've had several developers from admirable projects say they would like to use Cogl but would really prefer not to pull in gobject,gmodule and glib as extra dependencies we are investigating if we can get to the point where glib is only an optional dependency. Actually we feel like we only make minimal use of glib anyway, so it may well be quite straightforward to achieve this. This adds a --disable-glib configure option that can be used to disable features that depend on glib. Actually --disable-glib doesn't strictly disable glib at this point because it's more helpful if cogl continues to build as we make incremental progress towards this. The first use of glib that this patch tackles is the use of g_return_val_if_fail and g_return_if_fail which have been replaced with equivalent _COGL_RETURN_VAL_IF_FAIL and _COGL_RETURN_IF_FAIL macros. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * matrix: check DIRTY_TYPE flag in _cogl_matrix_printRobert Bragg2011-11-011-3/+11
| | | | | | | | | | | | | | | | | | when printing a matrix we aim to print out the matrix type but we weren't checking the flags first to see if the type is valid. We now check for the DIRTY_TYPE flag and if not set we also validate the matrix type isn't out of range. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * matrix: init flags before tmp _translate in _look_atRobert Bragg2011-11-011-2/+2
| | | | | | | | | | | | | | | | | | | | In cogl_matrix_look_at we have a tmp CoglMatrix allocated on the stack but we weren't initializing its flags before passing it to cogl_matrix_translate which meant if we were using COGL_DEBUG=matrices we would end up trying to print out an invalid matrix type resulting in a crash when overrunning an array of type names. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * framebuffer: split out CoglOnscreen codeRobert Bragg2011-11-0118-576/+700
| | | | | | | | | | | | | | | | | | | | This factors out the CoglOnscreen code from cogl-framebuffer.c so we now have cogl-onscreen.c, cogl-onscreen.h and cogl-onscreen-private.h. Notably some of the functions pulled out are currently namespaced as cogl_framebuffer but we know we are planning on renaming them to be in the cogl_onscreen namespace; such as cogl_framebuffer_swap_buffers(). Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * tests: Adds a really simple cogl-info programRobert Bragg2011-11-012-1/+143
| | | | | | | | | | | | | | | | | | It could be nice to extend this as Cogl gains more APIs for introspecting its own features but for now cogl-info just uses the new cogl_foreach_feature() API to enumerate the available features for a default context and prints those to the terminal. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * Adds support for a mirrored repeat wrap modeRobert Bragg2011-11-018-8/+54
| | | | | | | | | | | | | | | | | | This adds COGL_PIPELINE_WRAP_MODE_MIRRORED_REPEAT enum so that mirrored texture repeating can be used. This also adds support for emulating the MIRRORED_REPEAT mode via the cogl-spans API so it can also be used with meta textures such as sliced and atlas textures. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * meta-texture: This publicly exposes CoglMetaTextureRobert Bragg2011-11-0118-697/+1075
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CoglMetaTexture is an interface for dealing with high level textures that may be comprised of one or more low-level textures internally. The interface allows the development of primitive drawing APIs that can draw with high-level textures (such as atlas textures) even though the GPU doesn't natively understand these texture types. There is currently just one function that's part of this interface: cogl_meta_texture_foreach_in_region() which allows an application to resolve the internal, low-level textures of a high-level texture. cogl_rectangle() uses this API for example so that it can easily emulate the _REPEAT wrap mode for textures that the hardware can't natively handle repeating of. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * spans: Represent spans with floating point precisionRobert Bragg2011-11-013-11/+10
| | | | | | | | | | | | | | | | | | Instead of using integers to represent spans we now use floats instead. This means we are no longer forced to iterate using non-normalized coordinates so we should hopefully be able to avoid numerous redundant unnormalize/normalize steps when using the spans api. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * texture-2d-sliced: simplify _foreach_sub_texture_in_regionRobert Bragg2011-11-011-74/+37
| | | | | | | | | | | | | | | | | | | | | | Since we can assume that all slices are CoglTexture2D textures we don't need to chain on our implementation of _foreach_sub_texture_in_region by calling _cogl_texture_foreach_sub_texture_in_region() for each slice. We now simply determine the normalized virtual coordinates for the current span inline and call the given callback inline too. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * tests: ports test-wrap-modes.c to be standalone cogl testRobert Bragg2011-11-013-125/+97
| | | | | | | | | | | | | | This ports test-wrap-modes.c from being a clutter based test to one that is a standalone cogl test. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * features: Support more than 32 features!Robert Bragg2011-11-0127-64/+353
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently features are represented as bits in a 32bit mask so we obviously can't have more than 32 features with that approach. The new approach is to use the COGL_FLAGS_ macros which lets us handle bitmasks without a size limit and we change the public api to accept individual feature enums instead of a mask. This way there is no limit on the number of features we can add to Cogl. Instead of using cogl_features_available() there is a new cogl_has_feature() function and for checking multiple features there is cogl_has_features() which takes a zero terminated vararg list of features. In addition to being able to check for individual features this also adds a way to query all the features currently available via cogl_foreach_feature() which will call a callback for each feature. Since the new functions take an explicit context pointer there is also no longer any ambiguity over when users can first start to query features. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * make COGL_FEATURE_VBOS a private featureRobert Bragg2011-11-017-9/+20
| | | | | | | | | | | | | | | | | | | | | | | | Cogl provides a consistent public interface regardless of whether the underlying GL driver supports VBOs so it doesn't make much sense to have this feature as part of the public api. We can't break the api by removing the enum but at least we no longer ever set the feature flag. We now have a replacement private feature flag COGL_PRIVATE_FEATURE_VBOS which cogl now checks for internally. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * make COGL_FEATURE_PBOS a private featureRobert Bragg2011-11-014-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | Cogl provides a consistent public interface regardless of whether the underlying GL driver supports PBOs so it doesn't make much sense to have this feature as part of the public api. We can't break the api by removing the enum but at least we no longer ever set the feature flag. We now have a replacement private feature flag COGL_PRIVATE_FEATURE_PBOS which cogl now checks for internally. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * make COGL_FEATURE_FOUR_CLIP_PLANES a private featureRobert Bragg2011-11-014-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | Cogl doesn't currently expose public api for clip planes so it doesn't make much sense to have this feature as part of the public api. We can't break the api by removing the enum but at least we no longer ever set the feature flag. We now have a replacement private feature flag COGL_PRIVATE_FEATURE_FOUR_CLIP_PLANES which cogl now checks for internally. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * make COGL_FEATURE_OFFSCREEN_BLIT a private featureRobert Bragg2011-11-016-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | Cogl doesn't expose public api for blitting between framebuffers so it doesn't make much sense to have this feature as part of the public api currently. We can't break the api by removing the enum but at least we no longer ever set the feature flag. We now have a replacement private feature flag COGL_PRIVATE_FEATURE_OFFSCREEN_BLIT which cogl now checks for internally. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * make COGL_FEATURE_STENCIL_BUFFER privateRobert Bragg2011-11-014-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Although we have to leave the COGL_FEATURE_STENCIL_BUFFER enum as part of the public api we no longer ever set this feature flag. Cogl doesn't currently expose the concept of a stencil buffer in the public api (we only indirectly expose it via the clip stack api) so it doesn't make much sense to have a stencil buffer feature flag. We now have a COGL_PRIVATE_FEATURE_STENCIL_BUFFER flag instead which we can check when we need to use the buffer for clipping. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * Remove beneign GL_MESA_ycbcr_texture checkRobert Bragg2011-11-011-7/+0
| | | | | | | | | | | | | | | | Actual support for yuv textures isn't fully plumbed into Cogl currently so the check for GL_MESA_ycbcr_texture is meaningless. For now we just remove the check. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * pipeline-layer: fix win32 build issueRobert Bragg2011-11-011-0/+1
| | | | | | | | | | | | | | make sure to #include "cogl-texture-private.h" in cogl-pipeline-layer.c otherwise the build fails on win32. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * primitives: make validate_first_layer_cb update override pipelineRobert Bragg2011-11-011-9/+13
| | | | | | | | | | | | | | | | | | This fixes validate_first_layer_cb so that it update the override pipeline not the user's original pipeline. It also makes the check for when to override the wrap mode more robust by considering that we might add more wrap modes in the future. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * spans: remove unused intersect_start/end_local membersRobert Bragg2011-11-011-2/+0
| | | | | | | | | | | | | | There were simply two unused members in CoglSpanIter which this patch removes. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * spans: only iterate spans within start-end rangeRobert Bragg2011-11-012-22/+3
| | | | | | | | | | | | | | | | To save users of the api having to manually check if each iterated span intersects the region of interest we now guarantee that any span iterated implicitly intersects the region of interest. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * texture-2d-sliced: make CoglTexture2DSliced publicRobert Bragg2011-11-017-143/+251
| | | | | | | | | | | | | | | | This make the CoglTexture2DSliced type public and adds cogl_texture_2d_sliced_new_with_size() as an experimental API that can be used to construct a sliced texture without any initial data. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * clip: Adds cogl_clip_push_primitive APIRobert Bragg2011-11-014-65/+287
| | | | | | | | | | | | | | | | | | | | | | | | This adds a new experimental function, cogl_clip_push_primitive, that allows you to push a CoglPrimitive onto the clip stack. The primitive should describe a flat 2D shape and the geometry shouldn't include any self intersections. When pushing a primitive you also need to tell Cogl what the bounding box of that shape is (in shape local coordinates) so that Cogl is able to efficiently update the required region of the stencil buffer. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * primitive: Adds _cogl_primitive_draw api taking flagsRobert Bragg2011-11-012-13/+27
| | | | | | | | | | | | | | | | | | | | This adds an internal _cogl_primitive_draw API that takes CoglDrawFlags like _cogl_draw_attributes does which allows us to draw a primitive but skip things like flushing journals, flushing framebuffer state and avoid validating the current pipeline. This allows us to draw primitives in places that could otherwise cause recursion. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * clip-stack: Move path flushing code to cogl-clip-stack.cRobert Bragg2011-11-013-116/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | The code that adds the silhouette of a path to the stencil buffer was living in cogl2-path.c which seemed out of place when the bulk of the work really related more to how the stencil buffer is managed and basically only one line (a call to _cogl_path_fill_nodes) really related to the path code directly. This moves the code into cogl-clip-stack.c alone with similar code that can add rectangle masks to the stencil buffer. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * path: handle slice tex fallback using clip stackRobert Bragg2011-11-012-68/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we are asked to fill a path using any sliced textures then we need to fallback to adding a mask of the path to the stencil buffer and then drawing a bounding rectangle with the source textures instead. Previously we were sharing some of the clip-stack code for adding the path mask to the stencil buffer and being careful to check that the current clip stack has been flushed already. We then made sure to dirty the clip stack to be sure the path mask would be cleared from the stencil buffer later. This patch aims to simplify how this fallback is dealt with by just using the public clipping API instead of relying on more fiddly tricks to modify the stencil buffer directly without conflicting with the clip stack. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * framebuffer: Adds experimental _finish() APIRobert Bragg2011-11-013-0/+27
| | | | | | | | | | | | | | | | | | | | This adds a new experimental function, cogl_framebuffer_finish(), which can be used to explicitly synchronize the CPU with the GPU. It's rare that this level of explicit synchronization is desirable but for example it can be useful during performance analysys to make sure measurements reflect the working time of the GPU not just the time to queue commands. Reviewed-by: Neil Roberts <neil@linux.intel.com>
| * examples: Adds a simple 4x msaa exampleRobert Bragg2011-10-282-1/+115
| | | | | | | | | | | | | | | | | | This adds a very basic test of onscreen and offscreen multisample rendering with 4 samples per pixel. The test simply draws two triangles; the one on the left is rendered directly to the onscreen framebuffer and the other is first rendered offscreen before copying it onscreen. Reviewed-by: Neil Roberts <neil@linux.intel.com>