glamor: Add render triangles support.
By default, fallback to frame buffer currently. This commit makes us pass the rendercheck's triangles testing. Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
This commit is contained in:
parent
ac0589c916
commit
229240e565
|
@ -30,6 +30,7 @@ libglamor_la_SOURCES = \
|
|||
glamor_setspans.c \
|
||||
glamor_render.c \
|
||||
glamor_tile.c \
|
||||
glamor_triangles.c\
|
||||
glamor.h
|
||||
libglamor_la_LIBADD = \
|
||||
glu3/libglu3.la
|
||||
|
|
|
@ -279,6 +279,8 @@ glamor_init(ScreenPtr screen, unsigned int flags)
|
|||
ps->Trapezoids = glamor_trapezoids;
|
||||
glamor_priv->saved_glyphs = ps->Glyphs;
|
||||
ps->Glyphs = glamor_glyphs;
|
||||
glamor_priv->saved_triangles = ps->Triangles;
|
||||
ps->Triangles = glamor_triangles;
|
||||
glamor_init_composite_shaders(screen);
|
||||
#endif
|
||||
glamor_init_solid_shader(screen);
|
||||
|
@ -317,6 +319,7 @@ glamor_close_screen(int idx, ScreenPtr screen)
|
|||
ps->Composite = glamor_priv->saved_composite;
|
||||
ps->Trapezoids = glamor_priv->saved_trapezoids;
|
||||
ps->Glyphs = glamor_priv->saved_glyphs;
|
||||
ps->Triangles = glamor_priv->saved_triangles;
|
||||
}
|
||||
#endif
|
||||
free(glamor_priv);
|
||||
|
|
|
@ -148,6 +148,7 @@ typedef struct glamor_screen_private {
|
|||
ChangeWindowAttributesProcPtr saved_change_window_attributes;
|
||||
CopyWindowProcPtr saved_copy_window;
|
||||
BitmapToRegionProcPtr saved_bitmap_to_region;
|
||||
TrianglesProcPtr saved_triangles;
|
||||
|
||||
char *delayed_fallback_string;
|
||||
int yInverted;
|
||||
|
@ -232,8 +233,8 @@ glamor_fallback(char *format, ...)
|
|||
va_list ap;
|
||||
|
||||
va_start(ap, format);
|
||||
LogMessageVerb(X_INFO, 3, "fallback: ");
|
||||
LogMessageVerb(X_NONE, 3, format, ap);
|
||||
//LogMessageVerb(X_INFO, 3, "fallback: ");
|
||||
//LogMessageVerb(X_NONE, 3, format, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
|
@ -266,8 +267,8 @@ glamor_report_delayed_fallbacks(ScreenPtr screen)
|
|||
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
|
||||
|
||||
if (glamor_priv->delayed_fallback_string) {
|
||||
LogMessageVerb(X_INFO, 3, "fallback: %s",
|
||||
glamor_priv->delayed_fallback_string);
|
||||
//LogMessageVerb(X_INFO, 3, "fallback: %s",
|
||||
// glamor_priv->delayed_fallback_string);
|
||||
glamor_clear_delayed_fallbacks(screen);
|
||||
}
|
||||
}
|
||||
|
@ -461,4 +462,15 @@ void glamor_tile(PixmapPtr pixmap, PixmapPtr tile,
|
|||
int tile_x, int tile_y);
|
||||
void glamor_init_tile_shader(ScreenPtr screen);
|
||||
|
||||
/* glamor_triangles */
|
||||
void
|
||||
glamor_triangles (CARD8 op,
|
||||
PicturePtr pSrc,
|
||||
PicturePtr pDst,
|
||||
PictFormatPtr maskFormat,
|
||||
INT16 xSrc,
|
||||
INT16 ySrc,
|
||||
int ntris,
|
||||
xTriangle *tris);
|
||||
|
||||
#endif /* GLAMOR_PRIV_H */
|
||||
|
|
61
glamor/glamor_triangles.c
Normal file
61
glamor/glamor_triangles.c
Normal file
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright © 2009 Intel Corporation
|
||||
* Copyright © 1998 Keith Packard
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*
|
||||
* Authors:
|
||||
* Zhigang Gong <zhigang.gong@gmail.com>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef HAVE_DIX_CONFIG_H
|
||||
#include <dix-config.h>
|
||||
#endif
|
||||
|
||||
#include "glamor_priv.h"
|
||||
|
||||
void
|
||||
glamor_triangles (CARD8 op,
|
||||
PicturePtr pSrc,
|
||||
PicturePtr pDst,
|
||||
PictFormatPtr maskFormat,
|
||||
INT16 xSrc,
|
||||
INT16 ySrc,
|
||||
int ntris,
|
||||
xTriangle *tris)
|
||||
{
|
||||
|
||||
if (glamor_prepare_access(pDst->pDrawable, GLAMOR_ACCESS_RW)) {
|
||||
if (pSrc->pDrawable == NULL ||
|
||||
glamor_prepare_access(pSrc->pDrawable, GLAMOR_ACCESS_RO))
|
||||
{
|
||||
|
||||
fbTriangles(op,
|
||||
pSrc, pDst, maskFormat, xSrc, ySrc, ntris, tris);
|
||||
}
|
||||
if (pSrc->pDrawable != NULL)
|
||||
glamor_finish_access(pSrc->pDrawable);
|
||||
|
||||
glamor_finish_access(pDst->pDrawable);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user