Revert "swr/rast: Archrast codegen updates"
authorEric Engestrom <eric.engestrom@intel.com>
Fri, 1 Mar 2019 16:37:31 +0000 (16:37 +0000)
committerEric Engestrom <eric.engestrom@intel.com>
Fri, 1 Mar 2019 16:46:32 +0000 (16:46 +0000)
This reverts the following commits:
71a76a47ccb34c5c259781ed49b0013e86dfaa31 "swr/codegen: fix autotools build"
7763e664cefd1e394101b37fbc552b50f820f44a "meson/swr: replace hard-coded path with current_build_dir()"
773b3ceacaf6d32135348e07878b8514a4350b0e "swr/rast: Fix autotools and scons codegen"
16e10b8c304481e423e76311f70de5de9e7424b1 "swr/rast: Add general SWTag statistics"
b45a15a39f7630d569fcf1296dac1415eb758249 "swr/rast: Add string handling to AR event framework"
8608a747aafe6aef42fba148bfcdbb3ca136e7de "swr/rast: Add initial SWTag proto definitions"
93cd9905c8fbb98985ae1a61c0eebdb225fd1325 "swr/rast: Cleanup and generalize gen_archrast"

The last one in this list broke all the build systems that can build
this (meson, autotools & scons).

See MR !304 for more details:
https://gitlab.freedesktop.org/mesa/mesa/merge_requests/304

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
src/gallium/drivers/swr/Makefile.am
src/gallium/drivers/swr/SConscript
src/gallium/drivers/swr/rasterizer/archrast/events.proto
src/gallium/drivers/swr/rasterizer/codegen/gen_archrast.py
src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py
src/gallium/drivers/swr/rasterizer/codegen/meson.build
src/gallium/drivers/swr/rasterizer/codegen/templates/gen_ar_event.hpp
src/gallium/drivers/swr/rasterizer/common/simdlib_512_emu.inl

index c111d31a8744039edbd08c09cd36646e674e48ec..3390ef6b096b9a24823758803b3fb05fd8e31b44 100644 (file)
@@ -82,10 +82,10 @@ BUILT_SOURCES = \
        rasterizer/jitter/gen_builder.hpp \
        rasterizer/jitter/gen_builder_meta.hpp \
        rasterizer/jitter/gen_builder_intrin.hpp \
-       rasterizer/codegen/gen_ar_event.hpp \
-       rasterizer/codegen/gen_ar_event.cpp \
-       rasterizer/codegen/gen_ar_eventhandler.hpp \
-       rasterizer/codegen/gen_ar_eventhandlerfile.hpp \
+       rasterizer/archrast/gen_ar_event.hpp \
+       rasterizer/archrast/gen_ar_event.cpp \
+       rasterizer/archrast/gen_ar_eventhandler.hpp \
+       rasterizer/archrast/gen_ar_eventhandlerfile.hpp \
        rasterizer/core/backends/gen_BackendPixelRate0.cpp \
        rasterizer/core/backends/gen_BackendPixelRate1.cpp \
        rasterizer/core/backends/gen_BackendPixelRate2.cpp \
@@ -155,36 +155,44 @@ rasterizer/jitter/gen_builder_intrin.hpp: rasterizer/codegen/gen_llvm_ir_macros.
                --gen_intrin_h
        $(AM_V_GEN)touch $@
 
-rasterizer/codegen/gen_ar_event.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_event.hpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
+rasterizer/archrast/gen_ar_event.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_event.hpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
        $(MKDIR_GEN)
        $(PYTHON_GEN) \
                $(srcdir)/rasterizer/codegen/gen_archrast.py \
-               --proto $(srcdir)/rasterizer/archrast/events.proto $(srcdir)/rasterizer/archrast/events_private.proto \
-               --output-dir rasterizer/codegen
+               --proto $(srcdir)/rasterizer/archrast/events.proto \
+               --proto_private $(srcdir)/rasterizer/archrast/events_private.proto \
+               --output rasterizer/archrast/gen_ar_event.hpp \
+               --gen_event_hpp
        $(AM_V_GEN)touch $@
 
-rasterizer/codegen/gen_ar_event.cpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_event.cpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
+rasterizer/archrast/gen_ar_event.cpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_event.cpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
        $(MKDIR_GEN)
        $(PYTHON_GEN) \
                $(srcdir)/rasterizer/codegen/gen_archrast.py \
-               --proto $(srcdir)/rasterizer/archrast/events.proto $(srcdir)/rasterizer/archrast/events_private.proto \
-               --output-dir rasterizer/codegen
+               --proto $(srcdir)/rasterizer/archrast/events.proto \
+               --proto_private $(srcdir)/rasterizer/archrast/events_private.proto \
+               --output rasterizer/archrast/gen_ar_event.cpp \
+               --gen_event_cpp
        $(AM_V_GEN)touch $@
 
-rasterizer/codegen/gen_ar_eventhandler.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_eventhandler.hpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
+rasterizer/archrast/gen_ar_eventhandler.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_eventhandler.hpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
        $(MKDIR_GEN)
        $(PYTHON_GEN) \
                $(srcdir)/rasterizer/codegen/gen_archrast.py \
