Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright 2009 VMware, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * Permission is hereby granted, free of charge, to any person obtaining a
  6.  * copy of this software and associated documentation files (the "Software"),
  7.  * to deal in the Software without restriction, including without limitation
  8.  * on the rights to use, copy, modify, merge, publish, distribute, sub
  9.  * license, and/or sell copies of the Software, and to permit persons to whom
  10.  * the Software is furnished to do so, subject to the following conditions:
  11.  *
  12.  * The above copyright notice and this permission notice (including the next
  13.  * paragraph) shall be included in all copies or substantial portions of the
  14.  * Software.
  15.  *
  16.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17.  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18.  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
  19.  * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
  20.  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  21.  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  22.  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  23.  */
  24.  
  25. /*
  26.  * This file holds structs decelerations and function prototypes for one of
  27.  * the rbug extensions. Implementation of the functions is in the same folder
  28.  * in the c file matching this file's name.
  29.  *
  30.  * The structs what is returned from the demarshal functions. The functions
  31.  * starting rbug_send_* encodes a call to the write format and sends that to
  32.  * the supplied connection, while functions starting with rbug_demarshal_*
  33.  * demarshal data from the wire protocol.
  34.  *
  35.  * Structs and functions ending with _reply are replies to requests.
  36.  */
  37.  
  38. #ifndef _RBUG_PROTO_CONTEXT_H_
  39. #define _RBUG_PROTO_CONTEXT_H_
  40.  
  41. #include "rbug_proto.h"
  42. #include "rbug_core.h"
  43.  
  44. typedef enum
  45. {
  46.         RBUG_BLOCK_BEFORE = 1,
  47.         RBUG_BLOCK_AFTER = 2,
  48.         RBUG_BLOCK_RULE = 4,
  49.         RBUG_BLOCK_MASK = 7
  50. } rbug_block_t;
  51.  
  52. struct rbug_proto_context_list
  53. {
  54.         struct rbug_header header;
  55. };
  56.  
  57. struct rbug_proto_context_info
  58. {
  59.         struct rbug_header header;
  60.         rbug_context_t context;
  61. };
  62.  
  63. struct rbug_proto_context_draw_block
  64. {
  65.         struct rbug_header header;
  66.         rbug_context_t context;
  67.         rbug_block_t block;
  68. };
  69.  
  70. struct rbug_proto_context_draw_step
  71. {
  72.         struct rbug_header header;
  73.         rbug_context_t context;
  74.         rbug_block_t step;
  75. };
  76.  
  77. struct rbug_proto_context_draw_unblock
  78. {
  79.         struct rbug_header header;
  80.         rbug_context_t context;
  81.         rbug_block_t unblock;
  82. };
  83.  
  84. struct rbug_proto_context_draw_rule
  85. {
  86.         struct rbug_header header;
  87.         rbug_context_t context;
  88.         rbug_shader_t vertex;
  89.         rbug_shader_t fragment;
  90.         rbug_texture_t texture;
  91.         rbug_texture_t surface;
  92.         rbug_block_t block;
  93. };
  94.  
  95. struct rbug_proto_context_flush
  96. {
  97.         struct rbug_header header;
  98.         rbug_context_t context;
  99. };
  100.  
  101. struct rbug_proto_context_list_reply
  102. {
  103.         struct rbug_header header;
  104.         uint32_t serial;
  105.         rbug_context_t *contexts;
  106.         uint32_t contexts_len;
  107. };
  108.  
  109. struct rbug_proto_context_info_reply
  110. {
  111.         struct rbug_header header;
  112.         uint32_t serial;
  113.         rbug_shader_t vertex;
  114.         rbug_shader_t fragment;
  115.         rbug_texture_t *texs;
  116.         uint32_t texs_len;
  117.         rbug_texture_t *cbufs;
  118.         uint32_t cbufs_len;
  119.         rbug_texture_t zsbuf;
  120.         rbug_block_t blocker;
  121.         rbug_block_t blocked;
  122. };
  123.  
  124. struct rbug_proto_context_draw_blocked
  125. {
  126.         struct rbug_header header;
  127.         rbug_context_t context;
  128.         rbug_block_t block;
  129. };
  130.  
  131. int rbug_send_context_list(struct rbug_connection *__con,
  132.                            uint32_t *__serial);
  133.  
  134. int rbug_send_context_info(struct rbug_connection *__con,
  135.                            rbug_context_t context,
  136.                            uint32_t *__serial);
  137.  
  138. int rbug_send_context_draw_block(struct rbug_connection *__con,
  139.                                  rbug_context_t context,
  140.                                  rbug_block_t block,
  141.                                  uint32_t *__serial);
  142.  
  143. int rbug_send_context_draw_step(struct rbug_connection *__con,
  144.                                 rbug_context_t context,
  145.                                 rbug_block_t step,
  146.                                 uint32_t *__serial);
  147.  
  148. int rbug_send_context_draw_unblock(struct rbug_connection *__con,
  149.                                    rbug_context_t context,
  150.                                    rbug_block_t unblock,
  151.                                    uint32_t *__serial);
  152.  
  153. int rbug_send_context_draw_rule(struct rbug_connection *__con,
  154.                                 rbug_context_t context,
  155.                                 rbug_shader_t vertex,
  156.                                 rbug_shader_t fragment,
  157.                                 rbug_texture_t texture,
  158.                                 rbug_texture_t surface,
  159.                                 rbug_block_t block,
  160.                                 uint32_t *__serial);
  161.  
  162. int rbug_send_context_flush(struct rbug_connection *__con,
  163.                             rbug_context_t context,
  164.                             uint32_t *__serial);
  165.  
  166. int rbug_send_context_list_reply(struct rbug_connection *__con,
  167.                                  uint32_t serial,
  168.                                  rbug_context_t *contexts,
  169.                                  uint32_t contexts_len,
  170.                                  uint32_t *__serial);
  171.  
  172. int rbug_send_context_info_reply(struct rbug_connection *__con,
  173.                                  uint32_t serial,
  174.                                  rbug_shader_t vertex,
  175.                                  rbug_shader_t fragment,
  176.                                  rbug_texture_t *texs,
  177.                                  uint32_t texs_len,
  178.                                  rbug_texture_t *cbufs,
  179.                                  uint32_t cbufs_len,
  180.                                  rbug_texture_t zsbuf,
  181.                                  rbug_block_t blocker,
  182.                                  rbug_block_t blocked,
  183.                                  uint32_t *__serial);
  184.  
  185. int rbug_send_context_draw_blocked(struct rbug_connection *__con,
  186.                                    rbug_context_t context,
  187.                                    rbug_block_t block,
  188.                                    uint32_t *__serial);
  189.  
  190. struct rbug_proto_context_list * rbug_demarshal_context_list(struct rbug_proto_header *header);
  191.  
  192. struct rbug_proto_context_info * rbug_demarshal_context_info(struct rbug_proto_header *header);
  193.  
  194. struct rbug_proto_context_draw_block * rbug_demarshal_context_draw_block(struct rbug_proto_header *header);
  195.  
  196. struct rbug_proto_context_draw_step * rbug_demarshal_context_draw_step(struct rbug_proto_header *header);
  197.  
  198. struct rbug_proto_context_draw_unblock * rbug_demarshal_context_draw_unblock(struct rbug_proto_header *header);
  199.  
  200. struct rbug_proto_context_draw_rule * rbug_demarshal_context_draw_rule(struct rbug_proto_header *header);
  201.  
  202. struct rbug_proto_context_flush * rbug_demarshal_context_flush(struct rbug_proto_header *header);
  203.  
  204. struct rbug_proto_context_list_reply * rbug_demarshal_context_list_reply(struct rbug_proto_header *header);
  205.  
  206. struct rbug_proto_context_info_reply * rbug_demarshal_context_info_reply(struct rbug_proto_header *header);
  207.  
  208. struct rbug_proto_context_draw_blocked * rbug_demarshal_context_draw_blocked(struct rbug_proto_header *header);
  209.  
  210. #endif
  211.