diff --git a/src/gallium/auxiliary/rbug/rbug_context.c b/src/gallium/auxiliary/rbug/rbug_context.c index 55e049f3137..1832425658f 100644 --- a/src/gallium/auxiliary/rbug/rbug_context.c +++ b/src/gallium/auxiliary/rbug/rbug_context.c @@ -233,6 +233,59 @@ int rbug_send_context_draw_unblock(struct rbug_connection *__con, return __ret; } +int rbug_send_context_draw_rule(struct rbug_connection *__con, + rbug_context_t context, + rbug_shader_t vertex, + rbug_shader_t fragment, + rbug_texture_t texture, + rbug_texture_t surface, + rbug_block_t block, + uint32_t *__serial) +{ + uint32_t __len = 0; + uint32_t __pos = 0; + uint8_t *__data = NULL; + int __ret = 0; + + LEN(8); /* header */ + LEN(8); /* context */ + LEN(8); /* vertex */ + LEN(8); /* fragment */ + LEN(8); /* texture */ + LEN(8); /* surface */ + LEN(4); /* block */ + + /* align */ + PAD(__len, 8); + + __data = (uint8_t*)MALLOC(__len); + if (!__data) + return -ENOMEM; + + WRITE(4, int32_t, ((int32_t)RBUG_OP_CONTEXT_DRAW_RULE)); + WRITE(4, uint32_t, ((uint32_t)(__len / 4))); + WRITE(8, rbug_context_t, context); /* context */ + WRITE(8, rbug_shader_t, vertex); /* vertex */ + WRITE(8, rbug_shader_t, fragment); /* fragment */ + WRITE(8, rbug_texture_t, texture); /* texture */ + WRITE(8, rbug_texture_t, surface); /* surface */ + WRITE(4, rbug_block_t, block); /* block */ + + /* final pad */ + PAD(__pos, 8); + + if (__pos != __len) { + __ret = -EINVAL; + } else { + rbug_connection_send_start(__con, RBUG_OP_CONTEXT_DRAW_RULE, __len); + rbug_connection_write(__con, __data, __len); + __ret = rbug_connection_send_finish(__con, __serial); + } + + FREE(__data); + return __ret; +} + int rbug_send_context_flush(struct rbug_connection *__con, rbug_context_t context, int32_t flags, @@ -274,100 +327,6 @@ int rbug_send_context_flush(struct rbug_connection *__con, return __ret; } -int rbug_send_context_rule_add(struct rbug_connection *__con, - rbug_context_t context, - rbug_shader_t vertex, - rbug_shader_t fragment, - rbug_texture_t texture, - rbug_texture_t surface, - rbug_block_t block, - uint32_t *__serial) -{ - uint32_t __len = 0; - uint32_t __pos = 0; - uint8_t *__data = NULL; - int __ret = 0; - - LEN(8); /* header */ - LEN(8); /* context */ - LEN(8); /* vertex */ - LEN(8); /* fragment */ - LEN(8); /* texture */ - LEN(8); /* surface */ - LEN(4); /* block */ - - /* align */ - PAD(__len, 8); - - __data = (uint8_t*)MALLOC(__len); - if (!__data) - return -ENOMEM; - - WRITE(4, int32_t, ((int32_t)RBUG_OP_CONTEXT_RULE_ADD)); - WRITE(4, uint32_t, ((uint32_t)(__len / 4))); - WRITE(8, rbug_context_t, context); /* context */ - WRITE(8, rbug_shader_t, vertex); /* vertex */ - WRITE(8, rbug_shader_t, fragment); /* fragment */ - WRITE(8, rbug_texture_t, texture); /* texture */ - WRITE(8, rbug_texture_t, surface); /* surface */ - WRITE(4, rbug_block_t, block); /* block */ - - /* final pad */ - PAD(__pos, 8); - - if (__pos != __len) { - __ret = -EINVAL; - } else { - rbug_connection_send_start(__con, RBUG_OP_CONTEXT_RULE_ADD, __len); - rbug_connection_write(__con, __data, __len); - __ret = rbug_connection_send_finish(__con, __serial); - } - - FREE(__data); - return __ret; -} - -int rbug_send_context_rule_delete(struct rbug_connection *__con, - rbug_context_t context, - rbug_block_rule_t rule, - uint32_t *__serial) -{ - uint32_t __len = 0; - uint32_t __pos = 0; - uint8_t *__data = NULL; - int __ret = 0; - - LEN(8); /* header */ - LEN(8); /* context */ - LEN(8); /* rule */ - - /* align */ - PAD(__len, 8); - - __data = (uint8_t*)MALLOC(__len); - if (!__data) - return -ENOMEM; - - WRITE(4, int32_t, ((int32_t)RBUG_OP_CONTEXT_RULE_DELETE)); - WRITE(4, uint32_t, ((uint32_t)(__len / 4))); - WRITE(8, rbug_context_t, context); /* context */ - WRITE(8, rbug_block_rule_t, rule); /* rule */ - - /* final pad */ - PAD(__pos, 8); - - if (__pos != __len) { - __ret = -EINVAL; - } else { - rbug_connection_send_start(__con, RBUG_OP_CONTEXT_RULE_DELETE, __len); - rbug_connection_write(__con, __data, __len); - __ret = rbug_connection_send_finish(__con, __serial); - } - - FREE(__data); - return __ret; -} - int rbug_send_context_list_reply(struct rbug_connection *__con, uint32_t serial, rbug_context_t *contexts, @@ -471,47 +430,6 @@ int rbug_send_context_info_reply(struct rbug_connection *__con, return __ret; } -int rbug_send_context_rule_add_reply(struct rbug_connection *__con, - uint32_t serial, - rbug_block_rule_t rule, - uint32_t *__serial) -{ - uint32_t __len = 0; - uint32_t __pos = 0; - uint8_t *__data = NULL; - int __ret = 0; - - LEN(8); /* header */ - LEN(4); /* serial */ - LEN(8); /* rule */ - - /* align */ - PAD(__len, 8); - - __data = (uint8_t*)MALLOC(__len); - if (!__data) - return -ENOMEM; - - WRITE(4, int32_t, ((int32_t)RBUG_OP_CONTEXT_RULE_ADD_REPLY)); - WRITE(4, uint32_t, ((uint32_t)(__len / 4))); - WRITE(4, uint32_t, serial); /* serial */ - WRITE(8, rbug_block_rule_t, rule); /* rule */ - - /* final pad */ - PAD(__pos, 8); - - if (__pos != __len) { - __ret = -EINVAL; - } else { - rbug_connection_send_start(__con, RBUG_OP_CONTEXT_RULE_ADD_REPLY, __len); - rbug_connection_write(__con, __data, __len); - __ret = rbug_connection_send_finish(__con, __serial); - } - - FREE(__data); - return __ret; -} - int rbug_send_context_draw_blocked(struct rbug_connection *__con, rbug_context_t context, rbug_block_t block, @@ -690,6 +608,38 @@ struct rbug_proto_context_draw_unblock * rbug_demarshal_context_draw_unblock(str return ret; } +struct rbug_proto_context_draw_rule * rbug_demarshal_context_draw_rule(struct rbug_proto_header *header) +{ + uint32_t len = 0; + uint32_t pos = 0; + uint8_t *data = NULL; + struct rbug_proto_context_draw_rule *ret; + + if (!header) + return NULL; + if (header->opcode != (int16_t)RBUG_OP_CONTEXT_DRAW_RULE) + return NULL; + + pos = 0; + len = header->length * 4; + data = (uint8_t*)&header[1]; + ret = MALLOC(sizeof(*ret)); + if (!ret) + return NULL; + + ret->header.__message = header; + ret->header.opcode = header->opcode; + + READ(8, rbug_context_t, context); /* context */ + READ(8, rbug_shader_t, vertex); /* vertex */ + READ(8, rbug_shader_t, fragment); /* fragment */ + READ(8, rbug_texture_t, texture); /* texture */ + READ(8, rbug_texture_t, surface); /* surface */ + READ(4, rbug_block_t, block); /* block */ + + return ret; +} + struct rbug_proto_context_flush * rbug_demarshal_context_flush(struct rbug_proto_header *header) { uint32_t len = 0; @@ -718,66 +668,6 @@ struct rbug_proto_context_flush * rbug_demarshal_context_flush(struct rbug_proto return ret; } -struct rbug_proto_context_rule_add * rbug_demarshal_context_rule_add(struct rbug_proto_header *header) -{ - uint32_t len = 0; - uint32_t pos = 0; - uint8_t *data = NULL; - struct rbug_proto_context_rule_add *ret; - - if (!header) - return NULL; - if (header->opcode != (int16_t)RBUG_OP_CONTEXT_RULE_ADD) - return NULL; - - pos = 0; - len = header->length * 4; - data = (uint8_t*)&header[1]; - ret = MALLOC(sizeof(*ret)); - if (!ret) - return NULL; - - ret->header.__message = header; - ret->header.opcode = header->opcode; - - READ(8, rbug_context_t, context); /* context */ - READ(8, rbug_shader_t, vertex); /* vertex */ - READ(8, rbug_shader_t, fragment); /* fragment */ - READ(8, rbug_texture_t, texture); /* texture */ - READ(8, rbug_texture_t, surface); /* surface */ - READ(4, rbug_block_t, block); /* block */ - - return ret; -} - -struct rbug_proto_context_rule_delete * rbug_demarshal_context_rule_delete(struct rbug_proto_header *header) -{ - uint32_t len = 0; - uint32_t pos = 0; - uint8_t *data = NULL; - struct rbug_proto_context_rule_delete *ret; - - if (!header) - return NULL; - if (header->opcode != (int16_t)RBUG_OP_CONTEXT_RULE_DELETE) - return NULL; - - pos = 0; - len = header->length * 4; - data = (uint8_t*)&header[1]; - ret = MALLOC(sizeof(*ret)); - if (!ret) - return NULL; - - ret->header.__message = header; - ret->header.opcode = header->opcode; - - READ(8, rbug_context_t, context); /* context */ - READ(8, rbug_block_rule_t, rule); /* rule */ - - return ret; -} - struct rbug_proto_context_list_reply * rbug_demarshal_context_list_reply(struct rbug_proto_header *header) { uint32_t len = 0; @@ -840,34 +730,6 @@ struct rbug_proto_context_info_reply * rbug_demarshal_context_info_reply(struct return ret; } -struct rbug_proto_context_rule_add_reply * rbug_demarshal_context_rule_add_reply(struct rbug_proto_header *header) -{ - uint32_t len = 0; - uint32_t pos = 0; - uint8_t *data = NULL; - struct rbug_proto_context_rule_add_reply *ret; - - if (!header) - return NULL; - if (header->opcode != (int16_t)RBUG_OP_CONTEXT_RULE_ADD_REPLY) - return NULL; - - pos = 0; - len = header->length * 4; - data = (uint8_t*)&header[1]; - ret = MALLOC(sizeof(*ret)); - if (!ret) - return NULL; - - ret->header.__message = header; - ret->header.opcode = header->opcode; - - READ(4, uint32_t, serial); /* serial */ - READ(8, rbug_block_rule_t, rule); /* rule */ - - return ret; -} - struct rbug_proto_context_draw_blocked * rbug_demarshal_context_draw_blocked(struct rbug_proto_header *header) { uint32_t len = 0; diff --git a/src/gallium/auxiliary/rbug/rbug_context.h b/src/gallium/auxiliary/rbug/rbug_context.h index 178a3bce245..da61c2365b0 100644 --- a/src/gallium/auxiliary/rbug/rbug_context.h +++ b/src/gallium/auxiliary/rbug/rbug_context.h @@ -41,12 +41,12 @@ #include "rbug/rbug_proto.h" #include "rbug/rbug_core.h" -typedef uint64_t rbug_block_rule_t; - typedef enum { RBUG_BLOCK_BEFORE = 1, RBUG_BLOCK_AFTER = 2, + RBUG_BLOCK_RULE = 4, + RBUG_BLOCK_MASK = 7, } rbug_block_t; struct rbug_proto_context_list @@ -81,14 +81,7 @@ struct rbug_proto_context_draw_unblock rbug_block_t unblock; }; -struct rbug_proto_context_flush -{ - struct rbug_header header; - rbug_context_t context; - int32_t flags; -}; - -struct rbug_proto_context_rule_add +struct rbug_proto_context_draw_rule { struct rbug_header header; rbug_context_t context; @@ -99,11 +92,11 @@ struct rbug_proto_context_rule_add rbug_block_t block; }; -struct rbug_proto_context_rule_delete +struct rbug_proto_context_flush { struct rbug_header header; rbug_context_t context; - rbug_block_rule_t rule; + int32_t flags; }; struct rbug_proto_context_list_reply @@ -129,13 +122,6 @@ struct rbug_proto_context_info_reply rbug_block_t blocked; }; -struct rbug_proto_context_rule_add_reply -{ - struct rbug_header header; - uint32_t serial; - rbug_block_rule_t rule; -}; - struct rbug_proto_context_draw_blocked { struct rbug_header header; @@ -165,25 +151,20 @@ int rbug_send_context_draw_unblock(struct rbug_connection *__con, rbug_block_t unblock, uint32_t *__serial); +int rbug_send_context_draw_rule(struct rbug_connection *__con, + rbug_context_t context, + rbug_shader_t vertex, + rbug_shader_t fragment, + rbug_texture_t texture, + rbug_texture_t surface, + rbug_block_t block, + uint32_t *__serial); + int rbug_send_context_flush(struct rbug_connection *__con, rbug_context_t context, int32_t flags, uint32_t *__serial); -int rbug_send_context_rule_add(struct rbug_connection *__con, - rbug_context_t context, - rbug_shader_t vertex, - rbug_shader_t fragment, - rbug_texture_t texture, - rbug_texture_t surface, - rbug_block_t block, - uint32_t *__serial); - -int rbug_send_context_rule_delete(struct rbug_connection *__con, - rbug_context_t context, - rbug_block_rule_t rule, - uint32_t *__serial); - int rbug_send_context_list_reply(struct rbug_connection *__con, uint32_t serial, rbug_context_t *contexts, @@ -203,11 +184,6 @@ int rbug_send_context_info_reply(struct rbug_connection *__con, rbug_block_t blocked, uint32_t *__serial); -int rbug_send_context_rule_add_reply(struct rbug_connection *__con, - uint32_t serial, - rbug_block_rule_t rule, - uint32_t *__serial); - int rbug_send_context_draw_blocked(struct rbug_connection *__con, rbug_context_t context, rbug_block_t block, @@ -223,18 +199,14 @@ struct rbug_proto_context_draw_step * rbug_demarshal_context_draw_step(struct rb struct rbug_proto_context_draw_unblock * rbug_demarshal_context_draw_unblock(struct rbug_proto_header *header); +struct rbug_proto_context_draw_rule * rbug_demarshal_context_draw_rule(struct rbug_proto_header *header); + struct rbug_proto_context_flush * rbug_demarshal_context_flush(struct rbug_proto_header *header); -struct rbug_proto_context_rule_add * rbug_demarshal_context_rule_add(struct rbug_proto_header *header); - -struct rbug_proto_context_rule_delete * rbug_demarshal_context_rule_delete(struct rbug_proto_header *header); - struct rbug_proto_context_list_reply * rbug_demarshal_context_list_reply(struct rbug_proto_header *header); struct rbug_proto_context_info_reply * rbug_demarshal_context_info_reply(struct rbug_proto_header *header); -struct rbug_proto_context_rule_add_reply * rbug_demarshal_context_rule_add_reply(struct rbug_proto_header *header); - struct rbug_proto_context_draw_blocked * rbug_demarshal_context_draw_blocked(struct rbug_proto_header *header); #endif diff --git a/src/gallium/auxiliary/rbug/rbug_demarshal.c b/src/gallium/auxiliary/rbug/rbug_demarshal.c index b3929b9cb43..47390fbcee7 100644 --- a/src/gallium/auxiliary/rbug/rbug_demarshal.c +++ b/src/gallium/auxiliary/rbug/rbug_demarshal.c @@ -65,18 +65,14 @@ struct rbug_header * rbug_demarshal(struct rbug_proto_header *header) return (struct rbug_header *)rbug_demarshal_context_draw_step(header); case RBUG_OP_CONTEXT_DRAW_UNBLOCK: return (struct rbug_header *)rbug_demarshal_context_draw_unblock(header); + case RBUG_OP_CONTEXT_DRAW_RULE: + return (struct rbug_header *)rbug_demarshal_context_draw_rule(header); case RBUG_OP_CONTEXT_FLUSH: return (struct rbug_header *)rbug_demarshal_context_flush(header); - case RBUG_OP_CONTEXT_RULE_ADD: - return (struct rbug_header *)rbug_demarshal_context_rule_add(header); - case RBUG_OP_CONTEXT_RULE_DELETE: - return (struct rbug_header *)rbug_demarshal_context_rule_delete(header); case RBUG_OP_CONTEXT_LIST_REPLY: return (struct rbug_header *)rbug_demarshal_context_list_reply(header); case RBUG_OP_CONTEXT_INFO_REPLY: return (struct rbug_header *)rbug_demarshal_context_info_reply(header); - case RBUG_OP_CONTEXT_RULE_ADD_REPLY: - return (struct rbug_header *)rbug_demarshal_context_rule_add_reply(header); case RBUG_OP_CONTEXT_DRAW_BLOCKED: return (struct rbug_header *)rbug_demarshal_context_draw_blocked(header); case RBUG_OP_SHADER_LIST: diff --git a/src/gallium/auxiliary/rbug/rbug_proto.h b/src/gallium/auxiliary/rbug/rbug_proto.h index 5ef345d72dd..d273be0166d 100644 --- a/src/gallium/auxiliary/rbug/rbug_proto.h +++ b/src/gallium/auxiliary/rbug/rbug_proto.h @@ -55,12 +55,10 @@ enum rbug_opcode RBUG_OP_CONTEXT_DRAW_BLOCK = 514, RBUG_OP_CONTEXT_DRAW_STEP = 515, RBUG_OP_CONTEXT_DRAW_UNBLOCK = 516, - RBUG_OP_CONTEXT_FLUSH = 518, - RBUG_OP_CONTEXT_RULE_ADD = 521, - RBUG_OP_CONTEXT_RULE_DELETE = 522, + RBUG_OP_CONTEXT_DRAW_RULE = 518, + RBUG_OP_CONTEXT_FLUSH = 519, RBUG_OP_CONTEXT_LIST_REPLY = -512, RBUG_OP_CONTEXT_INFO_REPLY = -513, - RBUG_OP_CONTEXT_RULE_ADD_REPLY = -521, RBUG_OP_CONTEXT_DRAW_BLOCKED = 517, RBUG_OP_SHADER_LIST = 768, RBUG_OP_SHADER_INFO = 769,