-               --proto $(srcdir)/rasterizer/archrast/events.proto $(srcdir)/rasterizer/archrast/events_private.proto \
-               --output-dir rasterizer/codegen
+               --proto $(srcdir)/rasterizer/archrast/events.proto \
+               --proto_private $(srcdir)/rasterizer/archrast/events_private.proto \
+               --output rasterizer/archrast/gen_ar_eventhandler.hpp \
+               --gen_eventhandler_hpp
        $(AM_V_GEN)touch $@
 
-rasterizer/codegen/gen_ar_eventhandlerfile.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
+rasterizer/archrast/gen_ar_eventhandlerfile.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
        $(MKDIR_GEN)
        $(PYTHON_GEN) \
                $(srcdir)/rasterizer/codegen/gen_archrast.py \
-               --proto $(srcdir)/rasterizer/archrast/events.proto $(srcdir)/rasterizer/archrast/events_private.proto \
-               --output-dir rasterizer/codegen
+               --proto $(srcdir)/rasterizer/archrast/events.proto \
+               --proto_private $(srcdir)/rasterizer/archrast/events_private.proto \
+               --output rasterizer/archrast/gen_ar_eventhandlerfile.hpp \
+               --gen_eventhandlerfile_hpp
        $(AM_V_GEN)touch $@
 
 rasterizer/core/backends/gen_BackendPixelRate0.cpp \
index 6d2d31a52606d5b3abee097ca8342bf48edd135a..a89d02c5db0828b8acf6013907cc90489ea69f15 100644 (file)
@@ -106,7 +106,7 @@ env.CodeGenerate(
     target = 'rasterizer/archrast/gen_ar_event.hpp',
     script = swrroot + 'rasterizer/codegen/gen_archrast.py',
     source = 'rasterizer/archrast/events.proto',
-    command = python_cmd + ' $SCRIPT --proto $SOURCE ' + srcroot + '/rasterizer/archrast/events_private.proto --output-dir ' + bldroot + '/rasterizer/archrast'
+    command = python_cmd + ' $SCRIPT --proto $SOURCE --proto_private ' + srcroot + '/rasterizer/archrast/events_private.proto --output $TARGET --gen_event_hpp'
 )
 Depends('rasterizer/archrast/gen_ar_event.hpp',
         swrroot + 'rasterizer/archrast/events_private.proto')
@@ -117,7 +117,7 @@ env.CodeGenerate(
     target = 'rasterizer/archrast/gen_ar_event.cpp',
     script = swrroot + 'rasterizer/codegen/gen_archrast.py',
     source = 'rasterizer/archrast/events.proto',
-    command = python_cmd + ' $SCRIPT --proto $SOURCE ' + srcroot + '/rasterizer/archrast/events_private.proto --output-dir ' + bldroot + '/rasterizer/archrast'
+    command = python_cmd + ' $SCRIPT --proto $SOURCE --proto_private ' + srcroot + '/rasterizer/archrast/events_private.proto --output $TARGET --gen_event_cpp'
 )
 Depends('rasterizer/archrast/gen_ar_event.cpp',
         swrroot + 'rasterizer/archrast/events_private.proto')
@@ -128,7 +128,7 @@ env.CodeGenerate(
     target = 'rasterizer/archrast/gen_ar_eventhandler.hpp',
     script = swrroot + 'rasterizer/codegen/gen_archrast.py',
     source = 'rasterizer/archrast/events.proto',
-    command = python_cmd + ' $SCRIPT --proto $SOURCE ' + srcroot + '/rasterizer/archrast/events_private.proto --output-dir ' + bldroot + '/rasterizer/archrast'
+    command = python_cmd + ' $SCRIPT --proto $SOURCE --proto_private ' + srcroot + '/rasterizer/archrast/events_private.proto --output $TARGET --gen_eventhandler_hpp'
 )
 Depends('rasterizer/archrast/gen_ar_eventhandler.hpp',
         swrroot + 'rasterizer/archrast/events_private.proto')
@@ -139,7 +139,7 @@ env.CodeGenerate(
     target = 'rasterizer/archrast/gen_ar_eventhandlerfile.hpp',
     script = swrroot + 'rasterizer/codegen/gen_archrast.py',
     source = 'rasterizer/archrast/events.proto',
-    command = python_cmd + ' $SCRIPT --proto $SOURCE ' + srcroot + '/rasterizer/archrast/events_private.proto --output-dir ' + bldroot + '/rasterizer/archrast'
+    command = python_cmd + ' $SCRIPT --proto $SOURCE --proto_private ' + srcroot + '/rasterizer/archrast/events_private.proto --output $TARGET --gen_eventhandlerfile_hpp'
 )
 Depends('rasterizer/archrast/gen_ar_eventhandlerfile.hpp',
         swrroot + 'rasterizer/archrast/events_private.proto')
