| 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 15 matching lines...) Expand all Loading... |
| 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 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 #ifndef O3D_CORE_CROSS_COMMAND_BUFFER_RENDER_SURFACE_CB_H_ | 33 #ifndef O3D_CORE_CROSS_COMMAND_BUFFER_RENDER_SURFACE_CB_H_ |
| 34 #define O3D_CORE_CROSS_COMMAND_BUFFER_RENDER_SURFACE_CB_H_ | 34 #define O3D_CORE_CROSS_COMMAND_BUFFER_RENDER_SURFACE_CB_H_ |
| 35 | 35 |
| 36 // This file contains the definition of the CB versions of |
| 37 // render surface sub-classes. |
| 38 |
| 36 #include "core/cross/render_surface.h" | 39 #include "core/cross/render_surface.h" |
| 37 #include "core/cross/command_buffer/renderer_cb.h" | 40 #include "core/cross/command_buffer/renderer_cb.h" |
| 38 #include "command_buffer/common/cross/resource.h" | 41 #include "command_buffer/common/cross/resource.h" |
| 39 | 42 |
| 40 namespace o3d { | 43 namespace o3d { |
| 41 | 44 |
| 45 // The RenderSurfaceCB class represents a render surface in the core library |
| 46 // of the client for command buffers. This class is responsible for sending |
| 47 // calls across the command buffer to create an actual render surface resource |
| 48 // on the server. |
| 42 class RenderSurfaceCB : public RenderSurface { | 49 class RenderSurfaceCB : public RenderSurface { |
| 43 public: | 50 public: |
| 44 typedef SmartPointer<RenderSurfaceCB> Ref; | 51 typedef SmartPointer<RenderSurfaceCB> Ref; |
| 45 | 52 |
| 53 // The render surface maintains a reference to its texture and renderer but |
| 54 // does not own them. The owner of the render surface is responsible for |
| 55 // properly deleting any textures. |
| 56 // Parameters: |
| 57 // service_locator - for central lookup. Not owned by RenderSurfaceCB. |
| 58 // width - width of the bitmap for this render surface. It must match the |
| 59 // the width of the texture at 'mip_level' |
| 60 // height - height of the bitmap for this render surface. It must match the |
| 61 // the height of the texture at 'mip_level' |
| 62 // mip_level - mip level of 'texture' for this render surface. |
| 63 // side - which side of a cube texture the render surface represents. The |
| 64 // 'side' parameter will not be used for a texture2d render surface. |
| 65 // texture - the texture this render surface maps to. Not owned by |
| 66 // RenderSurfaceCB. |
| 67 // renderer - the renderer to render to render surface. Not owned by |
| 68 // RenderSurfaceCB. |
| 46 RenderSurfaceCB(ServiceLocator *service_locator, | 69 RenderSurfaceCB(ServiceLocator *service_locator, |
| 47 int width, | 70 int width, |
| 48 int height, | 71 int height, |
| 49 int mip_level, | 72 int mip_level, |
| 50 int side, | 73 int side, |
| 51 Texture *texture, | 74 Texture *texture, |
| 52 RendererCB *renderer); | 75 RendererCB *renderer); |
| 53 virtual ~RenderSurfaceCB(); | 76 virtual ~RenderSurfaceCB(); |
| 54 | 77 |
| 78 // The CB specific implementation of GetBitmap. |
| 79 // Returns: |
| 80 // a reference to the underlying bitmap of the render surface. |
| 55 virtual Bitmap::Ref PlatformSpecificGetBitmap() const { | 81 virtual Bitmap::Ref PlatformSpecificGetBitmap() const { |
| 56 // TODO(rlp): Add this functionality. | 82 // TODO(rlp): Add this functionality. |
| 57 DCHECK(false); | 83 DCHECK(false); |
| 58 return Bitmap::Ref(); | 84 return Bitmap::Ref(); |
| 59 } | 85 } |
| 60 | 86 |
| 87 // Destroys any data structures associated with the render surface and |
| 88 // resets any allocated IDs. This function should never be called during |
| 89 // rendering. |
| 61 virtual void Destroy(); | 90 virtual void Destroy(); |
| 62 | 91 |
| 63 // Gets the render surface resource ID. | 92 // Returns the render surface resource ID. |
| 64 command_buffer::ResourceID resource_id() const { return resource_id_; } | 93 command_buffer::ResourceID resource_id() const { return resource_id_; } |
| 94 |
| 65 private: | 95 private: |
| 66 command_buffer::ResourceID resource_id_; | 96 command_buffer::ResourceID resource_id_; |
| 67 RendererCB* renderer_; | 97 RendererCB *renderer_; |
| 68 DISALLOW_COPY_AND_ASSIGN(RenderSurfaceCB); | 98 DISALLOW_COPY_AND_ASSIGN(RenderSurfaceCB); |
| 69 }; | 99 }; |
| 70 | 100 |
| 101 // The RenderDepthStencilSurfaceCB class represents a depth stencil surface in |
| 102 // the core library of the client for command buffers. This class is |
| 103 // responsible for sending calls across the command buffer to create an actual |
| 104 // depth stencil surface resource on the server. |
| 71 class RenderDepthStencilSurfaceCB : public RenderDepthStencilSurface { | 105 class RenderDepthStencilSurfaceCB : public RenderDepthStencilSurface { |
| 72 public: | 106 public: |
| 73 typedef SmartPointer<RenderDepthStencilSurfaceCB> Ref; | 107 typedef SmartPointer<RenderDepthStencilSurfaceCB> Ref; |
| 74 | 108 |
| 109 // The depth stencil surface maintains a reference to its renderer which is |
| 110 // also what typically creates it (though not always). The depth stencil |
| 111 // does not maintain ownership of the renderer. |
| 112 // Parameters: |
| 113 // service_locator - for central lookup. |
| 114 // width - width of the bitmap for this render surface. |
| 115 // height - height of the bitmap for this render surface. |
| 116 // renderer - the renderer to render to render surface. Not owned by |
| 117 // RenderDepthStencilSurfaceCB. |
| 75 RenderDepthStencilSurfaceCB(ServiceLocator *service_locator, | 118 RenderDepthStencilSurfaceCB(ServiceLocator *service_locator, |
| 76 int width, | 119 int width, |
| 77 int height, | 120 int height, |
| 78 RendererCB *renderer); | 121 RendererCB *renderer); |
| 79 virtual ~RenderDepthStencilSurfaceCB() {} | 122 virtual ~RenderDepthStencilSurfaceCB() {} |
| 80 | 123 |
| 124 // Destroys any data structures associated with the render surface and |
| 125 // resets any allocated IDs. This function should never be called during |
| 126 // rendering. |
| 81 virtual void Destroy(); | 127 virtual void Destroy(); |
| 82 | 128 |
| 83 // Gets the render depth stencil surface resource ID. | 129 // Returns the render depth stencil surface resource ID. |
| 84 command_buffer::ResourceID resource_id() const { return resource_id_; } | 130 command_buffer::ResourceID resource_id() const { return resource_id_; } |
| 131 |
| 85 private: | 132 private: |
| 86 command_buffer::ResourceID resource_id_; | 133 command_buffer::ResourceID resource_id_; |
| 87 RendererCB* renderer_; | 134 RendererCB *renderer_; |
| 88 DISALLOW_COPY_AND_ASSIGN(RenderDepthStencilSurfaceCB); | 135 DISALLOW_COPY_AND_ASSIGN(RenderDepthStencilSurfaceCB); |
| 89 }; | 136 }; |
| 90 | 137 |
| 91 } // namespace o3d | 138 } // namespace o3d |
| 92 | 139 |
| 93 #endif // O3D_CORE_CROSS_COMMAND_BUFFER_RENDER_SURFACE_CB_H_ | 140 #endif // O3D_CORE_CROSS_COMMAND_BUFFER_RENDER_SURFACE_CB_H_ |
| 94 | 141 |
| OLD | NEW |