Hello Johannes,
On 2017-05-11 01:23, Johannes wrote:
> - For OSGComputeShaderAlgorithm is it possible to combine the
> useMemoryBarrier and memoryBarrier fields, i.e. if memoryBarrier
> is GL_NONE that means no memory barrier? That would allow
> controlling the barrier with a single field instead of requiring
> the setting of two.
Hmm, I don't think so. GL_NONE is not a valid (better listed of allowed)
parameters to the glMemoryBarrier API. I wouldn't try this.
sorry, I did not explain this in enough detail. I meant to use GL_NONE
as a special value that guards the call to glMemoryBarrier, i.e.
if(_sfMemoryBarrier.getValue() != GL_NONE)
glMemoryBarrier(_sfMemoryBarrier.getValue());
Please see the attached patch for details.
This also matches what we do for the face culling mode where GL requires
a glEnable(GL_CULL_FACE) call and glCullFace(GL_BACK) call, but there is
only a single field. If it has a value that is valid for glCullFace() we
issue the glEnable and glCullFace calls otherwise we call glDisable (see
PolygonChunk).
Cheers,
Carsten
>From e6ed2ea8b451a68d650189fe553fb4a72b7e40e7 Mon Sep 17 00:00:00 2001
From: Carsten Neumann <[email protected]>
Date: Tue, 16 May 2017 14:48:04 -0500
Subject: [PATCH] Use GL_NONE to indicate no memory barrier, remove
useMemoryBarrier field
---
Examples/Advanced/computeshader3.cpp | 1 -
Examples/Advanced/computeshader4.cpp | 1 -
Examples/Advanced/computeshader5.cpp | 1 -
Examples/Advanced/computeshader6.cpp | 1 -
.../ComputeShader/OSGComputeShaderAlgorithm.cpp | 4 +-
.../ComputeShader/OSGComputeShaderAlgorithm.fcd | 18 +---
.../OSGComputeShaderAlgorithmBase.cpp | 99 ++--------------------
.../ComputeShader/OSGComputeShaderAlgorithmBase.h | 18 +---
.../OSGComputeShaderAlgorithmBase.inl | 28 ------
9 files changed, 15 insertions(+), 156 deletions(-)
diff --git a/Examples/Advanced/computeshader3.cpp
b/Examples/Advanced/computeshader3.cpp
index 871d310..b602dfe 100644
--- a/Examples/Advanced/computeshader3.cpp
+++ b/Examples/Advanced/computeshader3.cpp
@@ -366,7 +366,6 @@ OSG::NodeTransitPtr createScene()
compShaderChunk->addComputeShader(compShader);
compShaderChunk->setVariables(compShader->getVariables());
- compShaderAlgo->setUseMemoryBarrier(true);
compShaderAlgo->setUseVariableWorkGroupSize(true);
compShaderAlgo->setMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT);
compShaderAlgo->setComputeShader(compShaderChunk);
diff --git a/Examples/Advanced/computeshader4.cpp
b/Examples/Advanced/computeshader4.cpp
index c24f5d4..88d352c 100644
--- a/Examples/Advanced/computeshader4.cpp
+++ b/Examples/Advanced/computeshader4.cpp
@@ -426,7 +426,6 @@ OSG::AlgorithmComputeElementTransitPtr createComputation()
compShaderChunk->setVariables(compShader->getVariables());
OSG::ComputeShaderAlgorithmRefPtr compShaderAlgo =
OSG::ComputeShaderAlgorithm::create();
- compShaderAlgo->setUseMemoryBarrier(true);
compShaderAlgo->setMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT);
compShaderAlgo->setComputeShader(compShaderChunk);
compShaderAlgo->setDispatchConfig(work_group_count);
diff --git a/Examples/Advanced/computeshader5.cpp
b/Examples/Advanced/computeshader5.cpp
index ef68085..0d1b71a 100644
--- a/Examples/Advanced/computeshader5.cpp
+++ b/Examples/Advanced/computeshader5.cpp
@@ -407,7 +407,6 @@ OSG::AlgorithmComputeElementTransitPtr createComputation()
compShaderChunk->setVariables(compShader->getVariables());
OSG::ComputeShaderAlgorithmRefPtr compShaderAlgo =
OSG::ComputeShaderAlgorithm::create();
- compShaderAlgo->setUseMemoryBarrier(true);
compShaderAlgo->setMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT);
compShaderAlgo->setComputeShader(compShaderChunk);
compShaderAlgo->setDispatchConfig(work_group_count);
diff --git a/Examples/Advanced/computeshader6.cpp
b/Examples/Advanced/computeshader6.cpp
index b096fa6..aef3055 100644
--- a/Examples/Advanced/computeshader6.cpp
+++ b/Examples/Advanced/computeshader6.cpp
@@ -373,7 +373,6 @@ OSG::AlgorithmComputeElementTransitPtr createComputation()
compShaderChunk->setVariables(compShader->getVariables());
OSG::ComputeShaderAlgorithmRefPtr compShaderAlgo =
OSG::ComputeShaderAlgorithm::create();
- compShaderAlgo->setUseMemoryBarrier(true);
compShaderAlgo->setMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT);
compShaderAlgo->setComputeShader(compShaderChunk);
compShaderAlgo->setDispatchConfig(work_group_count);
diff --git
a/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithm.cpp
b/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithm.cpp
index 6b2bd43..d267de5 100644
--- a/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithm.cpp
+++ b/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithm.cpp
@@ -167,7 +167,7 @@ void ComputeShaderAlgorithm::execute(HardwareContext
*pContext,
return;
}
- if(_sfUseMemoryBarrier.getValue() == true &&
+ if(_sfMemoryBarrier.getValue() != GL_NONE &&
!pWin->hasExtOrVersion(_arbShaderImageLoadStore, 0x0402))
{
FWARNING(("OpenGL memory barrier is not supported, couldn't find "
@@ -252,7 +252,7 @@ void ComputeShaderAlgorithm::execute(HardwareContext
*pContext,
_sfDispatchConfig.getValue()[2]);
}
- if (_sfUseMemoryBarrier.getValue() == true)
+ if (_sfMemoryBarrier.getValue() != GL_NONE)
{
OSGGETGLFUNCBYID_GL4(glMemoryBarrier,
osgGlMemoryBarrier,
diff --git
a/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithm.fcd
b/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithm.fcd
index 8d3c6ab..38a87c2 100644
--- a/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithm.fcd
+++ b/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithm.fcd
@@ -76,18 +76,6 @@
</Field>
<Field
- name="useMemoryBarrier"
- type="bool"
- cardinality="single"
- visibility="external"
- access="public"
- defaultValue="false"
- >
- This flag toggles the usage of the memory barrier call after the
operation of
- the compute shader.
- </Field>
-
- <Field
name="useVariableWorkGroupSize"
type="bool"
cardinality="single"
@@ -105,10 +93,10 @@
cardinality="single"
visibility="external"
access="public"
- defaultValue="GL_SHADER_STORAGE_BARRIER_BIT"
+ defaultValue="GL_NONE"
>
- This bitmask determines the behavior of the memory barrier that is
issued after the
- operation of the compute shader.
+ This bitmask determines the behavior of the memory barrier that is
issued after the operation of the compute shader.
+ Set to GL_NONE (the default) to not issue any memory barrier.
</Field>
</FieldContainer>
diff --git
a/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithmBase.cpp
b/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithmBase.cpp
index 242c4d3..2c33000 100644
--- a/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithmBase.cpp
+++ b/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithmBase.cpp
@@ -115,19 +115,14 @@ OSG_BEGIN_NAMESPACE
This does need the ARB_compute_variable_group_size GL extension to work.
*/
-/*! \var bool ComputeShaderAlgorithmBase::_sfUseMemoryBarrier
- This flag toggles the usage of the memory barrier call after the operation
of
- the compute shader.
-*/
-
/*! \var bool
ComputeShaderAlgorithmBase::_sfUseVariableWorkGroupSize
This flag enables the useage of the variable work group size dispatch API
that
is specified in the ARB_compute_variable_group_size extension.
*/
/*! \var GLenum ComputeShaderAlgorithmBase::_sfMemoryBarrier
- This bitmask determines the behavior of the memory barrier that is issued
after the
- operation of the compute shader.
+ This bitmask determines the behavior of the memory barrier that is issued
after the operation of the compute shader.
+ Set to GL_NONE (the default) to not issue any memory barrier.
*/
@@ -232,19 +227,6 @@ void
ComputeShaderAlgorithmBase::classDescInserter(TypeObject &oType)
pDesc = new SFBool::Description(
SFBool::getClassType(),
- "useMemoryBarrier",
- "This flag toggles the usage of the memory barrier call after the
operation of\n"
- "the compute shader.\n",
- UseMemoryBarrierFieldId, UseMemoryBarrierFieldMask,
- false,
- (Field::SFDefaultFlags | Field::FStdAccess),
-
static_cast<FieldEditMethodSig>(&ComputeShaderAlgorithm::editHandleUseMemoryBarrier),
- static_cast<FieldGetMethodSig
>(&ComputeShaderAlgorithm::getHandleUseMemoryBarrier));
-
- oType.addInitialDesc(pDesc);
-
- pDesc = new SFBool::Description(
- SFBool::getClassType(),
"useVariableWorkGroupSize",
"This flag enables the useage of the variable work group size dispatch
API that\n"
"is specified in the ARB_compute_variable_group_size extension.\n",
@@ -259,8 +241,8 @@ void
ComputeShaderAlgorithmBase::classDescInserter(TypeObject &oType)
pDesc = new SFGLenum::Description(
SFGLenum::getClassType(),
"memoryBarrier",
- "This bitmask determines the behavior of the memory barrier that is
issued after the\n"
- "operation of the compute shader.\n",
+ "This bitmask determines the behavior of the memory barrier that is
issued after the operation of the compute shader.\n"
+ "Set to GL_NONE (the default) to not issue any memory barrier.\n",
MemoryBarrierFieldId, MemoryBarrierFieldMask,
false,
(Field::SFDefaultFlags | Field::FStdAccess),
@@ -360,18 +342,6 @@ ComputeShaderAlgorithmBase::TypeObject
ComputeShaderAlgorithmBase::_type(
" </Field>\n"
"\n"
" <Field\n"
- " name=\"useMemoryBarrier\"\n"
- " type=\"bool\"\n"
- " cardinality=\"single\"\n"
- " visibility=\"external\"\n"
- " access=\"public\"\n"
- " defaultValue=\"false\"\n"
- " >\n"
- " This flag toggles the usage of the memory barrier call after the
operation of\n"
- " the compute shader.\n"
- " </Field>\n"
- "\n"
- " <Field\n"
" name=\"useVariableWorkGroupSize\"\n"
" type=\"bool\"\n"
" cardinality=\"single\"\n"
@@ -389,10 +359,10 @@ ComputeShaderAlgorithmBase::TypeObject
ComputeShaderAlgorithmBase::_type(
" cardinality=\"single\"\n"
" visibility=\"external\"\n"
" access=\"public\"\n"
- " defaultValue=\"GL_SHADER_STORAGE_BARRIER_BIT\"\n"
+ " defaultValue=\"GL_NONE\"\n"
" >\n"
- " This bitmask determines the behavior of the memory barrier that
is issued after the\n"
- " operation of the compute shader.\n"
+ " This bitmask determines the behavior of the memory barrier that
is issued after the operation of the compute shader.\n"
+ " Set to GL_NONE (the default) to not issue any memory barrier.\n"
" </Field>\n"
"\n"
"</FieldContainer>\n",
@@ -520,19 +490,6 @@ const SFVec3i
*ComputeShaderAlgorithmBase::getSFWorkGroupSize(void) const
}
-SFBool *ComputeShaderAlgorithmBase::editSFUseMemoryBarrier(void)
-{
- editSField(UseMemoryBarrierFieldMask);
-
- return &_sfUseMemoryBarrier;
-}
-
-const SFBool *ComputeShaderAlgorithmBase::getSFUseMemoryBarrier(void) const
-{
- return &_sfUseMemoryBarrier;
-}
-
-
SFBool *ComputeShaderAlgorithmBase::editSFUseVariableWorkGroupSize(void)
{
editSField(UseVariableWorkGroupSizeFieldMask);
@@ -642,10 +599,6 @@ SizeT
ComputeShaderAlgorithmBase::getBinSize(ConstFieldMaskArg whichField)
{
returnValue += _sfWorkGroupSize.getBinSize();
}
- if(FieldBits::NoField != (UseMemoryBarrierFieldMask & whichField))
- {
- returnValue += _sfUseMemoryBarrier.getBinSize();
- }
if(FieldBits::NoField != (UseVariableWorkGroupSizeFieldMask & whichField))
{
returnValue += _sfUseVariableWorkGroupSize.getBinSize();
@@ -683,10 +636,6 @@ void
ComputeShaderAlgorithmBase::copyToBin(BinaryDataHandler &pMem,
{
_sfWorkGroupSize.copyToBin(pMem);
}
- if(FieldBits::NoField != (UseMemoryBarrierFieldMask & whichField))
- {
- _sfUseMemoryBarrier.copyToBin(pMem);
- }
if(FieldBits::NoField != (UseVariableWorkGroupSizeFieldMask & whichField))
{
_sfUseVariableWorkGroupSize.copyToBin(pMem);
@@ -727,11 +676,6 @@ void
ComputeShaderAlgorithmBase::copyFromBin(BinaryDataHandler &pMem,
editSField(WorkGroupSizeFieldMask);
_sfWorkGroupSize.copyFromBin(pMem);
}
- if(FieldBits::NoField != (UseMemoryBarrierFieldMask & whichField))
- {
- editSField(UseMemoryBarrierFieldMask);
- _sfUseMemoryBarrier.copyFromBin(pMem);
- }
if(FieldBits::NoField != (UseVariableWorkGroupSizeFieldMask & whichField))
{
editSField(UseVariableWorkGroupSizeFieldMask);
@@ -872,9 +816,8 @@
ComputeShaderAlgorithmBase::ComputeShaderAlgorithmBase(void) :
_sfComputeShader (NULL),
_sfDispatchConfig (Vec3i(1, 0, 0)),
_sfWorkGroupSize (Vec3i(1, 1, 1)),
- _sfUseMemoryBarrier (bool(false)),
_sfUseVariableWorkGroupSize(bool(false)),
- _sfMemoryBarrier (GLenum(GL_SHADER_STORAGE_BARRIER_BIT))
+ _sfMemoryBarrier (GLenum(GL_NONE))
{
}
@@ -885,7 +828,6 @@
ComputeShaderAlgorithmBase::ComputeShaderAlgorithmBase(const ComputeShaderAlgori
_sfComputeShader (NULL),
_sfDispatchConfig (source._sfDispatchConfig ),
_sfWorkGroupSize (source._sfWorkGroupSize ),
- _sfUseMemoryBarrier (source._sfUseMemoryBarrier ),
_sfUseVariableWorkGroupSize(source._sfUseVariableWorkGroupSize),
_sfMemoryBarrier (source._sfMemoryBarrier )
{
@@ -1067,31 +1009,6 @@ EditFieldHandlePtr
ComputeShaderAlgorithmBase::editHandleWorkGroupSize (void)
return returnValue;
}
-GetFieldHandlePtr ComputeShaderAlgorithmBase::getHandleUseMemoryBarrier (void)
const
-{
- SFBool::GetHandlePtr returnValue(
- new SFBool::GetHandle(
- &_sfUseMemoryBarrier,
- this->getType().getFieldDesc(UseMemoryBarrierFieldId),
- const_cast<ComputeShaderAlgorithmBase *>(this)));
-
- return returnValue;
-}
-
-EditFieldHandlePtr ComputeShaderAlgorithmBase::editHandleUseMemoryBarrier(void)
-{
- SFBool::EditHandlePtr returnValue(
- new SFBool::EditHandle(
- &_sfUseMemoryBarrier,
- this->getType().getFieldDesc(UseMemoryBarrierFieldId),
- this));
-
-
- editSField(UseMemoryBarrierFieldMask);
-
- return returnValue;
-}
-
GetFieldHandlePtr
ComputeShaderAlgorithmBase::getHandleUseVariableWorkGroupSize (void) const
{
SFBool::GetHandlePtr returnValue(
diff --git
a/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithmBase.h
b/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithmBase.h
index ef895dd..98cdd38 100644
--- a/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithmBase.h
+++ b/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithmBase.h
@@ -69,7 +69,7 @@
#include "OSGChunkMaterialFields.h" // ChunkMaterial type
#include "OSGComputeShaderChunkFields.h" // ComputeShader type
#include "OSGVecFields.h" // DispatchConfig type
-#include "OSGSysFields.h" // UseMemoryBarrier type
+#include "OSGSysFields.h" // UseVariableWorkGroupSize type
#include "OSGBaseFields.h" // MemoryBarrier type
#include "OSGComputeShaderAlgorithmFields.h"
@@ -104,8 +104,7 @@ class OSG_CONTRIBCOMPUTEBASE_DLLMAPPING
ComputeShaderAlgorithmBase : public Comp
ComputeShaderFieldId = ChunkMaterialFieldId + 1,
DispatchConfigFieldId = ComputeShaderFieldId + 1,
WorkGroupSizeFieldId = DispatchConfigFieldId + 1,
- UseMemoryBarrierFieldId = WorkGroupSizeFieldId + 1,
- UseVariableWorkGroupSizeFieldId = UseMemoryBarrierFieldId + 1,
+ UseVariableWorkGroupSizeFieldId = WorkGroupSizeFieldId + 1,
MemoryBarrierFieldId = UseVariableWorkGroupSizeFieldId + 1,
NextFieldId = MemoryBarrierFieldId + 1
};
@@ -120,8 +119,6 @@ class OSG_CONTRIBCOMPUTEBASE_DLLMAPPING
ComputeShaderAlgorithmBase : public Comp
(TypeTraits<BitVector>::One << DispatchConfigFieldId);
static const OSG::BitVector WorkGroupSizeFieldMask =
(TypeTraits<BitVector>::One << WorkGroupSizeFieldId);
- static const OSG::BitVector UseMemoryBarrierFieldMask =
- (TypeTraits<BitVector>::One << UseMemoryBarrierFieldId);
static const OSG::BitVector UseVariableWorkGroupSizeFieldMask =
(TypeTraits<BitVector>::One << UseVariableWorkGroupSizeFieldId);
static const OSG::BitVector MemoryBarrierFieldMask =
@@ -134,7 +131,6 @@ class OSG_CONTRIBCOMPUTEBASE_DLLMAPPING
ComputeShaderAlgorithmBase : public Comp
typedef SFUnrecComputeShaderChunkPtr SFComputeShaderType;
typedef SFVec3i SFDispatchConfigType;
typedef SFVec3i SFWorkGroupSizeType;
- typedef SFBool SFUseMemoryBarrierType;
typedef SFBool SFUseVariableWorkGroupSizeType;
typedef SFGLenum SFMemoryBarrierType;
@@ -174,9 +170,6 @@ class OSG_CONTRIBCOMPUTEBASE_DLLMAPPING
ComputeShaderAlgorithmBase : public Comp
SFVec3i *editSFWorkGroupSize (void);
const SFVec3i *getSFWorkGroupSize (void) const;
- SFBool *editSFUseMemoryBarrier(void);
- const SFBool *getSFUseMemoryBarrier (void) const;
-
SFBool *editSFUseVariableWorkGroupSize(void);
const SFBool *getSFUseVariableWorkGroupSize (void)
const;
@@ -196,9 +189,6 @@ class OSG_CONTRIBCOMPUTEBASE_DLLMAPPING
ComputeShaderAlgorithmBase : public Comp
Vec3i &editWorkGroupSize (void);
const Vec3i &getWorkGroupSize (void) const;
- bool &editUseMemoryBarrier(void);
- bool getUseMemoryBarrier (void) const;
-
bool &editUseVariableWorkGroupSize(void);
bool getUseVariableWorkGroupSize (void)
const;
@@ -214,7 +204,6 @@ class OSG_CONTRIBCOMPUTEBASE_DLLMAPPING
ComputeShaderAlgorithmBase : public Comp
void setComputeShader (ComputeShaderChunk * const value);
void setDispatchConfig (const Vec3i &value);
void setWorkGroupSize (const Vec3i &value);
- void setUseMemoryBarrier(const bool value);
void setUseVariableWorkGroupSize(const bool value);
void setMemoryBarrier (const GLenum &value);
@@ -292,7 +281,6 @@ class OSG_CONTRIBCOMPUTEBASE_DLLMAPPING
ComputeShaderAlgorithmBase : public Comp
SFUnrecComputeShaderChunkPtr _sfComputeShader;
SFVec3i _sfDispatchConfig;
SFVec3i _sfWorkGroupSize;
- SFBool _sfUseMemoryBarrier;
SFBool _sfUseVariableWorkGroupSize;
SFGLenum _sfMemoryBarrier;
@@ -333,8 +321,6 @@ class OSG_CONTRIBCOMPUTEBASE_DLLMAPPING
ComputeShaderAlgorithmBase : public Comp
EditFieldHandlePtr editHandleDispatchConfig (void);
GetFieldHandlePtr getHandleWorkGroupSize (void) const;
EditFieldHandlePtr editHandleWorkGroupSize (void);
- GetFieldHandlePtr getHandleUseMemoryBarrier (void) const;
- EditFieldHandlePtr editHandleUseMemoryBarrier(void);
GetFieldHandlePtr getHandleUseVariableWorkGroupSize (void) const;
EditFieldHandlePtr editHandleUseVariableWorkGroupSize(void);
GetFieldHandlePtr getHandleMemoryBarrier (void) const;
diff --git
a/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithmBase.inl
b/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithmBase.inl
index 2aaaa9e..e8174cf 100644
--- a/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithmBase.inl
+++ b/Source/Contrib/ComputeBase/ComputeShader/OSGComputeShaderAlgorithmBase.inl
@@ -124,31 +124,6 @@ void ComputeShaderAlgorithmBase::setWorkGroupSize(const
Vec3i &value)
_sfWorkGroupSize.setValue(value);
}
-//! Get the value of the ComputeShaderAlgorithm::_sfUseMemoryBarrier field.
-
-inline
-bool &ComputeShaderAlgorithmBase::editUseMemoryBarrier(void)
-{
- editSField(UseMemoryBarrierFieldMask);
-
- return _sfUseMemoryBarrier.getValue();
-}
-
-//! Get the value of the ComputeShaderAlgorithm::_sfUseMemoryBarrier field.
-inline
- bool ComputeShaderAlgorithmBase::getUseMemoryBarrier(void) const
-{
- return _sfUseMemoryBarrier.getValue();
-}
-
-//! Set the value of the ComputeShaderAlgorithm::_sfUseMemoryBarrier field.
-inline
-void ComputeShaderAlgorithmBase::setUseMemoryBarrier(const bool value)
-{
- editSField(UseMemoryBarrierFieldMask);
-
- _sfUseMemoryBarrier.setValue(value);
-}
//! Get the value of the ComputeShaderAlgorithm::_sfUseVariableWorkGroupSize
field.
inline
@@ -230,9 +205,6 @@ void ComputeShaderAlgorithmBase::execSync (
ComputeShaderAlgorithmBase *pFr
if(FieldBits::NoField != (WorkGroupSizeFieldMask & whichField))
_sfWorkGroupSize.syncWith(pFrom->_sfWorkGroupSize);
- if(FieldBits::NoField != (UseMemoryBarrierFieldMask & whichField))
- _sfUseMemoryBarrier.syncWith(pFrom->_sfUseMemoryBarrier);
-
if(FieldBits::NoField != (UseVariableWorkGroupSizeFieldMask & whichField))
_sfUseVariableWorkGroupSize.syncWith(pFrom->_sfUseVariableWorkGroupSize);
--
2.5.5
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users