| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2009, Google Inc. | 2 * Copyright 2009, Google Inc. |
| 3 * All rights reserved. | 3 * All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 30 */ | 30 */ |
| 31 | 31 |
| 32 | 32 |
| 33 // This file contains the GAPI decoder class. | 33 // This file contains the GAPI decoder class. |
| 34 | 34 |
| 35 #ifndef O3D_COMMAND_BUFFER_SERVICE_CROSS_GAPI_DECODER_H_ | 35 #ifndef O3D_COMMAND_BUFFER_SERVICE_CROSS_GAPI_DECODER_H_ |
| 36 #define O3D_COMMAND_BUFFER_SERVICE_CROSS_GAPI_DECODER_H_ | 36 #define O3D_COMMAND_BUFFER_SERVICE_CROSS_GAPI_DECODER_H_ |
| 37 | 37 |
| 38 #include "core/cross/types.h" | 38 #include "core/cross/types.h" |
| 39 #include "command_buffer/service/cross/cmd_parser.h" | 39 #include "command_buffer/service/cross/common_decoder.h" |
| 40 #include "command_buffer/common/cross/o3d_cmd_format.h" | 40 #include "command_buffer/common/cross/o3d_cmd_format.h" |
| 41 | 41 |
| 42 namespace o3d { | 42 namespace o3d { |
| 43 namespace command_buffer { | 43 namespace command_buffer { |
| 44 | |
| 45 class CommandBufferEngine; | |
| 46 | |
| 47 namespace o3d { | 44 namespace o3d { |
| 48 | 45 |
| 49 class GAPIInterface; | 46 class GAPIInterface; |
| 50 | 47 |
| 51 // This class implements the AsyncAPIInterface interface, decoding GAPI | 48 // This class implements the AsyncAPIInterface interface, decoding GAPI |
| 52 // commands and sending them to a GAPI interface. | 49 // commands and sending them to a GAPI interface. |
| 53 class GAPIDecoder : public AsyncAPIInterface { | 50 class GAPIDecoder : public CommonDecoder { |
| 54 public: | 51 public: |
| 55 typedef parse_error::ParseError ParseError; | 52 typedef parse_error::ParseError ParseError; |
| 56 | 53 |
| 57 explicit GAPIDecoder(GAPIInterface *gapi) : gapi_(gapi), engine_(NULL) {} | 54 explicit GAPIDecoder(GAPIInterface *gapi) : gapi_(gapi) {} |
| 58 virtual ~GAPIDecoder() {} | 55 virtual ~GAPIDecoder() {} |
| 59 | 56 |
| 60 // Overridden from AsyncAPIInterface. | 57 // Overridden from AsyncAPIInterface. |
| 61 virtual ParseError DoCommand(unsigned int command, | 58 virtual ParseError DoCommand(unsigned int command, |
| 62 unsigned int arg_count, | 59 unsigned int arg_count, |
| 63 const void* args); | 60 const void* args); |
| 64 | 61 |
| 65 // Sets the engine, to get shared memory buffers from, and to set the token | 62 // Overridden from AsyncAPIInterface. |
| 66 // to. | 63 virtual const char* GetCommandName(unsigned int command_id) const; |
| 67 void set_engine(CommandBufferEngine *engine) { engine_ = engine; } | 64 |
| 68 private: | 65 private: |
| 69 // Gets the address of shared memory data, given a shared memory ID and an | |
| 70 // offset. Also checks that the size is consistent with the shared memory | |
| 71 // size. | |
| 72 // Parameters: | |
| 73 // shm_id: the id of the shared memory buffer. | |
| 74 // offset: the offset of the data in the shared memory buffer. | |
| 75 // size: the size of the data. | |
| 76 // Returns: | |
| 77 // NULL if shm_id isn't a valid shared memory buffer ID or if the size | |
| 78 // check fails. Return a pointer to the data otherwise. | |
| 79 void *GetAddressAndCheckSize(unsigned int shm_id, | |
| 80 unsigned int offset, | |
| 81 unsigned int size); | |
| 82 | |
| 83 // Generate a member function prototype for each command in an automated and | 66 // Generate a member function prototype for each command in an automated and |
| 84 // typesafe way. | 67 // typesafe way. |
| 85 #define O3D_COMMAND_BUFFER_CMD_OP(name) \ | 68 #define O3D_COMMAND_BUFFER_CMD_OP(name) \ |
| 86 ParseError Handle ## name( \ | 69 ParseError Handle ## name( \ |
| 87 unsigned int arg_count, \ | 70 unsigned int arg_count, \ |
| 88 const o3d::name& args); \ | 71 const o3d::name& args); \ |
| 89 | 72 |
| 90 O3D_COMMAND_BUFFER_CMDS(O3D_COMMAND_BUFFER_CMD_OP) | 73 O3D_COMMAND_BUFFER_CMDS(O3D_COMMAND_BUFFER_CMD_OP) |
| 91 | 74 |
| 92 #undef O3D_COMMAND_BUFFER_CMD_OP | 75 #undef O3D_COMMAND_BUFFER_CMD_OP |
| 93 | 76 |
| 94 GAPIInterface *gapi_; | 77 GAPIInterface *gapi_; |
| 95 CommandBufferEngine *engine_; | |
| 96 }; | 78 }; |
| 97 | 79 |
| 98 } // namespace o3d | 80 } // namespace o3d |
| 99 } // namespace command_buffer | 81 } // namespace command_buffer |
| 100 } // namespace o3d | 82 } // namespace o3d |
| 101 | 83 |
| 102 #endif // O3D_COMMAND_BUFFER_SERVICE_CROSS_GAPI_DECODER_H_ | 84 #endif // O3D_COMMAND_BUFFER_SERVICE_CROSS_GAPI_DECODER_H_ |
| OLD | NEW |