[Glamor] [PATCH 01/15] Rearrange data structure and remove unused fileds.

zhigang.gong at linux.intel.com zhigang.gong at linux.intel.com
Fri Jan 20 00:51:59 PST 2012


From: Zhigang Gong <zhigang.gong at linux.intel.com>

Signed-off-by: Zhigang Gong <zhigang.gong at linux.intel.com>
---
 src/glamor.c         |   60 ++++++++++++++++++------------------
 src/glamor_picture.c |    5 ++-
 src/glamor_priv.h    |   83 +++++++++++++++++++++++++------------------------
 3 files changed, 75 insertions(+), 73 deletions(-)

diff --git a/src/glamor.c b/src/glamor.c
index 8f74daa..74c23c6 100644
--- a/src/glamor.c
+++ b/src/glamor.c
@@ -343,60 +343,60 @@ glamor_init(ScreenPtr screen, unsigned int flags)
 			goto fail;
 		}
 
-		glamor_priv->saved_close_screen = screen->CloseScreen;
+		glamor_priv->saved_procs.close_screen = screen->CloseScreen;
 		screen->CloseScreen = glamor_close_screen;
 
-		glamor_priv->saved_create_gc = screen->CreateGC;
+		glamor_priv->saved_procs.create_gc = screen->CreateGC;
 		screen->CreateGC = glamor_create_gc;
 
-		glamor_priv->saved_create_pixmap = screen->CreatePixmap;
+		glamor_priv->saved_procs.create_pixmap = screen->CreatePixmap;
 		screen->CreatePixmap = glamor_create_pixmap;
 
-		glamor_priv->saved_destroy_pixmap = screen->DestroyPixmap;
+		glamor_priv->saved_procs.destroy_pixmap = screen->DestroyPixmap;
 		screen->DestroyPixmap = glamor_destroy_pixmap;
 
-		glamor_priv->saved_get_spans = screen->GetSpans;
+		glamor_priv->saved_procs.get_spans = screen->GetSpans;
 		screen->GetSpans = glamor_get_spans;
 
-		glamor_priv->saved_get_image = screen->GetImage;
+		glamor_priv->saved_procs.get_image = screen->GetImage;
 		screen->GetImage = glamor_get_image;
 
-		glamor_priv->saved_change_window_attributes =
+		glamor_priv->saved_procs.change_window_attributes =
 		    screen->ChangeWindowAttributes;
 		screen->ChangeWindowAttributes =
 		    glamor_change_window_attributes;
 
-		glamor_priv->saved_copy_window = screen->CopyWindow;
+		glamor_priv->saved_procs.copy_window = screen->CopyWindow;
 		screen->CopyWindow = glamor_copy_window;
 
-		glamor_priv->saved_bitmap_to_region =
+		glamor_priv->saved_procs.bitmap_to_region =
 		    screen->BitmapToRegion;
 		screen->BitmapToRegion = glamor_bitmap_to_region;
 	}
 #ifdef RENDER
 	if (flags & GLAMOR_USE_PICTURE_SCREEN) {
-		glamor_priv->saved_composite = ps->Composite;
+		glamor_priv->saved_procs.composite = ps->Composite;
 		ps->Composite = glamor_composite;
 
-		glamor_priv->saved_trapezoids = ps->Trapezoids;
+		glamor_priv->saved_procs.trapezoids = ps->Trapezoids;
 		ps->Trapezoids = glamor_trapezoids;
 
-		glamor_priv->saved_glyphs = ps->Glyphs;
+		glamor_priv->saved_procs.glyphs = ps->Glyphs;
 		ps->Glyphs = glamor_glyphs;
 
-		glamor_priv->saved_triangles = ps->Triangles;
+		glamor_priv->saved_procs.triangles = ps->Triangles;
 		ps->Triangles = glamor_triangles;
 
-		glamor_priv->saved_addtraps = ps->AddTraps;
+		glamor_priv->saved_procs.addtraps = ps->AddTraps;
 		ps->AddTraps = glamor_add_traps;
 
-		glamor_priv->saved_unrealize_glyph = ps->UnrealizeGlyph;
+		glamor_priv->saved_procs.unrealize_glyph = ps->UnrealizeGlyph;
 		ps->UnrealizeGlyph = glamor_glyph_unrealize;
 	}
-	glamor_priv->saved_create_picture = ps->CreatePicture;
+	glamor_priv->saved_procs.create_picture = ps->CreatePicture;
 	ps->CreatePicture = glamor_create_picture;
 
-	glamor_priv->saved_destroy_picture = ps->DestroyPicture;
+	glamor_priv->saved_procs.destroy_picture = ps->DestroyPicture;
 	ps->DestroyPicture = glamor_destroy_picture;
 	glamor_init_composite_shaders(screen);
 #endif
