r300/compiler: Prepare for hookup to Gallium

This commit is contained in:
Nicolai Hähnle
2009-07-27 19:34:08 +02:00
parent e82a50a6a1
commit 6bc0e1054a
2 changed files with 31 additions and 25 deletions
@@ -23,6 +23,8 @@
#ifndef RADEON_CODE_H
#define RADEON_CODE_H
#include <stdint.h>
#define R300_PFS_MAX_ALU_INST 64
#define R300_PFS_MAX_TEX_INST 32
#define R300_PFS_MAX_TEX_INDIRECT 4
@@ -99,7 +101,7 @@ struct r300_fragment_program_external_state {
* 2 - GL_ALPHA
* depending on the depth texture mode.
*/
GLuint depth_texture_mode : 2;
unsigned depth_texture_mode : 2;
/**
* If the sampler is used as a shadow sampler,
@@ -108,7 +110,7 @@ struct r300_fragment_program_external_state {
*
* Otherwise, this field is 0.
*/
GLuint texture_compare_func : 3;
unsigned texture_compare_func : 3;
} unit[16];
};
@@ -128,16 +130,16 @@ struct r300_fragment_program_node {
struct r300_fragment_program_code {
struct {
int length; /**< total # of texture instructions used */
GLuint inst[R300_PFS_MAX_TEX_INST];
uint32_t inst[R300_PFS_MAX_TEX_INST];
} tex;
struct {
int length; /**< total # of ALU instructions used */
struct {
GLuint inst0;
GLuint inst1;
GLuint inst2;
GLuint inst3;
uint32_t inst0;
uint32_t inst1;
uint32_t inst2;
uint32_t inst3;
} inst[R300_PFS_MAX_ALU_INST];
} alu;
@@ -151,12 +153,12 @@ struct r300_fragment_program_code {
struct r500_fragment_program_code {
struct {
GLuint inst0;
GLuint inst1;
GLuint inst2;
GLuint inst3;
GLuint inst4;
GLuint inst5;
uint32_t inst0;
uint32_t inst1;
uint32_t inst2;
uint32_t inst3;
uint32_t inst4;
uint32_t inst5;
} inst[R500_PFS_MAX_INST];
int inst_offset;
@@ -171,7 +173,7 @@ struct rX00_fragment_program_code {
struct r500_fragment_program_code r500;
} code;
GLboolean writes_depth;
unsigned writes_depth:1;
struct rc_constant_list constants;
};
@@ -180,22 +182,25 @@ struct rX00_fragment_program_code {
#define VSF_MAX_FRAGMENT_LENGTH (255*4)
#define VSF_MAX_FRAGMENT_TEMPS (14)
#define VSF_MAX_INPUTS 32
#define VSF_MAX_OUTPUTS 32
struct r300_vertex_program_code {
int length;
union {
GLuint d[VSF_MAX_FRAGMENT_LENGTH];
uint32_t d[VSF_MAX_FRAGMENT_LENGTH];
float f[VSF_MAX_FRAGMENT_LENGTH];
} body;
int pos_end;
int num_temporaries; /* Number of temp vars used by program */
int inputs[VERT_ATTRIB_MAX];
int outputs[VERT_RESULT_MAX];
int inputs[VSF_MAX_INPUTS];
int outputs[VSF_MAX_OUTPUTS];
struct rc_constant_list constants;
GLbitfield InputsRead;
GLbitfield OutputsWritten;
uint32_t InputsRead;
uint32_t OutputsWritten;
};
#endif /* RADEON_CODE_H */
@@ -43,9 +43,9 @@ struct rc_program {
*/
struct rc_instruction Instructions;
GLbitfield InputsRead;
GLbitfield OutputsWritten;
GLbitfield ShadowSamplers; /**< Texture units used for shadow sampling. */
uint32_t InputsRead;
uint32_t OutputsWritten;
uint32_t ShadowSamplers; /**< Texture units used for shadow sampling. */
struct rc_constant_list Constants;
};
@@ -53,8 +53,8 @@ struct rc_program {
struct radeon_compiler {
struct memory_pool Pool;
struct rc_program Program;
GLboolean Debug;
GLboolean Error;
unsigned Debug:1;
unsigned Error:1;
char * ErrorMsg;
};
@@ -75,7 +75,7 @@ struct r300_fragment_program_compiler {
struct radeon_compiler Base;
struct rX00_fragment_program_code *code;
struct r300_fragment_program_external_state state;
GLboolean is_r500;
unsigned is_r500;
unsigned OutputDepth;
unsigned OutputColor;
@@ -94,6 +94,7 @@ struct r300_vertex_program_compiler {
struct r300_vertex_program_code *code;
GLbitfield RequiredOutputs;
void * UserData;
void (*SetHwInputOutput)(struct r300_vertex_program_compiler * c);
};