About
Contact
QtCreator
KDevelop
Solarized
line #s on
1
// Copyright (C) 2020 Klaralvdalens Datakonsult AB (KDAB).
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4
#include
"rendercommand_p.h"
5
#include
"rhigraphicspipeline_p.h"
6
7
QT_BEGIN_NAMESPACE
8
9
namespace
Qt3DRender
{
10
namespace
Render
{
11
namespace
Rhi
{
12
13
bool
RenderCommand
::
Pipeline
::
isValid
()
const
noexcept
14
{
15
struct
{
16
bool
operator
()(
RHIGraphicsPipeline
*
pipeline
)
const
noexcept
{
17
return
pipeline
&&
pipeline
->
pipeline
();
18
}
19
bool
operator
()(
RHIComputePipeline
*
pipeline
)
const
noexcept
{
20
return
pipeline
&&
pipeline
->
pipeline
();
21
}
22
bool
operator
()(
std::
monostate
)
const
noexcept
{
23
return
false
;
24
}
25
}
visitor
;
26
return
this
->
visit
(
f&:
visitor
);
27
}
28
29
RenderCommand
::
RenderCommand
()
30
:
m_rhiShader
(
nullptr
),
31
m_stateSet
(
nullptr
),
32
m_depth
(
0.0f
),
33
m_changeCost
(
0
),
34
m_type
(
RenderCommand
::
Draw
),
35
m_workGroups
(),
36
m_primitiveCount
(
0
),
37
m_primitiveType
(
QGeometryRenderer
::
Triangles
),
38
m_restartIndexValue
(-
1
),
39
m_firstInstance
(
0
),
40
m_firstVertex
(
0
),
41
m_verticesPerPatch
(
0
),
42
m_instanceCount
(
0
),
43
m_indexOffset
(
0
),
44
m_indexAttributeByteOffset
(
0
),
45
m_indexAttributeDataType
(
Qt3DCore::
QAttribute
::
UnsignedShort
),
46
m_indirectAttributeByteOffset
(
0
),
47
m_drawIndexed
(
false
),
48
m_drawIndirect
(
false
),
49
m_primitiveRestartEnabled
(
false
),
50
m_isValid
(
false
),
51
indexAttribute
(
nullptr
),
52
indexBuffer
(
nullptr
),
53
m_commandUBO
(
),
54
pipeline
(
)
55
56
{
57
m_workGroups
[
0
] =
0
;
58
m_workGroups
[
1
] =
0
;
59
m_workGroups
[
2
] =
0
;
60
}
61
62
RenderCommand
::
~RenderCommand
()
63
{
64
if
(
shaderResourceBindings
)
65
shaderResourceBindings
->
deleteLater
();
66
}
67
68
bool
RenderCommand
::
isValid
()
const
noexcept
69
{
70
return
m_isValid
&&
m_rhiShader
&&
pipeline
.
isValid
();
71
}
72
73
bool
operator
==
(
const
RenderCommand
&
a
,
const
RenderCommand
&
b
)
noexcept
74
{
75
return
(
a
.
m_rhiShader
==
b
.
m_rhiShader
&&
a
.
m_material
==
b
.
m_material
76
&&
a
.
m_stateSet
==
b
.
m_stateSet
&&
a
.
m_geometry
==
b
.
m_geometry
77
&&
a
.
m_geometryRenderer
==
b
.
m_geometryRenderer
78
&&
a
.
m_indirectDrawBuffer
==
b
.
m_indirectDrawBuffer
79
&&
a
.
m_activeAttributes
==
b
.
m_activeAttributes
&&
a
.
m_depth
==
b
.
m_depth
80
&&
a
.
m_changeCost
==
b
.
m_changeCost
&&
a
.
m_shaderId
==
b
.
m_shaderId
81
&&
a
.
m_workGroups
[
0
] ==
b
.
m_workGroups
[
0
] &&
a
.
m_workGroups
[
1
] ==
b
.
m_workGroups
[
1
]
82
&&
a
.
m_workGroups
[
2
] ==
b
.
m_workGroups
[
2
] &&
a
.
m_primitiveCount
==
b
.
m_primitiveCount
83
&&
a
.
m_primitiveType
==
b
.
m_primitiveType
84
&&
a
.
m_restartIndexValue
==
b
.
m_restartIndexValue
85
&&
a
.
m_firstInstance
==
b
.
m_firstInstance
&&
a
.
m_firstVertex
==
b
.
m_firstVertex
86
&&
a
.
m_verticesPerPatch
==
b
.
m_verticesPerPatch
87
&&
a
.
m_instanceCount
==
b
.
m_instanceCount
&&
a
.
m_indexOffset
==
b
.
m_indexOffset
88
&&
a
.
m_indexAttributeByteOffset
==
b
.
m_indexAttributeByteOffset
89
&&
a
.
m_drawIndexed
==
b
.
m_drawIndexed
&&
a
.
m_drawIndirect
==
b
.
m_drawIndirect
90
&&
a
.
m_primitiveRestartEnabled
==
b
.
m_primitiveRestartEnabled
91
&&
a
.
m_isValid
==
b
.
m_isValid
&&
a
.
m_computeCommand
==
b
.
m_computeCommand
);
92
}
93
94
bool
operator
==
(
const
AttributeInfo
&
a
,
const
AttributeInfo
&
b
)
95
{
96
return
a
.
nameId
==
b
.
nameId
&&
97
a
.
classification
==
b
.
classification
&&
98
a
.
stride
==
b
.
stride
&&
99
a
.
offset
==
b
.
offset
&&
100
a
.
divisor
==
b
.
divisor
;
101
}
102
103
bool
operator
!=
(
const
AttributeInfo
&
a
,
const
AttributeInfo
&
b
)
104
{
105
return
!(
a
==
b
);
106
}
107
108
}
// namespace Rhi
109
}
// namespace Render
110
}
// namespace Qt3DRender
111
112
QT_END_NAMESPACE
113
Definitions
isValid
RenderCommand
~RenderCommand
isValid
operator==
operator==
Learn Advanced QML with KDAB
Find out more