diff options
author | Søren Sandmann Pedersen <ssp@redhat.com> | 2010-04-14 11:00:19 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@redhat.com> | 2010-04-14 11:00:19 -0400 |
commit | d0f0407a3963615f13e65c7a348c0add820207d3 (patch) | |
tree | da980aa27d4e244df686eb3df2d350978db4b470 |
Initial check-in
-rw-r--r-- | psl.c | 107 | ||||
-rw-r--r-- | psl.h | 54 |
2 files changed, 161 insertions, 0 deletions
@@ -0,0 +1,107 @@ +#include <stdlib.h> +#include <stdarg.h> +#include "psl.h" + +typedef struct memory_t memory_t; + +struct memory_t +{ + +}; + +struct psl_statement_t +{ + memory_t *memory; +}; + +struct psl_program_t +{ + psl_statement_t *statement; +}; + +psl_program_t * +psl_program_create (psl_statement_t *statement) +{ +} + +psl_instruction_t * +psl_tex (psl_var_t *dest, + psl_var_t *img, + psl_var_t *u, + psl_var_t *v) +{ + +} + +psl_statement_t * +psl_asm (psl_instruction_t *instruction, + ...) +{ + va_list va; + + va_start (va, instruction); + + while (instruction) + { + + + instruction = va_arg (va, void *); + } + + va_end (va); +} + +void +psl_program_run (psl_program_t *program, + pixman_region32_t *clip, + pixman_image_t *destination, + pixman_image_t *source1, + ...) +{ + +} + +void +psl_program_destroy (psl_program_t *program) +{ + +} + +psl_var_t * +psl_imm_un8 (int value) +{ + +} + +psl_var_t * +psl_imm_sp (float f) +{ + +} + +psl_instruction_t * +psl_label (const char *name) +{ +} + +psl_var_t * +psl_var (const char *name) +{ + +} + +int +main () +{ + psl_program_t *program = psl_program_create ( + psl_asm ( + psl_tex ( + psl_var ("fish"), + psl_imm_un8 (0), + psl_imm_sp (0.7), + psl_imm_sp (0.3)), + psl_label ("restart:"), + NULL)); + + return 0; +} @@ -0,0 +1,54 @@ +#include <pixman.h> + +/* + * The basic idea: + * + * A /program/ is a list of instructions that + * + * - takes a number of *source* images (numbered from 0 to n) + * - takes one destination image + * - takes a clip region parameter + * + * When executed, for each pixel in the destination image, + * the instructions are interpreted and the result is written + * back. + * + * Do we talk about /pixels/ here? Yes, probably, though there + * is nothing stopping people from treating an image as if it were + * an a8. + * + */ + +typedef struct psl_program_t psl_program_t; +typedef struct psl_statement_t psl_statement_t; +typedef struct psl_var_t psl_var_t; +typedef struct psl_instruction_t psl_instruction_t; + +psl_program_t * psl_program_create (psl_statement_t *statement); +psl_var_t * psl_imm_un8 (int value); +psl_var_t * psl_imm_sp (float f); +psl_var_t * psl_var (const char *name); +psl_instruction_t *psl_tex (psl_var_t *dest, + psl_var_t *img, + psl_var_t *u, + psl_var_t *v); +psl_instruction_t *psl_add (psl_var_t *dest, + psl_var_t *src1, + psl_var_t *src2); +psl_instruction_t *psl_mad (psl_var_t *dest, + psl_var_t *src1, + psl_var_t *src2, + psl_var_t *src3); +psl_instruction_t *psl_cmp_lt (psl_var_t *dest, + psl_var_t *src1, + psl_var_t *src2); +psl_instruction_t *psl_label (const char *name); +psl_statement_t * psl_asm (psl_instruction_t *instruction, + ...); +void psl_program_run (psl_program_t *program, + pixman_region32_t *clip, + pixman_image_t *destination, + pixman_image_t *source1, + ...); +void psl_program_destroy (psl_program_t *program); + |