index 1057a9437bea7047f2336f578ee4c2a6797dd3f7..fdf39ee34e6cbaba8644c8d073a0d9e8727fd782 100644 (file)
@@ -96,371 +96,330 @@ event SwrStoreTilesEvent
 event FrontendStatsEvent
 {
     uint32_t drawId;
-    uint64_t counter IaVertices;
-    uint64_t counter IaPrimitives;
-    uint64_t counter VsInvocations;
-    uint64_t counter HsInvocations;
-    uint64_t counter DsInvocations;
-    uint64_t counter GsInvocations;
-    uint64_t counter GsPrimitives;
-    uint64_t counter CInvocations;
-    uint64_t counter CPrimitives;
-    uint64_t counter SoPrimStorageNeeded0;
-    uint64_t counter SoPrimStorageNeeded1;
-    uint64_t counter SoPrimStorageNeeded2;
-    uint64_t counter SoPrimStorageNeeded3;
-    uint64_t counter SoNumPrimsWritten0;
-    uint64_t counter SoNumPrimsWritten1;
-    uint64_t counter SoNumPrimsWritten2;
-    uint64_t counter SoNumPrimsWritten3;
+    uint64_t IaVertices;
+    uint64_t IaPrimitives;
+    uint64_t VsInvocations;
+    uint64_t HsInvocations;
+    uint64_t DsInvocations;
+    uint64_t GsInvocations;
+    uint64_t GsPrimitives;
+    uint64_t CInvocations;
+    uint64_t CPrimitives;
+    uint64_t SoPrimStorageNeeded0;
+    uint64_t SoPrimStorageNeeded1;
+    uint64_t SoPrimStorageNeeded2;
+    uint64_t SoPrimStorageNeeded3;
+    uint64_t SoNumPrimsWritten0;
+    uint64_t SoNumPrimsWritten1;
+    uint64_t SoNumPrimsWritten2;
+    uint64_t SoNumPrimsWritten3;
 };
 
 event BackendStatsEvent
 {
     uint32_t drawId;
-    uint64_t counter DepthPassCount;
-    uint64_t counter PsInvocations;
-    uint64_t counter CsInvocations;
+    uint64_t DepthPassCount;
+    uint64_t PsInvocations;
+    uint64_t CsInvocations;
 
 };
 
 event EarlyZSingleSample
 {
     uint32_t drawId;
-    uint64_t counter passCount;
-    uint64_t counter failCount;
-};
+    uint64_t passCount;
+    uint64_t failCount;
+};     
 
 event LateZSingleSample
 {
     uint32_t drawId;
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 event EarlyStencilSingleSample
 {
     uint32_t drawId; 
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 event LateStencilSingleSample
 {
     uint32_t drawId; 
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 event EarlyZSampleRate
 {
     uint32_t drawId;
-    uint64_t counter passCount;
-    uint64_t counter failCount;
-};
+    uint64_t passCount;
+    uint64_t failCount;
+};     
 
 event LateZSampleRate
 {
     uint32_t drawId;
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 event EarlyStencilSampleRate
 {
     uint32_t drawId; 
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 event LateStencilSampleRate
 {
     uint32_t drawId; 
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 // Total Early-Z counts, SingleSample and SampleRate
 event EarlyZ
 {
     uint32_t drawId;
-    uint64_t counter passCount;
-    uint64_t counter failCount;
-};
+    uint64_t passCount;
+    uint64_t failCount;
+};     
 
 // Total LateZ counts, SingleSample and SampleRate
 event LateZ
 {
     uint32_t drawId;
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 // Total EarlyStencil counts, SingleSample and SampleRate
 event EarlyStencil
 {
     uint32_t drawId; 
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 // Total LateStencil counts, SingleSample and SampleRate
 event LateStencil
 {
     uint32_t drawId; 
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 event EarlyZNullPS
 {
     uint32_t drawId;
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 event EarlyStencilNullPS
 {
     uint32_t drawId; 
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 event EarlyZPixelRate
 {
     uint32_t drawId;
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 event LateZPixelRate
 {
     uint32_t drawId;
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 
 event EarlyOmZ
 {
     uint32_t drawId;
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 event EarlyOmStencil
 {
     uint32_t drawId;
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 event LateOmZ
 {
     uint32_t drawId;
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 event LateOmStencil
 {
     uint32_t drawId;
-    uint64_t counter passCount;
-    uint64_t counter failCount;
+    uint64_t passCount;
+    uint64_t failCount;
 };
 
 event GSInputPrims
 {
     uint32_t drawId;
-    uint64_t counter inputPrimCount;
+    uint64_t inputPrimCount;
 };
 
 event GSPrimsGen
 {
     uint32_t drawId;
-    uint64_t counter primGeneratedCount;
+    uint64_t primGeneratedCount;
 };
 
 event GSVertsInput
 {
     uint32_t drawId;
-    uint64_t counter vertsInput;
+    uint64_t vertsInput;
 };
 
 event TessPrims
 {
     uint32_t drawId;
-    uint64_t counter primCount;
+    uint64_t primCount;
 };
 
 event RasterTiles
 {
     uint32_t drawId;
-    uint32_t counter rastTileCount;
+    uint32_t rastTileCount;
 };
 
 event ClipperEvent
 {
     uint32_t drawId;
-    uint32_t counter trivialRejectCount;
-    uint32_t counter trivialAcceptCount;
-    uint32_t counter mustClipCount;
+    uint32_t trivialRejectCount;
+    uint32_t trivialAcceptCount;
+    uint32_t mustClipCount;
 };
 
 event CullEvent
 {
     uint32_t drawId;
-    uint64_t counter backfacePrimCount;
-    uint64_t counter degeneratePrimCount;
+    uint64_t backfacePrimCount;
+    uint64_t degeneratePrimCount;
 };
 
 event AlphaEvent
 {
     uint32_t drawId;
-    uint32_t counter alphaTestCount;
-    uint32_t counter alphaBlendCount;
+    uint32_t alphaTestCount;
+    uint32_t alphaBlendCount;
 };
 
 event VSInfo
 {
     uint32_t drawId;
-    uint32_t counter numInstExecuted;
-    uint32_t counter numSampleExecuted;
-    uint32_t counter numSampleLExecuted;
-    uint32_t counter numSampleBExecuted;
-    uint32_t counter numSampleCExecuted;
-    uint32_t counter numSampleCLZExecuted;
-    uint32_t counter numSampleCDExecuted;
-    uint32_t counter numGather4Executed;
-    uint32_t counter numGather4CExecuted;
-    uint32_t counter numGather4CPOExecuted;
-    uint32_t counter numGather4CPOCExecuted;
-    uint32_t counter numLodExecuted;
+    uint32_t numInstExecuted;
+    uint32_t numSampleExecuted;
+    uint32_t numSampleLExecuted;
+    uint32_t numSampleBExecuted;
+    uint32_t numSampleCExecuted;
+    uint32_t numSampleCLZExecuted;
+    uint32_t numSampleCDExecuted;
+    uint32_t numGather4Executed;
+    uint32_t numGather4CExecuted;
+    uint32_t numGather4CPOExecuted;
+    uint32_t numGather4CPOCExecuted;
+    uint32_t numLodExecuted;
 };
 
 event HSInfo
 {
     uint32_t drawId;
-    uint32_t counter numInstExecuted;
-    uint32_t counter numSampleExecuted;
-    uint32_t counter numSampleLExecuted;
-    uint32_t counter numSampleBExecuted;
-    uint32_t counter numSampleCExecuted;
-    uint32_t counter numSampleCLZExecuted;
-    uint32_t counter numSampleCDExecuted;
-    uint32_t counter numGather4Executed;
-    uint32_t counter numGather4CExecuted;
-    uint32_t counter numGather4CPOExecuted;
-    uint32_t counter numGather4CPOCExecuted;
-    uint32_t counter numLodExecuted;
+    uint32_t numInstExecuted;
+    uint32_t numSampleExecuted;
+    uint32_t numSampleLExecuted;
+    uint32_t numSampleBExecuted;
+    uint32_t numSampleCExecuted;
+    uint32_t numSampleCLZExecuted;
+    uint32_t numSampleCDExecuted;
+    uint32_t numGather4Executed;
+    uint32_t numGather4CExecuted;
+    uint32_t numGather4CPOExecuted;
+    uint32_t numGather4CPOCExecuted;
+    uint32_t numLodExecuted;
 };
 
 event DSInfo
 {
     uint32_t drawId;
-    uint32_t counter numInstExecuted;
-    uint32_t counter numSampleExecuted;
-    uint32_t counter numSampleLExecuted;
-    uint32_t counter numSampleBExecuted;
-    uint32_t counter numSampleCExecuted;
-    uint32_t counter numSampleCLZExecuted;
-    uint32_t counter numSampleCDExecuted;
-    uint32_t counter numGather4Executed;
-    uint32_t counter numGather4CExecuted;
-    uint32_t counter numGather4CPOExecuted;
-    uint32_t counter numGather4CPOCExecuted;
-    uint32_t counter numLodExecuted;
+    uint32_t numInstExecuted;
+    uint32_t numSampleExecuted;
+    uint32_t numSampleLExecuted;
+    uint32_t numSampleBExecuted;
+    uint32_t numSampleCExecuted;
+    uint32_t numSampleCLZExecuted;
+    uint32_t numSampleCDExecuted;
+    uint32_t numGather4Executed;
+    uint32_t numGather4CExecuted;
+    uint32_t numGather4CPOExecuted;
+    uint32_t numGather4CPOCExecuted;
+    uint32_t numLodExecuted;
 };
 
 event GSInfo
 {
     uint32_t drawId;
-    uint32_t counter numInstExecuted;
-    uint32_t counter numSampleExecuted;
-    uint32_t counter numSampleLExecuted;
-    uint32_t counter numSampleBExecuted;
-    uint32_t counter numSampleCExecuted;
-    uint32_t counter numSampleCLZExecuted;
-    uint32_t counter numSampleCDExecuted;
-    uint32_t counter numGather4Executed;
-    uint32_t counter numGather4CExecuted;
-    uint32_t counter numGather4CPOExecuted;
-    uint32_t counter numGather4CPOCExecuted;
-    uint32_t counter numLodExecuted;
+    uint32_t numInstExecuted;
+    uint32_t numSampleExecuted;
+    uint32_t numSampleLExecuted;
+    uint32_t numSampleBExecuted;
+    uint32_t numSampleCExecuted;
+    uint32_t numSampleCLZExecuted;
+    uint32_t numSampleCDExecuted;
+    uint32_t numGather4Executed;
+    uint32_t numGather4CExecuted;
+    uint32_t numGather4CPOExecuted;
+    uint32_t numGather4CPOCExecuted;
+    uint32_t numLodExecuted;
 
 };
 
 event PSInfo
 {
     uint32_t drawId;
-    uint32_t counter numInstExecuted;
-    uint32_t counter numSampleExecuted;
-    uint32_t counter numSampleLExecuted;
-    uint32_t counter numSampleBExecuted;
-    uint32_t counter numSampleCExecuted;
-    uint32_t counter numSampleCLZExecuted;
-    uint32_t counter numSampleCDExecuted;
-    uint32_t counter numGather4Executed;
-    uint32_t counter numGather4CExecuted;
-    uint32_t counter numGather4CPOExecuted;
-    uint32_t counter numGather4CPOCExecuted;
-    uint32_t counter numLodExecuted;
+    uint32_t numInstExecuted;
+    uint32_t numSampleExecuted;
+    uint32_t numSampleLExecuted;
+    uint32_t numSampleBExecuted;
+    uint32_t numSampleCExecuted;
+    uint32_t numSampleCLZExecuted;
+    uint32_t numSampleCDExecuted;
+    uint32_t numGather4Executed;
+    uint32_t numGather4CExecuted;
+    uint32_t numGather4CPOExecuted;
+    uint32_t numGather4CPOCExecuted;
+    uint32_t numLodExecuted;
 };
 
 event CSInfo
 {
     uint32_t drawId;
-    uint32_t counter numInstExecuted;
-    uint32_t counter numSampleExecuted;
-    uint32_t counter numSampleLExecuted;
-    uint32_t counter numSampleBExecuted;
-    uint32_t counter numSampleCExecuted;
-    uint32_t counter numSampleCLZExecuted;
-    uint32_t counter numSampleCDExecuted;
-    uint32_t counter numGather4Executed;
-    uint32_t counter numGather4CExecuted;
-    uint32_t counter numGather4CPOExecuted;
-    uint32_t counter numGather4CPOCExecuted;
-    uint32_t counter numLodExecuted;
-};
-
-event SWTagFrameEvent
-{
-       uint64_t swTagFrame;
-};
-
-event SWTagRenderpassEvent
-{
-       uint64_t swTagFrame;
-       uint32_t swTagDrawOrDispatch;
-       uint32_t swTagDraw;
-       uint32_t swTagDispatch;
-       uint32_t swTagRenderpassCount;
-};
-
-event SWTagDrawEvent
-{
-       uint64_t swTagFrame;
-       uint32_t swTagDrawOrDispatch;
-       uint32_t swTagDraw;
-       uint32_t swTagDispatch;
-};
-
-event SWTagDispatchEvent
-{
-       uint64_t swTagFrame;
-       uint32_t swTagDrawOrDispatch;
-       uint32_t swTagDraw;
-       uint32_t swTagDispatch;
-};
-
-event SWTagFlushEvent
-{
-       uint64_t swTagFrame;
-       uint32_t swTagDrawOrDispatch;
-       uint32_t swTagDraw;
-       uint32_t swTagDispatch;
-       uint32_t swTagFlushCounter;
-    char swTagFlushReason[256];
-    uint32_t swTagFlushType;
+    uint32_t numInstExecuted;
+    uint32_t numSampleExecuted;
+    uint32_t numSampleLExecuted;
+    uint32_t numSampleBExecuted;
+    uint32_t numSampleCExecuted;
+    uint32_t numSampleCLZExecuted;
+    uint32_t numSampleCDExecuted;
+    uint32_t numGather4Executed;
+    uint32_t numGather4CExecuted;
+    uint32_t numGather4CPOExecuted;
+    uint32_t numGather4CPOCExecuted;
+    uint32_t numLodExecuted;
 };
\ No newline at end of file
index b4b6127c8cc8179ecfdb4117348827e84a4b0a25..c5842aa48d24f82f2876f7d71a83da9d0ac52dc5 100644 (file)
@@ -27,40 +27,34 @@ import re
 from gen_common import *
 
 def parse_event_fields(lines, idx, event_dict):
-    """
-        Parses lines from a proto file that contain an event definition and stores it in event_dict
-    """
-    fields = []
+    field_names = []
+    field_types = []
     end_of_event = False
 
+    num_fields = 0
+
     # record all fields in event definition.
     # note: we don't check if there's a leading brace.
     while not end_of_event and idx < len(lines):
         line = lines[idx].rstrip()
         idx += 1
 
-        match = re.match(r'(\s*)([\w\*]+)(\s+)(counter\s+)*([\w]+)(\[\d+\])*', line)
+        field = re.match(r'(\s*)(\w+)(\s*)(\w+)', line)
 
-        if match:
-            field = {
-                "type": match.group(2),
-                "name": match.group(5),
-                "size": int(match.group(6)[1:-1]) if match.group(6) else 1,
-                "counter": True if match.group(4) else False
-            }
-            fields.append(field)
+        if field:
+            field_types.append(field.group(2))
+            field_names.append(field.group(4))
+            num_fields += 1
 
         end_of_event = re.match(r'(\s*)};', line)
 
-    event_dict['fields'] = fields
-    event_dict['num_fields'] = len(fields)
+    event_dict['field_types'] = field_types
+    event_dict['field_names'] = field_names
+    event_dict['num_fields'] = num_fields
 
     return idx
 
 def parse_enums(lines, idx, event_dict):
-    """
-        Parses lines from a proto file that contain an enum definition and stores it in event_dict
-    """
     enum_names = []
     end_of_enum = False
 
@@ -83,122 +77,145 @@ def parse_enums(lines, idx, event_dict):
     event_dict['names'] = enum_names
     return idx
 
-def parse_protos(files, verbose=False):
-    """
-        Parses a proto file and returns a dictionary of event definitions
-    """
-    protos = {}
-    protos['events'] = {}       # event dictionary containing events with their fields
-    protos['event_names'] = []  # needed to keep events in order parsed. dict is not ordered.
-    protos['event_map'] = {}    # dictionary to map event ids to event names
-    protos['enums'] = {}
-    protos['enum_names'] = []
-
-    eventId = 0
-
-    if type(files) is not list:
-        files = [files]
-
-    for filename in files:
-        if verbose:
-            print("Parsing proto file: %s" % os.path.normpath(filename))
-
-        with open(filename, 'r') as f:
-            lines=f.readlines()
+def parse_protos(protos, filename):
 
-            idx = 0
+    with open(filename, 'r') as f:
+        lines=f.readlines()
 
-            raw_text = []
-            while idx < len(lines):
-                line = lines[idx].rstrip()
-                idx += 1
+        idx = 0
 
-                # search for event definitions.
-                match = re.match(r'(\s*)event(\s*)(\w+)', line)
+        eventId = 0
+        raw_text = []
+        while idx < len(lines):
+            line = lines[idx].rstrip()
+            idx += 1
 
-                if match:
-                    eventId += 1
-                    event_name = match.group(3)
-                    protos["event_names"].append(event_name)
+            # search for event definitions.
+            match = re.match(r'(\s*)event(\s*)(\w+)', line)
 
-                    protos["events"][event_name] = {}
-                    protos["events"][event_name]["event_id"] = eventId
-                    protos["event_map"][eventId] = event_name
-                    idx = parse_event_fields(lines, idx, protos["events"][event_name])
+            if match:
+                eventId += 1
+                event_name = match.group(3)
+                protos['event_names'].append(event_name)
 
-                # search for enums.
-                match = re.match(r'(\s*)enum(\s*)(\w+)', line)
+                protos['events'][event_name] = {}
+                protos['events'][event_name]['event_id'] = eventId
+                idx = parse_event_fields(lines, idx, protos['events'][event_name])
 
-                if match:
-                    enum_name = match.group(3)
-                    protos["enum_names"].append(enum_name)
+            # search for enums.
+            match = re.match(r'(\s*)enum(\s*)(\w+)', line)
 
-                    protos["enums"][enum_name] = {}
-                    idx = parse_enums(lines, idx, protos["enums"][enum_name])
-    return protos
+            if match:
+                enum_name = match.group(3)
+                protos['enum_names'].append(enum_name)
 
+                protos['enums'][enum_name] = {}
+                idx = parse_enums(lines, idx, protos['enums'][enum_name])
 
 def main():
 
     # Parse args...
     parser = ArgumentParser()
-    parser.add_argument("--proto", "-p", dest="protos", nargs='+', help="Path to all proto file(s) to process. Accepts one or more paths (i.e. events.proto and events_private.proto)", required=True)
-    parser.add_argument("--output-dir", help="Output dir (defaults to ./codegen). Will create folder if it does not exist.", required=False, default="codegen")
-    parser.add_argument("--verbose", "-v", help="Verbose", action="store_true")
+    parser.add_argument('--proto', '-p', help='Path to proto file', required=True)
+    parser.add_argument('--proto_private', '-pp', help='Path to private proto file', required=True)
+    parser.add_argument('--output', '-o', help='Output filename (i.e. event.hpp)', required=True)
+    parser.add_argument('--gen_event_hpp', help='Generate event header', action='store_true', default=False)
+    parser.add_argument('--gen_event_cpp', help='Generate event cpp', action='store_true', default=False)
+    parser.add_argument('--gen_eventhandler_hpp', help='Generate eventhandler header', action='store_true', default=False)
+    parser.add_argument('--gen_eventhandlerfile_hpp', help='Generate eventhandler header for writing to files', action='store_true', default=False)
     args = parser.parse_args()
 
-    if not os.path.exists(args.output_dir):
-        MakeDir(args.output_dir)
+    proto_filename = args.proto
+    proto_private_filename = args.proto_private
 
-    for f in args.protos:
-        if not os.path.exists(f):
-            print('Error: Could not find proto file %s' % f, file=sys.stderr)
-            return 1
+    (output_dir, output_filename) = os.path.split(args.output)
 
-    # Parse each proto file and add to protos container
-    protos = parse_protos(args.protos, args.verbose)
+    if not output_dir:
+        output_dir = '.'
+
+    #print('output_dir = %s' % output_dir, file=sys.stderr)
+    #print('output_filename = %s' % output_filename, file=sys.stderr)
+
+    if not os.path.exists(proto_filename):
+        print('Error: Could not find proto file %s' % proto_filename, file=sys.stderr)
+        return 1
+
+    if not os.path.exists(proto_private_filename):
+        print('Error: Could not find private proto file %s' % proto_private_filename, file=sys.stderr)
+        return 1
+
+    final_output_dir = output_dir
+    MakeDir(final_output_dir)
+    output_dir = MakeTmpDir('_codegen')
+
+    protos = {}
+    protos['events'] = {}       # event dictionary containing events with their fields
+    protos['event_names'] = []  # needed to keep events in order parsed. dict is not ordered.
+    protos['enums'] = {}
+    protos['enum_names'] = []
 
-    files = [
-        ["gen_ar_event.hpp", ""],
-        ["gen_ar_event.cpp", ""],
-        ["gen_ar_eventhandler.hpp", "gen_ar_event.hpp"],
-        ["gen_ar_eventhandlerfile.hpp", "gen_ar_eventhandler.hpp"]
-    ]
+    parse_protos(protos, proto_filename)
+    parse_protos(protos, proto_private_filename)
 
     rval = 0
 
     try:
-        # Delete existing files
-        for f in files:
-            filename = f[0]
-            output_fullpath = os.path.join(args.output_dir, filename)
-            if os.path.exists(output_fullpath):
-                if args.verbose:
-                    print("Deleting existing file: %s" % output_fullpath)
-                os.remove(output_fullpath)
-
-        # Generate files from templates
-        print("Generating c++ from proto files...")
-        for f in files:
-            filename = f[0]
-            event_header = f[1]
+        # Generate event header
+        if args.gen_event_hpp:
+            curdir = os.path.dirname(os.path.abspath(__file__))
+            template_file = os.sep.join([curdir, 'templates', 'gen_ar_event.hpp'])
+            output_fullpath = os.sep.join([output_dir, output_filename])
+
+            MakoTemplateWriter.to_file(template_file, output_fullpath,
+                    cmdline=sys.argv,
+                    filename=output_filename,
+                    protos=protos)
+
+        # Generate event implementation
+        if args.gen_event_cpp:
             curdir = os.path.dirname(os.path.abspath(__file__))
-            template_file = os.path.join(curdir, 'templates', filename)
-            output_fullpath = os.path.join(args.output_dir, filename)
+            template_file = os.sep.join([curdir, 'templates', 'gen_ar_event.cpp'])
+            output_fullpath = os.sep.join([output_dir, output_filename])
 
-            if args.verbose:
-                print("Generating: %s" % output_fullpath)
             MakoTemplateWriter.to_file(template_file, output_fullpath,
                     cmdline=sys.argv,
-                    filename=filename,
-                    protos=protos,
-                    event_header=event_header)
+                    filename=output_filename,
+                    protos=protos)
+
+        # Generate event handler header
+        if args.gen_eventhandler_hpp:
+            curdir = os.path.dirname(os.path.abspath(__file__))
+            template_file = os.sep.join([curdir, 'templates', 'gen_ar_eventhandler.hpp'])
+            output_fullpath = os.sep.join([output_dir, output_filename])
 
-    except Exception as e:
-        print(e)
+            MakoTemplateWriter.to_file(template_file, output_fullpath,
+                    cmdline=sys.argv,
+                    filename=output_filename,
+                    event_header='gen_ar_event.hpp',
+                    protos=protos)
+
+        # Generate event handler header
+        if args.gen_eventhandlerfile_hpp:
+            curdir = os.path.dirname(os.path.abspath(__file__))
+            template_file = os.sep.join([curdir, 'templates', 'gen_ar_eventhandlerfile.hpp'])
+            output_fullpath = os.sep.join([output_dir, output_filename])
+
+            MakoTemplateWriter.to_file(template_file, output_fullpath,
+                    cmdline=sys.argv,
+                    filename=output_filename,
+                    event_header='gen_ar_eventhandler.hpp',
+                    protos=protos)
+
+        rval = CopyDirFilesIfDifferent(output_dir, final_output_dir)
+
+    except:
         rval = 1
 
+    finally:
+        DeleteDirTree(output_dir)
+
     return rval
 
 if __name__ == '__main__':
     sys.exit(main())
+
index c24e19982b79daa11cfdd13f873b9ab33bc9d70d..97a08d21f35635154c77dfad523b82dac52f9f50 100644 (file)
@@ -162,7 +162,7 @@ def parse_ir_builder(input_file):
                         func_name == 'CreateGEP' or
                         func_name == 'CreateLoad' or
                         func_name == 'CreateMaskedLoad' or
-                        func_name == 'CreateStore' or
+                                               func_name == 'CreateStore' or
                         func_name == 'CreateMaskedStore' or
                         func_name == 'CreateElementUnorderedAtomicMemCpy'):
                         ignore = True
index 2847664a53028a51981b1bb0b108cfb46392d026..28275176022277a48a6693420b45ebaeb29895f1 100644 (file)
@@ -72,8 +72,10 @@ foreach x : [['gen_ar_event.hpp', '--gen_event_hpp'],
     command : [
       prog_python,
       '@INPUT0@',
-      '--proto', '@INPUT1@', '@INPUT2@',
-      '--output-dir', meson.current_build_dir(),
+      '--proto', '@INPUT1@',
+      '--proto_private', '@INPUT2@',
+      '--output', '@OUTPUT@',
+      x[1],
     ],
     depend_files : files(
       join_paths('templates', x[0]),
index 6c592f74461aabedd67459ee771236e341b73152..fe3f261f68093150cd7b7eef89f5b615d145b2fb 100644 (file)
@@ -68,14 +68,11 @@ namespace ArchRast
 #pragma pack(push, 1)
     struct ${name}Data
     {<%
-        fields = protos['events'][name]['fields'] %>
+        field_names = protos['events'][name]['field_names']
+        field_types = protos['events'][name]['field_types'] %>
         // Fields
-        % for i in range(len(fields)):
-            % if fields[i]['size'] > 1:
-        ${fields[i]['type']} ${fields[i]['name']}[${fields[i]['size']}];
-            % else:
-        ${fields[i]['type']} ${fields[i]['name']};
-            % endif
+        % for i in range(len(field_names)):
+        ${field_types[i]} ${field_names[i]};
         % endfor
     };
 #pragma pack(pop)
@@ -85,44 +82,24 @@ namespace ArchRast
     //////////////////////////////////////////////////////////////////////////
     struct ${name} : Event
     {<%
-        fields = protos['events'][name]['fields'] %>
+        field_names = protos['events'][name]['field_names']
+        field_types = protos['events'][name]['field_types'] %>
         ${name}Data data;
 
         // Constructor
         ${name}(
-        % for i in range(len(fields)):
-            % if i < len(fields)-1:
-                % if fields[i]['size'] > 1:
-            ${fields[i]['type']}* ${fields[i]['name']},
-            uint32_t ${fields[i]['name']}_size,
-                % else:
-            ${fields[i]['type']} ${fields[i]['name']},
-                % endif
+        % for i in range(len(field_names)):
+            % if i < len(field_names)-1:
+            ${field_types[i]} ${field_names[i]},
             % endif
-            % if i == len(fields)-1:
-                % if fields[i]['size'] > 1:
-            ${fields[i]['type']}* ${fields[i]['name']},
-            uint32_t ${fields[i]['name']}_size
-                % else:
-            ${fields[i]['type']} ${fields[i]['name']}
-                % endif
+            % if i == len(field_names)-1:
+            ${field_types[i]} ${field_names[i]}
             % endif
         % endfor
         )
         {
-        % for i in range(len(fields)):
-            % if fields[i]['size'] > 1:
-                % if fields[i]['type'] == 'char':
-            // Copy size of string (null-terminated) followed by string into entire buffer
-            SWR_ASSERT(${fields[i]['name']}_size + 1 < ${fields[i]['size']} - sizeof(uint32_t), "String length must be less than size of char buffer - size(uint32_t)!");
-            memcpy(data.${fields[i]['name']}, &${fields[i]['name']}_size, sizeof(uint32_t));
-            strcpy_s(data.${fields[i]['name']} + sizeof(uint32_t), ${fields[i]['name']}_size + 1, ${fields[i]['name']});
-                % else:
-            memcpy(data.${fields[i]['name']}, ${fields[i]['name']}, ${fields[i]['name']}_size);
-                % endif
-            % else:
-            data.${fields[i]['name']} = ${fields[i]['name']};
-            % endif
+        % for i in range(len(field_names)):
+            data.${field_names[i]} = ${field_names[i]};
         % endfor
         }
 
index ec905505dc413cd70182dd3aa46e33d4047d4051..f25d834725c05955088a238d82fdac02e3f6944b 100644 (file)
@@ -559,7 +559,7 @@ static SIMDINLINE Float SIMDCALL
 //
 //      SELECT4(src, control) {
 //          CASE(control[1:0])
-//              0 : tmp[127:0] : = src[127:0]
+//              0:     tmp[127:0] : = src[127:0]
 //              1 : tmp[127:0] : = src[255:128]
 //              2 : tmp[127:0] : = src[383:256]
 //              3 : tmp[127:0] : = src[511:384]