Browse Source

make reference counting threadsafe

Kolja Strohm 8 months ago
parent
commit
bd55e237b2
6 changed files with 87 additions and 76 deletions
  1. 20 20
      DX12PixelShader.h
  2. 17 17
      DX12VertexShader.h
  3. 13 3
      ReferenceCounter.cpp
  4. 1 0
      ReferenceCounter.h
  5. 21 21
      UIPixelShader.h
  6. 15 15
      UIVertexShader.h

+ 20 - 20
DX12PixelShader.h

@@ -92,10 +92,10 @@ ret
 
 const BYTE DX12PixelShaderBytes[] =
 {
-     68,  88,  66,  67, 125, 207, 
-     92, 130,  74,  42, 223,  25, 
-      9,  80, 223,  25,  71,  33, 
-     30, 180,   1,   0,   0,   0, 
+     68,  88,  66,  67,  87, 150, 
+    218, 241,  91, 175, 101,  96, 
+    231, 218,  37, 203,  53, 250, 
+    161, 119,   1,   0,   0,   0, 
     184,  91,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
      36,   2,   0,   0, 188,   2, 
@@ -763,11 +763,11 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0, 148,  46, 
-     49,   1, 206, 156, 223, 100, 
-      1,   0,   0,   0, 163, 206, 
-    108,  96,  46,  58, 121,  72, 
-    190, 254,  25, 194, 153, 239, 
-    192, 179,   0,   0,   0,   0, 
+     49,   1, 188, 137, 224, 100, 
+      1,   0,   0,   0, 164, 230, 
+    191, 253, 229, 164,  16,  71, 
+    138, 212,  70,  57, 113,  52, 
+      7, 224,   0,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   1,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -938,9 +938,9 @@ const BYTE DX12PixelShaderBytes[] =
       3,   0, 242,  56,   1,   0, 
      43, 236,   3,   0,  28,  19, 
       2,   0,  65,  36,   1,   0, 
-    236, 179,   1,   0,  72,  48, 
+    236, 179,   1,   0,  46,  81, 
       1,   0, 125,  10,   2,   0, 
-    125, 181,   2,   0,  86,  28, 
+    125, 181,   2,   0, 100,  27, 
       1,   0, 193,  33,   3,   0, 
      65, 185,   2,   0, 140, 239, 
       1,   0, 246,  49,   0,   0, 
@@ -1788,7 +1788,7 @@ const BYTE DX12PixelShaderBytes[] =
     117, 114, 101,  50,  68,  32, 
     115, 104,  97, 100,  27, 226, 
      48,   1, 128,   0,   0,   0, 
-    142,  16,  75, 101, 241, 209, 
+      9, 131, 236, 157, 126, 210, 
     217,   1,   1,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2348,14 +2348,14 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,  23,   0,   1,   0, 
       5,  16,   0,   0,  14,   0, 
      23,  21,   0,  16,   0,   0, 
-      3,   2, 112, 255,   0,   0, 
+      3,   2,  16,   7,   0,   0, 
     242, 241,  10,   0,  24,  21, 
       8,  16,   0,   0,   1,   0, 
       1,   0,  10,   0,  24,  21, 
       9,  16,   0,   0,   1,   0, 
       0,   2,  14,   0,  23,  21, 
       0,   0,   0,   0,  10,   2, 
-    112, 255,   0,   0, 242, 241, 
+     16,   7,   0,   0, 242, 241, 
      10,   0,  24,  21,  11,  16, 
       0,   0,   1,   0,   1,   0, 
      10,   0,  24,  21,  12,  16, 
@@ -3408,11 +3408,11 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-    148,  46,  49,   1, 206, 156, 
-    223, 100,   1,   0,   0,   0, 
-    163, 206, 108,  96,  46,  58, 
-    121,  72, 190, 254,  25, 194, 
-    153, 239, 192, 179, 128,   0, 
+    148,  46,  49,   1, 188, 137, 
+    224, 100,   1,   0,   0,   0, 
+    164, 230, 191, 253, 229, 164, 
+     16,  71, 138, 212,  70,  57, 
+    113,  52,   7, 224, 128,   0, 
       0,   0,  47,  76, 105, 110, 
     107,  73, 110, 102, 111,   0, 
      47, 110,  97, 109, 101, 115, 
@@ -3512,7 +3512,7 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   2,   0,   9,   0, 
     220,   4,   0,   0,   0,   0, 
       0,   0, 156,   1,   0,   0, 
-      1,   0,  57, 243,   0,   0, 
+      1,   0, 185, 166,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0, 109,  97, 
     105, 110,   0, 110, 111, 110, 

+ 17 - 17
DX12VertexShader.h

@@ -131,10 +131,10 @@ ret
 
 const BYTE DX12VertexShaderBytes[] =
 {
-     68,  88,  66,  67,   8,  64, 
-    180, 236,  44, 154,  31, 218, 
-    200, 114, 224, 230,  93, 240, 
-     47, 157,   1,   0,   0,   0, 
+     68,  88,  66,  67,  21, 227, 
+    118,  99,  54, 105, 241, 147, 
+    153,  71, 150, 173, 127,  75, 
+    140,  28,   1,   0,   0,   0, 
     144,  78,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
     124,   2,   0,   0,  52,   3, 
@@ -923,11 +923,11 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-    148,  46,  49,   1, 206, 156, 
-    223, 100,   1,   0,   0,   0, 
-    172, 175, 101, 145, 247, 163, 
-    249,  76, 147,  53, 223,  67, 
-      6,  58, 134, 159,   0,   0, 
+    148,  46,  49,   1, 188, 137, 
+    224, 100,   1,   0,   0,   0, 
+    152,  48, 225,  12, 118, 105, 
+     95,  65, 161, 174, 168, 171, 
+     66,  24, 218, 144,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       1,   0,   0,   0,   1,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -1103,7 +1103,7 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0, 103, 159,   1,   0, 
     179, 120,   1,   0, 238,  97, 
       2,   0,  90,  28,   0,   0, 
-    234, 210,   2,   0,  53, 174, 
+    144, 227,   1,   0,  53, 174, 
       3,   0, 206,  21,   0,   0, 
     193, 205,   3,   0, 207, 193, 
       1,   0,  62,   3,   3,   0, 
@@ -1607,7 +1607,7 @@ const BYTE DX12VertexShaderBytes[] =
      97, 109, 101, 114,  97,  13, 
      10, 115, 116, 114,  27, 226, 
      48,   1, 128,   0,   0,   0, 
-    193,  78,  98, 101, 241, 209, 
+     20, 178,   3, 158, 126, 210, 
     217,   1,   1,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2125,7 +2125,7 @@ const BYTE DX12VertexShaderBytes[] =
      24,  21,  12,  16,   0,   0, 
       1,   0,   1,   0,  14,   0, 
      23,  21,  13,  16,   0,   0, 
-     36,   2,  64,  52,   0,   0, 
+     36,   2, 224, 146,   0,   0, 
     242, 241,  10,   0,  24,  21, 
      14,  16,   0,   0,   1,   0, 
       0,   2,  18,   0,  22,  21, 
@@ -3057,10 +3057,10 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0, 148,  46,  49,   1, 
-    206, 156, 223, 100,   1,   0, 
-      0,   0, 172, 175, 101, 145, 
-    247, 163, 249,  76, 147,  53, 
-    223,  67,   6,  58, 134, 159, 
+    188, 137, 224, 100,   1,   0, 
+      0,   0, 152,  48, 225,  12, 
+    118, 105,  95,  65, 161, 174, 
+    168, 171,  66,  24, 218, 144, 
     129,   0,   0,   0,  47,  76, 
     105, 110, 107,  73, 110, 102, 
     111,   0,  47, 110,  97, 109, 
@@ -3160,7 +3160,7 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   2,   0, 
       9,   0, 156,   5,   0,   0, 
       0,   0,   0,   0, 236,   2, 
-      0,   0,   1,   0,   7,  52, 
+      0,   0,   1,   0, 184, 146, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
     109,  97, 105, 110,   0, 110, 

+ 13 - 3
ReferenceCounter.cpp

@@ -4,10 +4,15 @@ using namespace Framework;
 
 ReferenceCounter::ReferenceCounter()
 {
+    cs = new CRITICAL_SECTION();
+    InitializeCriticalSection(cs);
     ref = 1;
 }
 
-ReferenceCounter::~ReferenceCounter() {}
+ReferenceCounter::~ReferenceCounter() {
+    DeleteCriticalSection(cs);
+    delete cs;
+}
 
 int ReferenceCounter::getReferenceCount() const
 {
@@ -16,12 +21,17 @@ int ReferenceCounter::getReferenceCount() const
 
 ReferenceCounter* ReferenceCounter::getThis()
 {
-    ref++;
+    EnterCriticalSection(cs);
+    ++ref;
+    LeaveCriticalSection(cs);
     return this;
 }
 
 void* ReferenceCounter::release()
 {
-    if (!--ref) delete this;
+    EnterCriticalSection(cs);
+    --ref;
+    LeaveCriticalSection(cs);
+    if (!ref) delete this;
     return 0;
 }

+ 1 - 0
ReferenceCounter.h

@@ -7,6 +7,7 @@ namespace Framework
     class ReferenceCounter
     {
     private:
+        CRITICAL_SECTION *cs;
         int ref;
 
     public:

+ 21 - 21
UIPixelShader.h

@@ -352,10 +352,10 @@ ret
 
 const BYTE UIPixelShader[] =
 {
-     68,  88,  66,  67, 141, 119, 
-      3,  70,  20, 233, 122,  96, 
-     32, 187, 229, 236,  38, 170, 
-    135,  57,   1,   0,   0,   0, 
+     68,  88,  66,  67,  76,  12, 
+    125, 142,  62, 252, 125, 113, 
+    173, 246, 194, 216, 149,  45, 
+     48,  41,   1,   0,   0,   0, 
      12, 134,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
     140,   6,   0,   0,  28,   7, 
@@ -1805,11 +1805,11 @@ const BYTE UIPixelShader[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0, 148,  46, 
-     49,   1, 206, 156, 223, 100, 
-      1,   0,   0,   0,  25,   6, 
-    117, 115, 201, 218, 227,  64, 
-    181, 201,  73, 246, 139, 241, 
-     23, 100,   0,   0,   0,   0, 
+     49,   1, 188, 137, 224, 100, 
+      1,   0,   0,   0,  50, 192, 
+    233, 209,  88,  60, 185,  73, 
+    157,  16, 243,  30,  20,  90, 
+    193, 110,   0,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   1,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -1980,9 +1980,9 @@ const BYTE UIPixelShader[] =
       3,   0, 242,  56,   1,   0, 
      43, 236,   3,   0,  28,  19, 
       2,   0,  65,  36,   1,   0, 
-    236, 179,   1,   0,  72,  48, 
+    236, 179,   1,   0,  46,  81, 
       1,   0, 125,  10,   2,   0, 
-    125, 181,   2,   0,  86,  28, 
+    125, 181,   2,   0, 100,  27, 
       1,   0, 193,  33,   3,   0, 
      65, 185,   2,   0,   9, 241, 
       2,   0, 146, 230,   3,   0, 
@@ -3000,8 +3000,8 @@ const BYTE UIPixelShader[] =
      84, 101, 120, 116, 117, 114, 
     101,  50,  68,  32, 115, 104, 
      97, 100,  27, 226,  48,   1, 
-    128,   0,   0,   0,  12,  10, 
-    117, 101, 241, 209, 217,   1, 
+    128,   0,   0,   0, 180, 232, 
+     22, 158, 126, 210, 217,   1, 
       1,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -4243,14 +4243,14 @@ const BYTE UIPixelShader[] =
       6,  16,   0,   0,  23,   0, 
       1,   0,   5,  16,   0,   0, 
      14,   0,  23,  21,   0,  16, 
-      0,   0,   3,   2, 112, 255, 
+      0,   0,   3,   2,  16,   7, 
       0,   0, 242, 241,  10,   0, 
      24,  21,   8,  16,   0,   0, 
       1,   0,   1,   0,  10,   0, 
      24,  21,   9,  16,   0,   0, 
       1,   0,   0,   2,  14,   0, 
      23,  21,   0,   0,   0,   0, 
-     10,   2, 112, 255,   0,   0, 
+     10,   2,  16,   7,   0,   0, 
     242, 241,  10,   0,  24,  21, 
      11,  16,   0,   0,   1,   0, 
       1,   0,  10,   0,  24,  21, 
@@ -5474,11 +5474,11 @@ const BYTE UIPixelShader[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-    148,  46,  49,   1, 206, 156, 
-    223, 100,   1,   0,   0,   0, 
-     25,   6, 117, 115, 201, 218, 
-    227,  64, 181, 201,  73, 246, 
-    139, 241,  23, 100, 128,   0, 
+    148,  46,  49,   1, 188, 137, 
+    224, 100,   1,   0,   0,   0, 
+     50, 192, 233, 209,  88,  60, 
+    185,  73, 157,  16, 243,  30, 
+     20,  90, 193, 110, 128,   0, 
       0,   0,  47,  76, 105, 110, 
     107,  73, 110, 102, 111,   0, 
      47, 110,  97, 109, 101, 115, 
@@ -5578,7 +5578,7 @@ const BYTE UIPixelShader[] =
       0,   0,   2,   0,   9,   0, 
     204,   8,   0,   0,   0,   0, 
       0,   0, 164,  14,   0,   0, 
-      1,   0,  18, 248,   0,   0, 
+      1,   0,  40, 172,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,  84, 101, 
     120, 116, 117, 114, 101,  80, 

+ 15 - 15
UIVertexShader.h

@@ -121,10 +121,10 @@ ret
 
 const BYTE UIVertexShader[] =
 {
-     68,  88,  66,  67, 235, 188, 
-    126, 227, 239, 194, 170,  28, 
-      0,  92,  44,  29, 209,  78, 
-    102,   6,   1,   0,   0,   0, 
+     68,  88,  66,  67,  15, 181, 
+     91,  50, 181,  37, 127, 220, 
+    254,  85, 210, 142,  71, 248, 
+    110, 136,   1,   0,   0,   0, 
     204,  77,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
      20,   2,   0,   0, 204,   2, 
@@ -881,10 +881,10 @@ const BYTE UIVertexShader[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0, 148,  46,  49,   1, 
-    206, 156, 223, 100,   1,   0, 
-      0,   0,  40,   0, 195, 146, 
-    155, 118,   6,  79, 151, 107, 
-    150,  47, 174, 145, 110, 208, 
+    188, 137, 224, 100,   1,   0, 
+      0,   0, 137, 197,  97,  47, 
+    110, 106,  72,  69, 185,  42, 
+     78,  62, 145,  16,   6, 136, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   1,   0,   0,   0, 
       1,   0,   0,   0,   0,   0, 
@@ -1564,8 +1564,8 @@ const BYTE UIVertexShader[] =
      13,  10,  47,  47,  32,  84, 
      89,  80,  69,  68,  69,  70, 
      27, 226,  48,   1, 128,   0, 
-      0,   0,   5,   2, 148, 101, 
-    241, 209, 217,   1,   1,   0, 
+      0,   0,   4, 157,  54, 158, 
+    126, 210, 217,   1,   1,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2929,10 +2929,10 @@ const BYTE UIVertexShader[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0, 148,  46,  49,   1, 
-    206, 156, 223, 100,   1,   0, 
-      0,   0,  40,   0, 195, 146, 
-    155, 118,   6,  79, 151, 107, 
-    150,  47, 174, 145, 110, 208, 
+    188, 137, 224, 100,   1,   0, 
+      0,   0, 137, 197,  97,  47, 
+    110, 106,  72,  69, 185,  42, 
+     78,  62, 145,  16,   6, 136, 
     129,   0,   0,   0,  47,  76, 
     105, 110, 107,  73, 110, 102, 
     111,   0,  47, 110,  97, 109, 
@@ -3032,7 +3032,7 @@ const BYTE UIVertexShader[] =
       0,   0,   0,   0,   2,   0, 
       9,   0, 104,   5,   0,   0, 
       0,   0,   0,   0, 236,   2, 
-      0,   0,   1,   0, 188, 164, 
+      0,   0,   1,   0, 249, 116, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
      84, 101, 120, 116, 117, 114,