regenerated new code taking advantage of simplified function prototypes.

* app/composite/gimp-composite-dispatch.[ch]: regenerated new code
taking advantage of simplified function prototypes.

* app/composite/gimp-composite-test.c: New regression testing
driver.  This file is automatically generated, but it's included
in the cvs tree for expediency.

* app/composite/ns.py: hopeful checks for which OS is currently
running as a hint to what nm(1) is available.

* app/composite/gimp-composite-mmx.[ch]
* app/composite/gimp-composite-sse.[ch]
* app/composite/gimp-composite-generic.[ch]: function prototype
cleanup.

* app/composite/make-gimp-composite-dispatch.py: generates code to
test compositing functions.

* app/composite/gimp-composite-regression.[ch]: support for
automatically testing compositing functions.
This commit is contained in:
Helvetix Victorinox 2003-07-24 08:00:12 +00:00
parent e86f52aab6
commit d3fc41f0c2
18 changed files with 566 additions and 172 deletions

View File

@ -1,3 +1,28 @@
2003-07-24 Helvetix Victorinox <helvetix@gimp.org>
* app/composite/gimp-composite-dispatch.[ch]: regenerated new code
taking advantage of simplified function prototypes.
* app/composite/gimp-composite-test.c: New regression testing
driver. This file is automatically generated, but it's included
in the cvs tree for expediency.
* app/composite/ns.py: hopeful checks for which OS is currently
running as a hint to what nm(1) is available.
* app/composite/gimp-composite-mmx.[ch]
* app/composite/gimp-composite-sse.[ch]
* app/composite/gimp-composite-generic.[ch]: function prototype
cleanup.
2003-07-23 Helvetix Victorinox <helvetix@gimp.org>
* app/composite/make-gimp-composite-dispatch.py: generates code to
test compositing functions.
* app/composite/gimp-composite-regression.[ch]: support for
automatically testing compositing functions.
2003-07-23 Michael Natterer <mitch@gimp.org>
* libgimp/gimpmenu.h: changed the return value of

View File

@ -46,13 +46,13 @@ EXTRA_DIST = \
make-gimp-composite-dispatch.py \
ns.py
EXTRA_PROGRAMS = test-composite
EXTRA_PROGRAMS = test-composite gimp-composite-test
#
# unit tests and meta tools for GimpComposite
#
TESTS = test-composite
TESTS = test-composite gimp-composite-test
test_composite_DEPENDENCIES = $(gimpcomposite_dependencies) gimp-composite-regression.o
@ -63,4 +63,13 @@ test_composite_LDADD = \
$(GLIB_LIBS)
gimp_composite_test_DEPENDENCIES = $(gimpcomposite_dependencies) gimp-composite-regression.o
gimp_composite_test_LDADD = \
libappcomposite.a \
gimp-composite-regression.o \
$(top_builddir)/libgimpcolor/libgimpcolor-$(LT_RELEASE).la \
$(GLIB_LIBS)
CLEANFILES = $(EXTRA_PROGRAMS)

View File

