r300/compiler: Prepare for hookup to Gallium
authorNicolai Hähnle <nhaehnle@gmail.com>
Mon, 27 Jul 2009 17:34:08 +0000 (19:34 +0200)
committerNicolai Hähnle <nhaehnle@gmail.com>
Mon, 27 Jul 2009 20:51:39 +0000 (22:51 +0200)
src/mesa/drivers/dri/r300/compiler/radeon_code.h
src/mesa/drivers/dri/r300/compiler/radeon_compiler.h

index 9fd37dc8d24c250299ce2967a3e0a9af2387f238..3353617bef3a43a8a8a4d16d52755126a566ac68 100644 (file)
@@ -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 */
\ No newline at end of file
index b22da17583e6c4a6ab9b7d04fa95ee87894d1639..15f8b8fd92ce8012e6e8a7117384a06dd93f753a 100644 (file)
@@ -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);
 };