This commit is contained in:
2025-03-08 10:37:41 +01:00
parent 8fd62b365b
commit 05a15e2bb4
3 changed files with 8 additions and 10 deletions

View File

@@ -53,7 +53,6 @@ static void SoftCommandDispatch(SoftCommand* cmd)
thrd_t* invocations = (thrd_t*)malloc(invocations_count * sizeof(thrd_t)); thrd_t* invocations = (thrd_t*)malloc(invocations_count * sizeof(thrd_t));
PULSE_CHECK_PTR(invocations); PULSE_CHECK_PTR(invocations);
printf("test2 %d %d\n", invocations_count, local_size);
uint32_t invocation_index = 0; uint32_t invocation_index = 0;
for(uint32_t z = 0; z < cmd->Dispatch.groupcount_z; z++) for(uint32_t z = 0; z < cmd->Dispatch.groupcount_z; z++)
{ {
@@ -63,21 +62,15 @@ static void SoftCommandDispatch(SoftCommand* cmd)
{ {
for(uint32_t i = 0; i < local_size; i++) for(uint32_t i = 0; i < local_size; i++)
{ {
printf("\r%d", invocation_index);
thrd_create(&invocations[invocation_index], SoftCommandDispatchCore, soft_pipeline); thrd_create(&invocations[invocation_index], SoftCommandDispatchCore, soft_pipeline);
thrd_join(invocations[invocation_index], NULL);
invocation_index++; invocation_index++;
} }
} }
} }
} }
printf("\ntest %d %d %d\n", invocation_index, invocations_count, local_size);
for(uint32_t i = 0; i < invocations_count; i++) for(uint32_t i = 0; i < invocations_count; i++)
{ thrd_join(invocations[i], PULSE_NULLPTR);
printf("test %d\n", i);
int res;
thrd_join(invocations[i], &res);
PULSE_UNUSED(res);
}
free(invocations); free(invocations);
} }

View File

@@ -34,6 +34,10 @@ PulseComputePipeline SoftCreateComputePipeline(PulseDevice device, const PulseCo
soft_pipeline->entry_point = calloc(1, strlen(info->entrypoint)); soft_pipeline->entry_point = calloc(1, strlen(info->entrypoint));
strcpy((char*)soft_pipeline->entry_point, info->entrypoint); strcpy((char*)soft_pipeline->entry_point, info->entrypoint);
// Create dummy state to retrieve informations from the spirv
spvm_state_t state = spvm_state_create(soft_pipeline->program);
spvm_state_delete(state);
pipeline->driver_data = soft_pipeline; pipeline->driver_data = soft_pipeline;
if(PULSE_IS_BACKEND_HIGH_LEVEL_DEBUG(device->backend)) if(PULSE_IS_BACKEND_HIGH_LEVEL_DEBUG(device->backend))
@@ -52,6 +56,7 @@ void SoftDestroyComputePipeline(PulseDevice device, PulseComputePipeline pipelin
PULSE_UNUSED(device); PULSE_UNUSED(device);
SoftComputePipeline* soft_pipeline = SOFT_RETRIEVE_DRIVER_DATA_AS(pipeline, SoftComputePipeline*); SoftComputePipeline* soft_pipeline = SOFT_RETRIEVE_DRIVER_DATA_AS(pipeline, SoftComputePipeline*);
spvm_program_delete(soft_pipeline->program); spvm_program_delete(soft_pipeline->program);
free(soft_pipeline->entry_point);
free(soft_pipeline); free(soft_pipeline);
if(PULSE_IS_BACKEND_HIGH_LEVEL_DEBUG(device->backend)) if(PULSE_IS_BACKEND_HIGH_LEVEL_DEBUG(device->backend))
PulseLogInfoFmt(device->backend, "(Soft) destroyed compute pipeline %p", pipeline); PulseLogInfoFmt(device->backend, "(Soft) destroyed compute pipeline %p", pipeline);