@ -5,40 +5,40 @@
#include "base/base-types.h"
#include "gimp-composite.h"
#include "gimp-composite-dispatch.h"
extern GimpCompositeFunction gimp_composite_unsupported();
extern void gimp_composite_unsupported(GimpCompositeContext *);
GimpCompositeFunction gimp_composite_addition_any_any_any_generic();
GimpCompositeFunction gimp_composite_anti_erase_any_any_any_generic();
GimpCompositeFunction gimp_composite_blend_any_any_any_generic();
GimpCompositeFunction gimp_composite_burn_any_any_any_generic();
GimpCompositeFunction gimp_composite_color_erase_any_any_any_generic();
GimpCompositeFunction gimp_composite_color_only_any_any_any_generic();
GimpCompositeFunction gimp_composite_convert_any_any_any_generic();
GimpCompositeFunction gimp_composite_darken_any_any_any_generic();
GimpCompositeFunction gimp_composite_difference_any_any_any_generic();
GimpCompositeFunction gimp_composite_dissolve_any_any_any_generic();
GimpCompositeFunction gimp_composite_divide_any_any_any_generic();
GimpCompositeFunction gimp_composite_dodge_any_any_any_generic();
GimpCompositeFunction gimp_composite_erase_rgba8_any_any_generic();
GimpCompositeFunction gimp_composite_grain_extract_any_any_any_generic();
GimpCompositeFunction gimp_composite_grain_merge_any_any_any_generic();
GimpCompositeFunction gimp_composite_hardlight_any_any_any_generic();
GimpCompositeFunction gimp_composite_hue_any_any_any_generic();
GimpCompositeFunction gimp_composite_lighten_any_any_any_generic();
GimpCompositeFunction gimp_composite_multiply_any_any_any_generic();
GimpCompositeFunction gimp_composite_normal_any_any_any_generic();
GimpCompositeFunction gimp_composite_normal_rgba8_any_any_generic();
GimpCompositeFunction gimp_composite_overlay_any_any_any_generic();
GimpCompositeFunction gimp_composite_replace_any_any_any_generic();
GimpCompositeFunction gimp_composite_saturation_any_any_any_generic();
GimpCompositeFunction gimp_composite_scale_any_any_any_generic();
GimpCompositeFunction gimp_composite_screen_any_any_any_generic();
GimpCompositeFunction gimp_composite_softlight_any_any_any_generic();
GimpCompositeFunction gimp_composite_subtract_any_any_any_generic();
GimpCompositeFunction gimp_composite_swap_any_any_any_generic();
GimpCompositeFunction gimp_composite_value_any_any_any_generic();
void gimp_composite_addition_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_anti_erase_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_blend_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_burn_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_color_erase_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_color_only_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_convert_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_darken_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_difference_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_dissolve_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_divide_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_dodge_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_erase_rgba8_any_any_generic(GimpCompositeContext *);
void gimp_composite_grain_extract_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_grain_merge_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_hardlight_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_hue_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_lighten_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_multiply_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_normal_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_normal_rgba8_any_any_generic(GimpCompositeContext *);
void gimp_composite_overlay_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_replace_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_saturation_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_scale_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_screen_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_softlight_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_subtract_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_swap_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_value_any_any_any_generic(GimpCompositeContext *);
GimpCompositeFunction (*gimp_composite_generic[GIMP_COMPOSITE_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N])() = {
void (*gimp_composite_generic[GIMP_COMPOSITE_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N])(GimpCompositeContext *) = {
{ /* GIMP_COMPOSITE_NORMAL */
{ /* A = v8 */
/* v8 */ { gimp_composite_normal_any_any_any_generic, gimp_composite_normal_any_any_any_generic, gimp_composite_normal_any_any_any_generic, gimp_composite_normal_any_any_any_generic, },
@ -845,40 +845,66 @@ GimpCompositeFunction (*gimp_composite_generic[GIMP_COMPOSITE_N][GIMP_PIXELFORMA
/* rgba8 */ { gimp_composite_convert_any_any_any_generic, gimp_composite_convert_any_any_any_generic, gimp_composite_convert_any_any_any_generic, gimp_composite_convert_any_any_any_generic, },
},
},
{ /* GIMP_COMPOSITE_XOR */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
};
GimpCompositeFunction gimp_composite_addition_any_any_any_generic();
GimpCompositeFunction gimp_composite_anti_erase_any_any_any_generic();
GimpCompositeFunction gimp_composite_blend_any_any_any_generic();
GimpCompositeFunction gimp_composite_burn_any_any_any_generic();
GimpCompositeFunction gimp_composite_color_erase_any_any_any_generic();
GimpCompositeFunction gimp_composite_color_only_any_any_any_generic();
GimpCompositeFunction gimp_composite_convert_any_any_any_generic();
GimpCompositeFunction gimp_composite_darken_any_any_any_generic();
GimpCompositeFunction gimp_composite_difference_any_any_any_generic();
GimpCompositeFunction gimp_composite_dissolve_any_any_any_generic();
GimpCompositeFunction gimp_composite_divide_any_any_any_generic();
GimpCompositeFunction gimp_composite_dodge_any_any_any_generic();
GimpCompositeFunction gimp_composite_erase_rgba8_any_any_generic();
GimpCompositeFunction gimp_composite_grain_extract_any_any_any_generic();
GimpCompositeFunction gimp_composite_grain_merge_any_any_any_generic();
GimpCompositeFunction gimp_composite_hardlight_any_any_any_generic();
GimpCompositeFunction gimp_composite_hue_any_any_any_generic();
GimpCompositeFunction gimp_composite_lighten_any_any_any_generic();
GimpCompositeFunction gimp_composite_multiply_any_any_any_generic();
GimpCompositeFunction gimp_composite_normal_any_any_any_generic();
GimpCompositeFunction gimp_composite_normal_rgba8_any_any_generic();
GimpCompositeFunction gimp_composite_overlay_any_any_any_generic();
GimpCompositeFunction gimp_composite_replace_any_any_any_generic();
GimpCompositeFunction gimp_composite_saturation_any_any_any_generic();
GimpCompositeFunction gimp_composite_scale_any_any_any_generic();
GimpCompositeFunction gimp_composite_screen_any_any_any_generic();
GimpCompositeFunction gimp_composite_softlight_any_any_any_generic();
GimpCompositeFunction gimp_composite_subtract_any_any_any_generic();
GimpCompositeFunction gimp_composite_swap_any_any_any_generic();
GimpCompositeFunction gimp_composite_value_any_any_any_generic();
void gimp_composite_addition_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_anti_erase_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_blend_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_burn_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_color_erase_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_color_only_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_convert_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_darken_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_difference_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_dissolve_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_divide_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_dodge_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_erase_rgba8_any_any_generic(GimpCompositeContext *);
void gimp_composite_grain_extract_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_grain_merge_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_hardlight_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_hue_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_lighten_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_multiply_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_normal_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_normal_rgba8_any_any_generic(GimpCompositeContext *);
void gimp_composite_overlay_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_replace_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_saturation_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_scale_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_screen_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_softlight_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_subtract_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_swap_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_value_any_any_any_generic(GimpCompositeContext *);
GimpCompositeFunction (*gimp_composite_function[GIMP_COMPOSITE_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N])() = {
void (*gimp_composite_function[GIMP_COMPOSITE_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N])(GimpCompositeContext *) = {
{ /* GIMP_COMPOSITE_NORMAL */
{ /* A = v8 */
/* v8 */ { gimp_composite_normal_any_any_any_generic, gimp_composite_normal_any_any_any_generic, gimp_composite_normal_any_any_any_generic, gimp_composite_normal_any_any_any_generic, },
@ -1685,6 +1711,32 @@ GimpCompositeFunction (*gimp_composite_function[GIMP_COMPOSITE_N][GIMP_PIXELFORM
/* rgba8 */ { gimp_composite_convert_any_any_any_generic, gimp_composite_convert_any_any_any_generic, gimp_composite_convert_any_any_any_generic, gimp_composite_convert_any_any_any_generic, },
},
},
{ /* GIMP_COMPOSITE_XOR */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
};
@ -2495,6 +2547,32 @@ char *gimp_composite_function_name[GIMP_COMPOSITE_N][GIMP_PIXELFORMAT_N][GIMP_PI
/* rgba8 */ { "gimp_composite_convert_any_any_any_generic", "gimp_composite_convert_any_any_any_generic", "gimp_composite_convert_any_any_any_generic", "gimp_composite_convert_any_any_any_generic", },
},
},
{ /* GIMP_COMPOSITE_XOR */
{ /* A = v8 */
/* v8 */ { "", "", "", "", },
/* va8 */ { "", "", "", "", },
/* rgb8 */ { "", "", "", "", },
/* rgba8 */ { "", "", "", "", },
},
{ /* A = va8 */
/* v8 */ { "", "", "", "", },
/* va8 */ { "", "", "", "", },
/* rgb8 */ { "", "", "", "", },
/* rgba8 */ { "", "", "", "", },
},
{ /* A = rgb8 */
/* v8 */ { "", "", "", "", },
/* va8 */ { "", "", "", "", },
/* rgb8 */ { "", "", "", "", },
/* rgba8 */ { "", "", "", "", },
},
{ /* A = rgba8 */
/* v8 */ { "", "", "", "", },
/* va8 */ { "", "", "", "", },
/* rgb8 */ { "", "", "", "", },
/* rgba8 */ { "", "", "", "", },
},
},
};
extern void gimp_composite_generic_init (void);

View File

@ -1,3 +1,3 @@
/* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT */
typedef GimpCompositeFunction (*GimpCompositeFunctionTable[GIMP_COMPOSITE_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N]);
typedef void (*GimpCompositeFunctionTable[GIMP_COMPOSITE_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N]);

View File

@ -1137,7 +1137,7 @@ gimp_composite_scale_any_any_any_generic(GimpCompositeContext * ctx)
}
void
gimp_composite_generic_init()
gimp_composite_generic_init(void)
{
guint i;
GRand *gr;

View File

@ -1,32 +1,33 @@
GimpCompositeFunction gimp_composite_addition_any_any_any_generic();
GimpCompositeFunction gimp_composite_anti_erase_any_any_any_generic();
GimpCompositeFunction gimp_composite_blend_any_any_any_generic();
GimpCompositeFunction gimp_composite_burn_any_any_any_generic();
GimpCompositeFunction gimp_composite_color_any_any_any_generic();
GimpCompositeFunction gimp_composite_color_erase_any_any_any_generic();
GimpCompositeFunction gimp_composite_color_only_any_any_any_generic();
GimpCompositeFunction gimp_composite_convert_any_any_any_generic();
GimpCompositeFunction gimp_composite_darken_any_any_any_generic();
GimpCompositeFunction gimp_composite_difference_any_any_any_generic();
GimpCompositeFunction gimp_composite_dissolve_any_any_any_generic();
GimpCompositeFunction gimp_composite_divide_any_any_any_generic();
GimpCompositeFunction gimp_composite_dodge_any_any_any_generic();
GimpCompositeFunction gimp_composite_erase_rgba8_any_any_generic();
GimpCompositeFunction gimp_composite_generic_init();
GimpCompositeFunction gimp_composite_grain_extract_any_any_any_generic();
GimpCompositeFunction gimp_composite_grain_merge_any_any_any_generic();
GimpCompositeFunction gimp_composite_hardlight_any_any_any_generic();
GimpCompositeFunction gimp_composite_hue_any_any_any_generic();
GimpCompositeFunction gimp_composite_lighten_any_any_any_generic();
GimpCompositeFunction gimp_composite_multiply_any_any_any_generic();
GimpCompositeFunction gimp_composite_normal_any_any_any_generic();
GimpCompositeFunction gimp_composite_normal_rgba8_any_any_generic();
GimpCompositeFunction gimp_composite_overlay_any_any_any_generic();
GimpCompositeFunction gimp_composite_replace_any_any_any_generic();
GimpCompositeFunction gimp_composite_saturation_any_any_any_generic();
GimpCompositeFunction gimp_composite_scale_any_any_any_generic();
GimpCompositeFunction gimp_composite_screen_any_any_any_generic();
GimpCompositeFunction gimp_composite_softlight_any_any_any_generic();
GimpCompositeFunction gimp_composite_subtract_any_any_any_generic();
GimpCompositeFunction gimp_composite_swap_any_any_any_generic();
GimpCompositeFunction gimp_composite_value_any_any_any_generic();
void gimp_composite_generic_init(void);
void gimp_composite_addition_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_anti_erase_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_blend_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_burn_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_color_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_color_erase_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_color_only_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_convert_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_darken_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_difference_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_dissolve_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_divide_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_dodge_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_erase_rgba8_any_any_generic(GimpCompositeContext *);
void gimp_composite_grain_extract_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_grain_merge_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_hardlight_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_hue_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_lighten_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_multiply_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_normal_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_normal_rgba8_any_any_generic(GimpCompositeContext *);
void gimp_composite_overlay_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_replace_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_saturation_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_scale_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_screen_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_softlight_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_subtract_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_swap_any_any_any_generic(GimpCompositeContext *);
void gimp_composite_value_any_any_any_generic(GimpCompositeContext *);

View File

@ -129,7 +129,7 @@
void
debug_display_mmx()
debug_display_mmx(void)
{
#define mask32(x) ((x)& (unsigned long long) 0xFFFFFFFF)
#define print64(reg) { unsigned long long reg; asm("movq %%" #reg ",%0" : "=m" (reg)); printf(#reg"=%08llx %08llx", mask32(reg>>32), mask32(reg)); }
@ -971,7 +971,7 @@ gimp_composite_multiply_rgba8_rgba8_rgba8_mmx(GimpCompositeContext *_op)
unsigned long rgba8_lower_ff[2] = { 0x00FF00FF, 0x00FF00FF };
void
op_overlay()
op_overlay(void)
{
asm("movq %mm2, %mm1");
asm("punpcklbw %mm6, %mm1");
@ -2425,7 +2425,7 @@ xxxgimp_composite_valueonly_va8_va8_va8_mmx(GimpCompositeContext *_op)
#endif /* USE_MMX */
void
gimp_composite_mmx_init()
gimp_composite_mmx_init(void)
{
}

View File

@ -1,5 +1,7 @@
#ifndef gimp_composite_context_h
#define gimp_composite_context_h
extern void gimp_composite_mmx_init(void);
/*
*
*/

View File

@ -33,14 +33,106 @@ gimp_composite_regression_print_va8(gimp_va8_t *va8)
int
gimp_composite_regression_compare_contexts(char *operation, GimpCompositeContext *ctx1, GimpCompositeContext *ctx2)
{
if (memcmp(ctx1->D, ctx2->D, ctx1->n_pixels * gimp_composite_pixel_bpp[ctx1->pixelformat_D])) {
printf("%s: failed to agree\n", operation);
return (1);
switch (ctx1->pixelformat_D) {
case GIMP_PIXELFORMAT_ANY:
case GIMP_PIXELFORMAT_N:
default:
printf("Bad pixelformat! %d\n", ctx1->pixelformat_A);
exit(1);
break;
case GIMP_PIXELFORMAT_V8:
if (memcmp(ctx1->D, ctx2->D, ctx1->n_pixels * gimp_composite_pixel_bpp[ctx1->pixelformat_D])) {
printf("%s: failed to agree\n", operation);
return (1);
}
break;
case GIMP_PIXELFORMAT_VA8:
if (memcmp(ctx1->D, ctx2->D, ctx1->n_pixels * gimp_composite_pixel_bpp[ctx1->pixelformat_D])) {
printf("%s: failed to agree\n", operation);
return (1);
}
break;
case GIMP_PIXELFORMAT_RGB8:
if (memcmp(ctx1->D, ctx2->D, ctx1->n_pixels * gimp_composite_pixel_bpp[ctx1->pixelformat_D])) {
printf("%s: failed to agree\n", operation);
return (1);
}
break;
case GIMP_PIXELFORMAT_RGBA8:
gimp_composite_regression_comp_rgba8(operation, (gimp_rgba8_t *) ctx1->A, (gimp_rgba8_t *) ctx1->B, (gimp_rgba8_t *) ctx1->D, (gimp_rgba8_t *) ctx2->D, ctx1->n_pixels);
break;
#if GIMP_COMPOSITE_16BIT
case GIMP_PIXELFORMAT_V16:
if (memcmp(ctx1->D, ctx2->D, ctx1->n_pixels * gimp_composite_pixel_bpp[ctx1->pixelformat_D])) {
printf("%s: failed to agree\n", operation);
return (1);
}
break;
case GIMP_PIXELFORMAT_VA16:
if (memcmp(ctx1->D, ctx2->D, ctx1->n_pixels * gimp_composite_pixel_bpp[ctx1->pixelformat_D])) {
printf("%s: failed to agree\n", operation);
return (1);
}
break;
case GIMP_PIXELFORMAT_RGB16:
if (memcmp(ctx1->D, ctx2->D, ctx1->n_pixels * gimp_composite_pixel_bpp[ctx1->pixelformat_D])) {
printf("%s: failed to agree\n", operation);
return (1);
}
break;
case GIMP_PIXELFORMAT_RGBA16:
if (memcmp(ctx1->D, ctx2->D, ctx1->n_pixels * gimp_composite_pixel_bpp[ctx1->pixelformat_D])) {
printf("%s: failed to agree\n", operation);
return (1);
}
break;
#endif
#if GIMP_COMPOSITE_32BIT
case GIMP_PIXELFORMAT_V32:
if (memcmp(ctx1->D, ctx2->D, ctx1->n_pixels * gimp_composite_pixel_bpp[ctx1->pixelformat_D])) {
printf("%s: failed to agree\n", operation);
return (1);
}
break;
case GIMP_PIXELFORMAT_VA32:
if (memcmp(ctx1->D, ctx2->D, ctx1->n_pixels * gimp_composite_pixel_bpp[ctx1->pixelformat_D])) {
printf("%s: failed to agree\n", operation);
return (1);
}
break;
case GIMP_PIXELFORMAT_RGB32:
if (memcmp(ctx1->D, ctx2->D, ctx1->n_pixels * gimp_composite_pixel_bpp[ctx1->pixelformat_D])) {
printf("%s: failed to agree\n", operation);
return (1);
}
break;
case GIMP_PIXELFORMAT_RGBA32:
if (memcmp(ctx1->D, ctx2->D, ctx1->n_pixels * gimp_composite_pixel_bpp[ctx1->pixelformat_D])) {
printf("%s: failed to agree\n", operation);
return (1);
}
break;
#endif
}
return (0);
}
int
gimp_composite_regression_comp_rgba8(char *str, gimp_rgba8_t *rgba8A, gimp_rgba8_t *rgba8B, gimp_rgba8_t *expected, gimp_rgba8_t *got, u_long length)
{
@ -134,7 +226,7 @@ gimp_composite_regression_timer_report(char *name, double t1, double t2)
}
double
gimp_composite_regression_time_function(int iterations, GimpCompositeFunction (*func)(), GimpCompositeContext *ctx)
gimp_composite_regression_time_function(int iterations, void (*func)(), GimpCompositeContext *ctx)
{
struct timeval t0;
struct timeval t1;

View File

@ -83,7 +83,7 @@ typedef struct
} gimp_rgba32_t;
#endif
extern double gimp_composite_regression_time_function(int, GimpCompositeFunction (*)(), GimpCompositeContext *);
extern double gimp_composite_regression_time_function(int, void (*)(), GimpCompositeContext *);
extern int gimp_composite_regression_comp_rgba8(char *, gimp_rgba8_t *, gimp_rgba8_t *, gimp_rgba8_t *, gimp_rgba8_t *, u_long);
extern int gimp_composite_regression_comp_va8(char *, gimp_va8_t *, gimp_va8_t *, gimp_va8_t *, gimp_va8_t *, u_long);
extern int gimp_composite_regression_compare_contexts(char *, GimpCompositeContext *, GimpCompositeContext *);

View File

@ -961,7 +961,7 @@ gimp_composite_multiply_rgba8_rgba8_rgba8_sse(GimpCompositeContext *_op)
unsigned long rgba8_lower_ff[2] = { 0x00FF00FF, 0x00FF00FF };
void
op_overlay()
op_overlay(void)
{
asm("movq %mm2, %mm1");
asm("punpcklbw %mm6, %mm1");
@ -2418,7 +2418,7 @@ xxxgimp_composite_valueonly_va8_va8_va8_sse(GimpCompositeContext *_op)
#endif /* USE_SSE */
void
gimp_composite_sse_init()
gimp_composite_sse_init(void)
{
}

View File

@ -1,5 +1,6 @@
#ifndef gimp_composite_context_h
#define gimp_composite_context_h
extern void gimp_composite_sse_init(void);
/*
*
*/

View File

@ -0,0 +1,88 @@
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <glib-object.h>
#include "base/base-types.h"
#include "gimp-composite.h"
#include "gimp-composite-dispatch.h"
#include "gimp-composite-regression.h"
#include "gimp-composite-util.h"
#include "gimp-composite-generic.h"
int
gimp_composite_regression(int iterations, int n_pixels)
{
GimpCompositeContext generic_ctx;
GimpCompositeContext special_ctx;
double ft0;
double ft1;
gimp_rgba8_t *rgba8D1;
gimp_rgba8_t *rgba8D2;
gimp_rgba8_t *rgba8A;
gimp_rgba8_t *rgba8B;
gimp_rgba8_t *rgba8M;
gimp_va8_t *va8A;
gimp_va8_t *va8B;
gimp_va8_t *va8M;
gimp_va8_t *va8D1;
gimp_va8_t *va8D2;
int i;
rgba8A = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);
rgba8B = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);
rgba8M = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);
rgba8D1 = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);
rgba8D2 = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);
va8A = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);
va8B = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);
va8M = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);
va8D1 = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);
va8D2 = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);
for (i = 0; i < n_pixels; i++) {
rgba8A[i].r = 255-i;
rgba8A[i].g = 255-i;
rgba8A[i].b = 255-i;
rgba8A[i].a = 255-i;
rgba8B[i].r = i;
rgba8B[i].g = i;
rgba8B[i].b = i;
rgba8B[i].a = i;
rgba8M[i].r = i;
rgba8M[i].g = i;
rgba8M[i].b = i;
rgba8M[i].a = i;
va8A[i].v = i;
va8A[i].a = 255-i;
va8B[i].v = i;
va8B[i].a = i;
va8M[i].v = i;
va8M[i].a = i;
}
return (0);
}
int
main(int argc, char *argv[])
{
int iterations;
int n_pixels;
srand(314159);
iterations = 1;
n_pixels = 256*256;
return (gimp_composite_regression(iterations, n_pixels));
}

