1
0
mirror of https://github.com/Yours3lf/rpi-vk-driver.git synced 2024-12-01 13:24:20 +01:00

fixed more of thread switch detection

This commit is contained in:
Unknown 2019-09-20 11:04:58 +01:00
parent 16751c4dad
commit 6dc7a85aa2
2 changed files with 8 additions and 7 deletions

View File

@ -119,11 +119,11 @@ typedef enum {
static const char *qpu_sig_bits_str[] = {
[QPU_SIG_SW_BREAKPOINT] = "sig_brk",
[QPU_SIG_NONE] = "sig_none",
[QPU_SIG_THREAD_SWITCH] = "sig_switch",
[QPU_SIG_THREAD_SWITCH] = "sig_thread_switch",
[QPU_SIG_PROG_END] = "sig_end",
[QPU_SIG_WAIT_FOR_SCOREBOARD] = "sig_wait_score",
[QPU_SIG_SCOREBOARD_UNLOCK] = "sig_unlock_score",
[QPU_SIG_LAST_THREAD_SWITCH] = "sig_thread_switch",
[QPU_SIG_LAST_THREAD_SWITCH] = "sig_last_thread_switch",
[QPU_SIG_COVERAGE_LOAD] = "sig_coverage_load",
[QPU_SIG_COLOR_LOAD] = "sig_color_load",
[QPU_SIG_COLOR_LOAD_END] = "sig_color_load_end",

View File

@ -51,15 +51,16 @@ VkResult vkCreateShaderModuleFromRpiAssemblyEXT(VkDevice device, VkRpiShaderModu
shader->bos[c] = vc4_bo_alloc_shader(controlFd, instructions, &size);
//TODO if debug...
for(uint64_t c = 0; c < numInstructions; ++c)
for(uint64_t d = 0; d < numInstructions; ++d)
{
printf("%#llx ", instructions[c]);
disassemble_qpu_asm(instructions[c]);
printf("%#llx ", instructions[d]);
disassemble_qpu_asm(instructions[d]);
}
for(uint64_t c = 0; c < numInstructions; ++c)
for(uint64_t d = 0; d < numInstructions; ++d)
{
if((instructions[c] & (0xfll << 60)) == (2ll << 60))
uint64_t s = (instructions[d] & (0xfll << 60)) >> 60;
if(s == 2ll)
{
shader->hasThreadSwitch = 1;
break;