summaryrefslogtreecommitdiffstats
path: root/RenderScript/src/BufferParser.cpp
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2018-08-26 23:07:17 +0000
committerEgor Yusov <egor.yusov@gmail.com>2018-08-26 23:07:17 +0000
commit3147bcad48e72863c1a15e23ffb3e9754527fccb (patch)
treeb2c9f36aac2bcbdfc74f43a99d5e7ad0ada60295 /RenderScript/src/BufferParser.cpp
parentUpdated readme (diff)
downloadDiligentTools-3147bcad48e72863c1a15e23ffb3e9754527fccb.tar.gz
DiligentTools-3147bcad48e72863c1a15e23ffb3e9754527fccb.zip
Updated buffer, buffer view and draw attrib parsers
Diffstat (limited to 'RenderScript/src/BufferParser.cpp')
-rw-r--r--RenderScript/src/BufferParser.cpp57
1 files changed, 4 insertions, 53 deletions
diff --git a/RenderScript/src/BufferParser.cpp b/RenderScript/src/BufferParser.cpp
index 4b6d489..ebf04d0 100644
--- a/RenderScript/src/BufferParser.cpp
+++ b/RenderScript/src/BufferParser.cpp
@@ -23,41 +23,11 @@
#include "pch.h"
#include "BufferParser.h"
-#include "GraphicsAccessories.h"
namespace Diligent
{
const Char* BufferParser::BufferLibName = "Buffer";
- template<>
- class MemberBinder<BufferDesc::BufferFormat> : public MemberBinderBase
- {
- public:
- MemberBinder( size_t MemberOffset, size_t Dummy ) :
- MemberBinderBase( MemberOffset )
- {
- DEFINE_ENUM_BINDER( m_Bindings, BufferDesc::BufferFormat, ValueType, m_ValueTypeEnumMapping );
- using NumComponentsType = decltype(BufferDesc::BufferFormat::NumComponents);
- DEFINE_BINDER_EX( m_Bindings, BufferDesc::BufferFormat, NumComponents, NumComponentsType, Validator<NumComponentsType>( "Num Components", 1, 4 ) );
- DEFINE_BINDER( m_Bindings, BufferDesc::BufferFormat, IsNormalized );
- }
-
- virtual void GetValue( lua_State *L, const void* pBasePointer )
- {
- const auto &BuffFmt = GetMemberByOffest<BufferDesc::BufferFormat>( pBasePointer, m_MemberOffset );
- PushLuaTable( L, &BuffFmt, m_Bindings );
- }
-
- virtual void SetValue( lua_State *L, int Index, void* pBasePointer )
- {
- auto &BuffFmt = GetMemberByOffest<BufferDesc::BufferFormat>( pBasePointer, m_MemberOffset );
- ParseLuaTable( L, Index, &BuffFmt, m_Bindings );
- }
- private:
- BindingsMapType m_Bindings;
- ValueTypeEnumMapping m_ValueTypeEnumMapping;
- };
-
BufferParser::BufferParser( IRenderDevice *pRenderDevice, lua_State *L ) :
EngineObjectParserCommon<IBuffer>( pRenderDevice, L, BufferLibName ),
m_SetVertexBuffersBinding(this, L, "Context", "SetVertexBuffers", &BufferParser::SetVertexBuffers),
@@ -86,14 +56,14 @@ namespace Diligent
DEFINE_ENUM_ELEMENT_MAPPING( m_BuffModeEnumMapping, BUFFER_MODE_UNDEFINED );
DEFINE_ENUM_ELEMENT_MAPPING( m_BuffModeEnumMapping, BUFFER_MODE_FORMATTED );
DEFINE_ENUM_ELEMENT_MAPPING( m_BuffModeEnumMapping, BUFFER_MODE_STRUCTURED );
- static_assert(BUFFER_MODE_NUM_MODES == BUFFER_MODE_STRUCTURED + 1, "Not all buffer modes initialized.");
+ DEFINE_ENUM_ELEMENT_MAPPING( m_BuffModeEnumMapping, BUFFER_MODE_RAW );
+ static_assert(BUFFER_MODE_NUM_MODES == BUFFER_MODE_RAW + 1, "Not all buffer modes initialized.");
VERIFY( m_BuffModeEnumMapping.m_Str2ValMap.size() == BUFFER_MODE_NUM_MODES,
"Unexpected map size. Did you update BUFFER_MODE enum?" );
VERIFY( m_BuffModeEnumMapping.m_Val2StrMap.size() == BUFFER_MODE_NUM_MODES,
"Unexpected map size. Did you update BUFFER_MODE enum?" );
DEFINE_ENUM_BINDER( m_Bindings, SBuffDescWrapper, Mode, m_BuffModeEnumMapping );
- DEFINE_BINDER_EX( m_Bindings, SBuffDescWrapper, Format, decltype(BufferDesc::Format), 0 );
DEFINE_BINDER( m_Bindings, SBuffDescWrapper, ElementByteStride );
DEFINE_ENUM_ELEMENT_MAPPING( m_SetVBFlagEnumMapping, SET_VERTEX_BUFFERS_FLAG_RESET );
@@ -107,27 +77,8 @@ namespace Diligent
ParseLuaTable( L, 1, &BufferDesc, m_Bindings );
CHECK_LUA_STACK_HEIGHT();
- if( BufferDesc.Mode == BUFFER_MODE_FORMATTED )
- {
- auto &BuffFmt = BufferDesc.Format;
- if( BuffFmt.ValueType == VT_UNDEFINED || BuffFmt.NumComponents == 0 )
- SCRIPT_PARSING_ERROR( L, "Valid format must be specified for a formatted buffer" );
- auto FmtSize = GetValueSize( BuffFmt.ValueType ) * BuffFmt.NumComponents;
- if( BufferDesc.ElementByteStride != 0 )
- {
- if( BufferDesc.ElementByteStride != FmtSize )
- SCRIPT_PARSING_ERROR( L, "Size of the specified format (", FmtSize, ") does not match UAV element byte stride (", BufferDesc.ElementByteStride, ")." );
- }
- else
- {
- BufferDesc.ElementByteStride = FmtSize;
- }
- if( BuffFmt.ValueType == VT_FLOAT32 || BuffFmt.ValueType == VT_FLOAT16 )
- BuffFmt.IsNormalized = false;
- }
-
- if( BufferDesc.Mode == BUFFER_MODE_STRUCTURED && BufferDesc.ElementByteStride == 0 )
- SCRIPT_PARSING_ERROR( L, "UAV element byte stride of a structured buffer cannot be zero" );
+ if( (BufferDesc.Mode == BUFFER_MODE_STRUCTURED || BufferDesc.Mode == BUFFER_MODE_FORMATTED) && BufferDesc.ElementByteStride == 0 )
+ SCRIPT_PARSING_ERROR( L, "Element byte stride of a structured or formatted buffer cannot be zero" );
if( (BufferDesc.Mode == BUFFER_MODE_FORMATTED || BufferDesc.Mode == BUFFER_MODE_STRUCTURED) &&
(BufferDesc.uiSizeInBytes % BufferDesc.ElementByteStride) != 0 )