View File

@ -182,7 +182,7 @@ extern void (*gimp_composite_function[GIMP_COMPOSITE_N][GIMP_PIXELFORMAT_N][GIMP
void
gimp_composite_dispatch(GimpCompositeContext *ctx)
{
void (*function)();
void (*function)(GimpCompositeContext *);
function = gimp_composite_function[ctx->op][ctx->pixelformat_A][ctx->pixelformat_B][ctx->pixelformat_D];

View File

@ -98,6 +98,7 @@ typedef enum
GIMP_COMPOSITE_SWAP,
GIMP_COMPOSITE_SCALE,
GIMP_COMPOSITE_CONVERT,
GIMP_COMPOSITE_XOR,
GIMP_COMPOSITE_N
} GimpCompositeOperation;
@ -136,7 +137,6 @@ typedef struct
GimpCompositeOperation op;
} GimpCompositeContext;
typedef void (*GimpCompositeFunction)(GimpCompositeContext *);
struct GimpCompositeOptions {
gboolean initialised;

View File

@ -79,6 +79,7 @@ composite_modes=[
"GIMP_COMPOSITE_SWAP",
"GIMP_COMPOSITE_SCALE",
"GIMP_COMPOSITE_CONVERT",
"GIMP_COMPOSITE_XOR",
]
pixel_format=[
@ -98,10 +99,15 @@ pixel_format=[
]
def mode_name(mode):
s = string.replace(mode.lower(), "gimp_composite_", "")
return (s)
def pixel_depth_name(pixel_format):
s = string.replace(pixel_format.lower(), "gimp_pixelformat_", "")
return (s)
pp = pprint.PrettyPrinter(indent=4)
@ -122,17 +128,17 @@ def print_function_table(fpout, filename, function_table):
for key in function_table_keys:
if not function_table_declarations.has_key(function_table[key][0]):
print >>fpout, 'GimpCompositeFunction %s();' % (function_table[key][0])
print >>fpout, 'void %s(GimpCompositeContext *);' % (function_table[key][0])
function_table_declarations[function_table[key][0]] = function_table[key][0]
pass
pass
print >>fpout, ''
print >>fpout, 'GimpCompositeFunction (*%s[%s][%s][%s][%s])() = {' % (functionnameify(filename),
"GIMP_COMPOSITE_N",
"GIMP_PIXELFORMAT_N",
"GIMP_PIXELFORMAT_N",
"GIMP_PIXELFORMAT_N")
print >>fpout, 'void (*%s[%s][%s][%s][%s])(GimpCompositeContext *) = {' % (functionnameify(filename),
"GIMP_COMPOSITE_N",
"GIMP_PIXELFORMAT_N",
"GIMP_PIXELFORMAT_N",
"GIMP_PIXELFORMAT_N")
for mode in composite_modes:
print >>fpout, ' { /* %s */' % (mode)
for A in filter(lambda pf: pf != "GIMP_PIXELFORMAT_ANY", pixel_format):
@ -231,7 +237,7 @@ def merge_function_tables(tables):
for D in filter(lambda pf: pf != "GIMP_PIXELFORMAT_ANY", pixel_format):
key = "%s_%s_%s_%s" % (string.lower(mode), pixel_depth_name(A), pixel_depth_name(B), pixel_depth_name(D))
if t[1].has_key(key):
print >>sys.stderr, "%s = %s::%s" % (key, t[0], t[1][key])
#print >>sys.stderr, "%s = %s::%s" % (key, t[0], t[1][key])
main_table[key] = t[1][key]
pass
pass
@ -248,29 +254,115 @@ def print_test_code(tables):
def gimp_composite_regression(fpout, function_tables):
print >>fpout, 'void'
print >>fpout, 'gimp_composite_regression()'
# XXX move all this out to C code, instead of here.
print >>fpout, '#include "config.h"'
print >>fpout, ''
print >>fpout, '#include <stdio.h>'
print >>fpout, '#include <stdlib.h>'
print >>fpout, '#include <string.h>'
print >>fpout, ''
print >>fpout, '#include <sys/time.h>'
print >>fpout, ''
print >>fpout, '#include <glib-object.h>'
print >>fpout, ''
print >>fpout, '#include "base/base-types.h"'
print >>fpout, ''
print >>fpout, '#include "gimp-composite.h"'
print >>fpout, '#include "gimp-composite-dispatch.h"'
print >>fpout, '#include "gimp-composite-regression.h"'
print >>fpout, '#include "gimp-composite-util.h"'
print >>fpout, '#include "gimp-composite-generic.h"'
print >>fpout, ''
print >>fpout, 'int'
print >>fpout, 'gimp_composite_regression(int iterations, int n_pixels)'
print >>fpout, '{'
print >>fpout, ' GimpCompositeContext generic_ctx;'
print >>fpout, ' GimpCompositeContext special_ctx;'
print >>fpout, ' double ft0;'
print >>fpout, ' double ft1;'
print >>fpout, ' gimp_rgba8_t *rgba8D1;'
print >>fpout, ' gimp_rgba8_t *rgba8D2;'
print >>fpout, ' gimp_rgba8_t *rgba8A;'
print >>fpout, ' gimp_rgba8_t *rgba8B;'
print >>fpout, ' gimp_rgba8_t *rgba8M;'
print >>fpout, ' gimp_va8_t *va8A;'
print >>fpout, ' gimp_va8_t *va8B;'
print >>fpout, ' gimp_va8_t *va8M;'
print >>fpout, ' gimp_va8_t *va8D1;'
print >>fpout, ' gimp_va8_t *va8D2;'
print >>fpout, ' int i;'
print >>fpout, ''
print >>fpout, ' rgba8A = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);'
print >>fpout, ' rgba8B = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);'
print >>fpout, ' rgba8M = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);'
print >>fpout, ' rgba8D1 = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);'
print >>fpout, ' rgba8D2 = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);'
print >>fpout, ' va8A = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);'
print >>fpout, ' va8B = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);'
print >>fpout, ' va8M = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);'
print >>fpout, ' va8D1 = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);'
print >>fpout, ' va8D2 = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);'
print >>fpout, ''
print >>fpout, ' for (i = 0; i < n_pixels; i++) {'
print >>fpout, ' rgba8A[i].r = 255-i;'
print >>fpout, ' rgba8A[i].g = 255-i;'
print >>fpout, ' rgba8A[i].b = 255-i;'
print >>fpout, ' rgba8A[i].a = 255-i;'
print >>fpout, ''
print >>fpout, ' rgba8B[i].r = i;'
print >>fpout, ' rgba8B[i].g = i;'
print >>fpout, ' rgba8B[i].b = i;'
print >>fpout, ' rgba8B[i].a = i;'
print >>fpout, ''
print >>fpout, ' rgba8M[i].r = i;'
print >>fpout, ' rgba8M[i].g = i;'
print >>fpout, ' rgba8M[i].b = i;'
print >>fpout, ' rgba8M[i].a = i;'
print >>fpout, ''
print >>fpout, ' va8A[i].v = i;'
print >>fpout, ' va8A[i].a = 255-i;'
print >>fpout, ' va8B[i].v = i;'
print >>fpout, ' va8B[i].a = i;'
print >>fpout, ' va8M[i].v = i;'
print >>fpout, ' va8M[i].a = i;'
print >>fpout, ' }'
print >>fpout, ''
generic_table = function_tables[0][1]
pp.pprint(function_tables[1:])
for mode in composite_modes:
for A in filter(lambda pf: pf != "GIMP_PIXELFORMAT_ANY", pixel_format):
for B in filter(lambda pf: pf != "GIMP_PIXELFORMAT_ANY", pixel_format):
for D in filter(lambda pf: pf != "GIMP_PIXELFORMAT_ANY", pixel_format):
key = "%s_%s_%s_%s" % (string.lower(mode), pixel_depth_name(A), pixel_depth_name(B), pixel_depth_name(D))
for f in function_tables[1:]:
key = "%s_%s_%s_%s" % (string.lower(mode), pixel_depth_name(A), pixel_depth_name(B), pixel_depth_name(D))
if f[1].has_key(key):
print f[0], key
print >>fpout, ''
print >>fpout, ' special_ctx.op = %s;' % (mode)
print >>fpout, ' generic_ctx.op = %s;' % (mode)
print >>fpout, ' %s(&special_ctx);' % (f[1][key][0])
print >>fpout, ' %s(&generic_ctx);' % (generic_table[key][0])
print >>fpout, ' if (gimp_composite_regression_compare(&generic_ctx, &special_ctx)) {'
print >>fpout, ' printf("%s disagrees with %s\\n");' % (f[1][key][0], generic_table[key][0])
print >>fpout, ' }'
print >>fpout, ' /* %s */' % (key)
print >>fpout, ' memset((void *) &special_ctx, 0, sizeof(special_ctx));'
print >>fpout, ' memset((void *) &generic_ctx, 0, sizeof(special_ctx));'
print >>fpout, ' special_ctx.op = generic_ctx.op = %s;' % (mode)
print >>fpout, ' special_ctx.n_pixels = generic_ctx.n_pixels = n_pixels;'
print >>fpout, ' special_ctx.scale.scale = generic_ctx.scale.scale = 2;'
print >>fpout, ' special_ctx.pixelformat_A = generic_ctx.pixelformat_A = %s;' % (A)
print >>fpout, ' special_ctx.pixelformat_B = generic_ctx.pixelformat_B = %s;' % (B)
print >>fpout, ' special_ctx.pixelformat_D = generic_ctx.pixelformat_D = %s;' % (D)
print >>fpout, ' special_ctx.pixelformat_M = generic_ctx.pixelformat_M = %s;' % (D)
print >>fpout, ' special_ctx.A = (unsigned char *) %sA;' % (pixel_depth_name(A))
print >>fpout, ' special_ctx.B = (unsigned char *) %sB;' % (pixel_depth_name(B))
print >>fpout, ' special_ctx.M = (unsigned char *) %sB;' % (pixel_depth_name(D))
print >>fpout, ' special_ctx.D = (unsigned char *) %sD1;' % (pixel_depth_name(D))
print >>fpout, ' generic_ctx.A = (unsigned char *) %sA;' % (pixel_depth_name(A))
print >>fpout, ' generic_ctx.B = (unsigned char *) %sB;' % (pixel_depth_name(B))
print >>fpout, ' generic_ctx.M = (unsigned char *) %sB;' % (pixel_depth_name(D))
print >>fpout, ' generic_ctx.D = (unsigned char *) %sD2;' % (pixel_depth_name(D))
print >>fpout, ' ft0 = gimp_composite_regression_time_function(iterations, %s, &special_ctx);' % ("gimp_composite_dispatch")
print >>fpout, ' ft1 = gimp_composite_regression_time_function(iterations, %s, &generic_ctx);' % (generic_table[key][0])
print >>fpout, ' gimp_composite_regression_compare_contexts("%s", &generic_ctx, &special_ctx);' % (mode_name(mode))
print >>fpout, ' gimp_composite_regression_timer_report("%s", ft0, ft1);' % (mode_name(mode))
pass
pass
pass
@ -278,8 +370,26 @@ def gimp_composite_regression(fpout, function_tables):
pass
pass
print >>fpout, ' return (0);'
print >>fpout, '}'
print >>fpout, ''
print >>fpout, 'int'
print >>fpout, 'main(int argc, char *argv[])'
print >>fpout, '{'
print >>fpout, ' int iterations;'
print >>fpout, ' int n_pixels;'
print >>fpout, ''
print >>fpout, ' srand(314159);'
print >>fpout, ''
print >>fpout, ' iterations = 1;'
print >>fpout, ' n_pixels = 256*256;'
print >>fpout, ''
print >>fpout, ' return (gimp_composite_regression(iterations, n_pixels));'
print >>fpout, '}'
return
def gimp_composite_init(fpout, function_tables):
for o in function_tables:
@ -312,14 +422,13 @@ def gimp_composite_init(fpout, function_tables):
def gimp_composite_hfile(fpout):
print >>fpout, '/* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT */'
print >>fpout, ''
#print >>fpout, 'typedef void (*GimpCompositeFunction)(GimpCompositeContext *);'
print >>fpout, 'typedef GimpCompositeFunction (*GimpCompositeFunctionTable[%s][%s][%s][%s]);' % ("GIMP_COMPOSITE_N",
print >>fpout, 'typedef void (*GimpCompositeFunctionTable[%s][%s][%s][%s]);' % ("GIMP_COMPOSITE_N",
"GIMP_PIXELFORMAT_N",
"GIMP_PIXELFORMAT_N",
"GIMP_PIXELFORMAT_N")
return
def gimp_composite_cfile(fpout):
def gimp_composite_cfile(fpout, function_tables):
print >>fpout, '/* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT */'
print >>fpout, '#include "config.h"'
print >>fpout, '#include <glib-object.h>'
@ -327,10 +436,10 @@ def gimp_composite_cfile(fpout):
print >>fpout, '#include "base/base-types.h"'
print >>fpout, '#include "gimp-composite.h"'
print >>fpout, '#include "gimp-composite-dispatch.h"'
print >>fpout, 'extern GimpCompositeFunction %s();' % ("gimp_composite_unsupported")
print >>fpout, 'extern void %s(GimpCompositeContext *);' % ("gimp_composite_unsupported")
print >>fpout, ''
for f in d:
for f in function_tables:
print_function_table(fpout, f[0], f[1])
pass
@ -339,40 +448,18 @@ def gimp_composite_cfile(fpout):
print_function_table(fpout, "gimp_composite_function", main_table)
print_function_table_name(fpout, "gimp_composite_function", main_table)
gimp_composite_init(fpout, d)
gimp_composite_init(fpout, function_tables)
return
###########################################3
###########################################
d = list()
for f in sys.argv[1:]:
d.append((f, load_function_table(f)))
pass
gimp_composite_hfile(open("gimp-composite-dispatch.h", "w"))
gimp_composite_cfile(open("gimp-composite-dispatch.c", "w"))
# print '/* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT */'
# print '#include "config.h"'
# print '#include <glib-object.h>'
# print '#include <stdlib.h>'
# print '#include "base/base-types.h"'
# print '#include "gimp-composite.h"'
# print '#include "gimp-composite-dispatch.h"'
# print 'extern GimpCompositeFunction %s();' % ("gimp_composite_unsupported")
# print ''
# for f in d:
# print_function_table(f[0], f[1])
# pass
# main_table = merge_function_tables(d)
# print_function_table("gimp_composite_function", main_table)
# print_function_table_name("gimp_composite_function", main_table)
# gimp_composite_init(d)
#gimp_composite_regression(d)
gimp_composite_cfile(open("gimp-composite-dispatch.c", "w"), d)
gimp_composite_regression(open("gimp-composite-test.c", "w"), d)
sys.exit(0)

View File

@ -51,21 +51,32 @@ class nmx:
def update(self, objfile):
self.filename = objfile
(sysname, nodename, release, version, machine) = os.uname()
if sysname == "Linux":
fp = os.popen("nm -B " + objfile, "r")
symbols = map(lambda l: string.split(l[8:]), fp.readlines())
print symbols
elif sysname == "SunOS":
fp = os.popen("nm -p " + objfile, "r")
symbols = map(lambda l: string.split(l[12:]), fp.readlines())
pass
elif sysname == "IRIX":
fp = os.popen("nm -B " + objfile, "r")
symbols = map(lambda l: string.split(l[8:]), fp.readlines())
pass
object = objfile
fp = os.popen("nm -A " + objfile, "r")
for line in fp.readlines():
(object, type, symbol) = string.split(line)
object = object[:string.rfind(object, ':')]
for (type, symbol) in symbols:
if not self.objects.has_key(object):
self.objects.update({ object : dict({"exports" : dict(), "imports" : dict()})})
self.objects.update({ object : dict({ "exports" : dict(), "imports" : dict() }) })
pass
if type == "U":
self.objects[object]["imports"].update({symbol : dict()})
self.objects[object]["imports"].update({ symbol : dict() })
elif type in ["C", "D", "T"]:
self.objects[object]["exports"].update({symbol : dict()})
self.objects[object]["exports"].update({ symbol : dict() })
pass
pass

View File

@ -51,12 +51,12 @@ main (int argc, char *argv[])
rgba8A = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);
rgba8B = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);
va8A = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);
va8B = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);
va8A = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);
va8B = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);
d1 = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);
d2 = (gimp_rgba8_t *) calloc(sizeof(gimp_rgba8_t), n_pixels+1);
va8_d1 = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);
va8_d2 = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);
va8_d1 = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);
va8_d2 = (gimp_va8_t *) calloc(sizeof(gimp_va8_t), n_pixels+1);
srand(314159);