@@ -430,22 +430,22 @@ glamor_close_screen(int idx, ScreenPtr screen)
 	PictureScreenPtr ps = GetPictureScreenIfSet(screen);
 #endif
 	glamor_glyphs_fini(screen);
-	screen->CloseScreen = glamor_priv->saved_close_screen;
-	screen->CreateGC = glamor_priv->saved_create_gc;
-	screen->CreatePixmap = glamor_priv->saved_create_pixmap;
-	screen->DestroyPixmap = glamor_priv->saved_destroy_pixmap;
-	screen->GetSpans = glamor_priv->saved_get_spans;
+	screen->CloseScreen = glamor_priv->saved_procs.close_screen;
+	screen->CreateGC = glamor_priv->saved_procs.create_gc;
+	screen->CreatePixmap = glamor_priv->saved_procs.create_pixmap;
+	screen->DestroyPixmap = glamor_priv->saved_procs.destroy_pixmap;
+	screen->GetSpans = glamor_priv->saved_procs.get_spans;
 	screen->ChangeWindowAttributes =
-	    glamor_priv->saved_change_window_attributes;
-	screen->CopyWindow = glamor_priv->saved_copy_window;
-	screen->BitmapToRegion = glamor_priv->saved_bitmap_to_region;
+	    glamor_priv->saved_procs.change_window_attributes;
+	screen->CopyWindow = glamor_priv->saved_procs.copy_window;
+	screen->BitmapToRegion = glamor_priv->saved_procs.bitmap_to_region;
 #ifdef RENDER
 	if (ps) {
-		ps->Composite = glamor_priv->saved_composite;
-		ps->Trapezoids = glamor_priv->saved_trapezoids;
-		ps->Glyphs = glamor_priv->saved_glyphs;
-		ps->Triangles = glamor_priv->saved_triangles;
-		ps->CreatePicture = glamor_priv->saved_create_picture;
+		ps->Composite = glamor_priv->saved_procs.composite;
+		ps->Trapezoids = glamor_priv->saved_procs.trapezoids;
+		ps->Glyphs = glamor_priv->saved_procs.glyphs;
+		ps->Triangles = glamor_priv->saved_procs.triangles;
+		ps->CreatePicture = glamor_priv->saved_procs.create_picture;
 	}
 #endif
 	if (glamor_priv->vb)
diff --git a/src/glamor_picture.c b/src/glamor_picture.c
index 27c3fe8..c071608 100644
--- a/src/glamor_picture.c
+++ b/src/glamor_picture.c
@@ -5,6 +5,7 @@
 #include <stdlib.h>
 
 #include "glamor_priv.h"
