Removing GL usage from dali core
[platform/core/uifw/dali-core.git] / dali / internal / render / renderers / render-vertex-buffer.cpp
1 /*
2  * Copyright (c) 2021 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 // CLASS HEADER
19 #include <dali/internal/render/renderers/render-vertex-buffer.h>
20
21 // INTERNAL HEADERS
22 #include <dali/internal/event/rendering/vertex-buffer-impl.h> // Dali::Internal::VertexBuffer
23
24 namespace Dali
25 {
26 namespace Internal
27 {
28 namespace Render
29 {
30 VertexBuffer::VertexBuffer()
31 : mFormat(nullptr),
32   mData(nullptr),
33   mGpuBuffer(nullptr),
34   mSize(0),
35   mDataChanged(true)
36 {
37 }
38
39 VertexBuffer::~VertexBuffer() = default;
40
41 void VertexBuffer::SetFormat(VertexBuffer::Format* format)
42 {
43   mFormat      = format;
44   mDataChanged = true;
45 }
46
47 void VertexBuffer::SetData(Dali::Vector<uint8_t>* data, uint32_t size)
48 {
49   mData        = data;
50   mSize        = size;
51   mDataChanged = true;
52 }
53
54 bool VertexBuffer::Update(Graphics::Controller& graphicsController)
55 {
56   if(!mData || !mFormat || !mSize)
57   {
58     return false;
59   }
60
61   if(!mGpuBuffer || mDataChanged)
62   {
63     if(!mGpuBuffer)
64     {
65       mGpuBuffer = new GpuBuffer(graphicsController, 0 | Graphics::BufferUsage::VERTEX_BUFFER);
66     }
67
68     // Update the GpuBuffer
69     if(mGpuBuffer)
70     {
71       DALI_ASSERT_DEBUG(mSize && "No data in the property buffer!");
72       mGpuBuffer->UpdateDataBuffer(graphicsController, GetDataSize(), &((*mData)[0]));
73     }
74
75     mDataChanged = false;
76   }
77
78   return true;
79 }
80
81 } // namespace Render
82 } // namespace Internal
83 } // namespace Dali