@@ -203,9 +203,9 @@ struct EsFunctionAnnotation : FunctionAnnotation {
203
203
};
204
204
205
205
void * getComponentData ( const string & name ) {
206
- if (name == " pos" ) return g_pos. data ();
207
- else if (name == " vel" ) return g_vel. data ();
208
- else if (name == " velBoxed" ) return g_velBoxed. data ();
206
+ if (name == " pos" ) return g_pos-> data ();
207
+ else if (name == " vel" ) return g_vel-> data ();
208
+ else if (name == " velBoxed" ) return g_velBoxed-> data ();
209
209
else return nullptr ;
210
210
}
211
211
@@ -359,7 +359,7 @@ void aotEsRunBlock ( TextWriter & ss, EsAttributeTable * table, const vector<EsC
359
359
});
360
360
if ( a ) ss << " ," ;
361
361
if ( it != components.end () ) {
362
- ss << " g_" << table->attributes [a].name << " [i]" ;
362
+ ss << " (* g_" << table->attributes [a].name << " ) [i]" ;
363
363
} else {
364
364
vec4f def = table->attributes [a].def ;
365
365
const char * def_s = table->attributes [a].def_s ;
@@ -403,13 +403,13 @@ struct QueryEsFunctionAnnotation : FunctionAnnotation {
403
403
auto mb = static_pointer_cast<ExprMakeBlock>(call->arguments [0 ]);
404
404
auto closure = static_pointer_cast<ExprBlock>(mb->block );
405
405
EsAttributeTable * table = (EsAttributeTable *) closure->annotationData ;
406
- return aotEsRunBlockName (table, g_components);
406
+ return aotEsRunBlockName (table, * g_components);
407
407
}
408
408
virtual void aotPrefix ( TextWriter & ss, ExprCallFunc * call ) override {
409
409
auto mb = static_pointer_cast<ExprMakeBlock>(call->arguments [0 ]);
410
410
auto closure = static_pointer_cast<ExprBlock>(mb->block );
411
411
EsAttributeTable * table = (EsAttributeTable *) closure->annotationData ;
412
- aotEsRunBlock (ss, table, g_components);
412
+ aotEsRunBlock (ss, table, * g_components);
413
413
}
414
414
virtual bool verifyCall ( ExprCallFunc * call, const AnnotationArgumentList &, const AnnotationArgumentList &, string & err ) override {
415
415
auto brt = call->arguments [0 ]->type ->firstType ;
@@ -441,41 +441,36 @@ struct QueryEsFunctionAnnotation : FunctionAnnotation {
441
441
}
442
442
};
443
443
444
- DAS_THREAD_LOCAL (vector<float3>) g_pos;
445
- DAS_THREAD_LOCAL (vector<float3>) g_vel;
446
- DAS_THREAD_LOCAL (vector<float3 *>) g_velBoxed;
447
- DAS_THREAD_LOCAL (vector<EsComponent>) g_components;
448
-
449
444
template <typename TT>
450
445
void releaseVec (vector<TT>& vec) {
451
446
vector<TT> temp;
452
447
vec.swap (temp);
453
448
}
454
449
455
450
void releaseEsComponents () {
456
- releaseVec (g_pos);
457
- releaseVec (g_vel);
458
- releaseVec (g_velBoxed);
451
+ releaseVec (* g_pos);
452
+ releaseVec (* g_vel);
453
+ releaseVec (* g_velBoxed);
459
454
}
460
455
461
456
void initEsComponents () {
462
457
// build components
463
- g_pos. resize (g_total);
464
- g_vel. resize (g_total);
465
- g_velBoxed. resize (g_total);
458
+ g_pos-> resize (g_total);
459
+ g_vel-> resize (g_total);
460
+ g_velBoxed-> resize (g_total);
466
461
float f = 1 .0f ;
467
462
for (int i = 0 ; i != g_total; ++i, ++f) {
468
- g_pos[i] = { f, f + 1 , f + 2 };
469
- g_vel[i] = { 1 .0f , 2 .0f , 3 .0f };
470
- g_velBoxed[i] = &g_vel[i];
463
+ (* g_pos) [i] = { f, f + 1 , f + 2 };
464
+ (* g_vel) [i] = { 1 .0f , 2 .0f , 3 .0f };
465
+ (* g_velBoxed) [i] = &(* g_vel) [i];
471
466
}
472
467
}
473
468
474
469
void initEsComponentsTable () {
475
- g_components. clear ();
476
- g_components. emplace_back (" pos" , sizeof (float3), sizeof (float3), false );
477
- g_components. emplace_back (" vel" , sizeof (float3), sizeof (float3), false );
478
- g_components. emplace_back (" velBoxed" , sizeof (float3), sizeof (float3 *), true );
470
+ g_components-> clear ();
471
+ g_components-> emplace_back (" pos" , sizeof (float3), sizeof (float3), false );
472
+ g_components-> emplace_back (" vel" , sizeof (float3), sizeof (float3), false );
473
+ g_components-> emplace_back (" velBoxed" , sizeof (float3), sizeof (float3 *), true );
479
474
}
480
475
481
476
void verifyEsComponents (Context * context, LineInfoArg * at) {
@@ -488,9 +483,9 @@ void verifyEsComponents(Context * context, LineInfoArg * at) {
488
483
npos.x = apos.x + avel.x * t;
489
484
npos.y = apos.y + avel.y * t;
490
485
npos.z = apos.z + avel.z * t;
491
- if ( g_pos[i].x !=npos.x || g_pos[i].y !=npos.y || g_pos[i].z !=npos.z ) {
486
+ if ( (* g_pos) [i].x !=npos.x || (* g_pos) [i].y !=npos.y || (* g_pos) [i].z !=npos.z ) {
492
487
TextWriter twrt;
493
- twrt << " g_pos[" << i << " ] (" << g_pos[i] << " ) != npos (" << npos << " )\n " ;
488
+ twrt << " g_pos[" << i << " ] (" << (* g_pos) [i] << " ) != npos (" << npos << " )\n " ;
494
489
context->throw_error_at (at, " verifyEsComponents failed, %s\n " , twrt.str ().c_str ());
495
490
}
496
491
}
@@ -505,14 +500,14 @@ void testEsUpdate ( char * pass, Context * ctx, LineInfoArg * at ) {
505
500
}
506
501
for ( auto & tab : EsGroupData::THAT->g_esPassTable ) {
507
502
if ( tab->pass ==pass ) {
508
- EsRunPass (*ctx, *tab, g_components, g_total);
503
+ EsRunPass (*ctx, *tab, * g_components, g_total);
509
504
}
510
505
}
511
506
}
512
507
513
508
uint32_t queryEs (const Block & block, Context * context, LineInfoArg * at) {
514
509
das_stack_prologue guard (context,sizeof (Prologue), " queryEs " DAS_FILE_LINE);
515
- return EsRunBlock (*context, at, block, g_components, g_total);
510
+ return EsRunBlock (*context, at, block, * g_components, g_total);
516
511
}
517
512
518
513
#if DAS_USE_EASTL
0 commit comments