+#include "mipict.h"
 
 /* Upload picture to texture.  We may need to flip the y axis or
  * wire alpha to 1. So we may conditional create fbo for the picture.
@@ -73,7 +74,7 @@ glamor_create_picture(PicturePtr picture)
 		if (pixmap_priv->type == GLAMOR_TEXTURE_DRM)
 			glamor_set_pixmap_type(pixmap, GLAMOR_SEPARATE_TEXTURE);
 	}
-	return glamor_priv->saved_create_picture(picture);
+	return miCreatePicture(picture);
 }
 
 void
@@ -95,7 +96,7 @@ glamor_destroy_picture(PicturePtr picture)
 		pixmap_priv->is_picture = 0;
 		pixmap_priv->pict_format = 0;
 	}
-	glamor_priv->saved_destroy_picture(picture);
+	miDestroyPicture(picture);
 }
 
 void
diff --git a/src/glamor_priv.h b/src/glamor_priv.h
index f3b0996..f00ac2d 100644
--- a/src/glamor_priv.h
+++ b/src/glamor_priv.h
@@ -124,7 +124,6 @@ enum glamor_gl_flavor {
 
 #define GLAMOR_CREATE_PIXMAP_CPU  0x100
 
-#define GLAMOR_NUM_GLYPH_CACHES 4
 #define GLAMOR_NUM_GLYPH_CACHE_FORMATS 2
 
 typedef struct {
@@ -137,46 +136,57 @@ typedef struct {
 
 #include "glamor_gl_dispatch.h"
 
-typedef struct glamor_screen_private {
-	CloseScreenProcPtr saved_close_screen;
-	CreateGCProcPtr saved_create_gc;
-	CreatePixmapProcPtr saved_create_pixmap;
-	DestroyPixmapProcPtr saved_destroy_pixmap;
-	GetSpansProcPtr saved_get_spans;
-	GetImageProcPtr saved_get_image;
-	CompositeProcPtr saved_composite;
-	TrapezoidsProcPtr saved_trapezoids;
-	GlyphsProcPtr saved_glyphs;
-	ChangeWindowAttributesProcPtr saved_change_window_attributes;
-	CopyWindowProcPtr saved_copy_window;
-	BitmapToRegionProcPtr saved_bitmap_to_region;
-	TrianglesProcPtr saved_triangles;
-	AddTrapsProcPtr saved_addtraps;
-	CreatePictureProcPtr saved_create_picture;
-	DestroyPictureProcPtr saved_destroy_picture;
-	UnrealizeGlyphProcPtr saved_unrealize_glyph;
+struct glamor_saved_procs {
+	CloseScreenProcPtr close_screen;
+	CreateGCProcPtr create_gc;
+	CreatePixmapProcPtr create_pixmap;
+	DestroyPixmapProcPtr destroy_pixmap;
+	GetSpansProcPtr get_spans;
+	GetImageProcPtr get_image;
+	CompositeProcPtr composite;
+	TrapezoidsProcPtr trapezoids;
+	GlyphsProcPtr glyphs;
+	ChangeWindowAttributesProcPtr change_window_attributes;
+	CopyWindowProcPtr copy_window;
+	BitmapToRegionProcPtr bitmap_to_region;
+	TrianglesProcPtr triangles;
+	AddTrapsProcPtr addtraps;
+	CreatePictureProcPtr create_picture;
+	DestroyPictureProcPtr destroy_picture;
+	UnrealizeGlyphProcPtr unrealize_glyph;
+};
 
+typedef struct glamor_screen_private {
+	struct glamor_gl_dispatch dispatch;
 	int yInverted;
-	int screen_fbo;
+	enum glamor_gl_flavor gl_flavor;
+	int has_pack_invert;
+	int has_fbo_blit;
+	int max_fbo_size;
+
+	/* glamor_solid */
+	GLint solid_prog;
+	GLint solid_color_uniform_location;
+
+	/* vertext/elment_index buffer object for render */
 	GLuint vbo, ebo;
 	int vbo_offset;
 	int vbo_size;
 	char *vb;
 	int vb_stride;
-	enum glamor_gl_flavor gl_flavor;
-	int has_pack_invert;
-	int has_fbo_blit;
-	int max_fbo_size;
+	Bool has_source_coords, has_mask_coords;
+	int render_nr_verts;
+	glamor_composite_shader composite_shader[SHADER_SOURCE_COUNT]
+						[SHADER_MASK_COUNT]
+						[SHADER_IN_COUNT];
+	glamor_glyph_cache_t glyphCaches[GLAMOR_NUM_GLYPH_CACHE_FORMATS];
+	Bool glyph_cache_initialized;
 
-	/* glamor_finishaccess */
+	/* shaders to restore a texture to another texture.*/
 	GLint finish_access_prog[2];
 	GLint finish_access_no_revert[2];
 	GLint finish_access_swap_rb[2];
 
-	/* glamor_solid */
-	GLint solid_prog;
-	GLint solid_color_uniform_location;
-
 	/* glamor_tile */
 	GLint tile_prog;
 
@@ -185,19 +195,11 @@ typedef struct glamor_screen_private {
 	GLint put_image_xybitmap_fg_uniform_location;
 	GLint put_image_xybitmap_bg_uniform_location;
 
-	/* glamor_composite */
-	glamor_composite_shader composite_shader[SHADER_SOURCE_COUNT]
-	    [SHADER_MASK_COUNT][SHADER_IN_COUNT];
-	Bool has_source_coords, has_mask_coords;
-	int render_nr_verts;
-	glamor_pixmap_validate_function_t *pixmap_validate_funcs;
-	glamor_glyph_cache_t glyph_caches[GLAMOR_NUM_GLYPH_CACHES];
+	int screen_fbo;
+	struct glamor_saved_procs saved_procs;
 	char delayed_fallback_string[GLAMOR_DELAYED_STRING_MAX + 1];
 	int delayed_fallback_pending;
-
-	glamor_glyph_cache_t glyphCaches[GLAMOR_NUM_GLYPH_CACHE_FORMATS];
-	Bool glyph_cache_initialized;
-	struct glamor_gl_dispatch dispatch;
+	glamor_pixmap_validate_function_t *pixmap_validate_funcs;
 } glamor_screen_private;
 
 typedef enum glamor_access {
@@ -236,7 +238,6 @@ typedef union _glamor_pending_op {
  * @container: The corresponding pixmap's pointer.
  **/
 
-
 typedef struct glamor_pixmap_private {
 	glamor_pixmap_type_t type;
 	unsigned char gl_fbo:1;
-- 
1.7.4.4



More information about the Glamor mailing list