(self, controller: rd.ReplayController, mesh: rd.MeshFormat, payload: rd.ConstantBlock, task: int = 0)
| 1000 | log.success(f"Pixel shader debugging at {x},{y} was successful") |
| 1001 | |
| 1002 | def decode_task_data(self, controller: rd.ReplayController, mesh: rd.MeshFormat, payload: rd.ConstantBlock, task: int = 0): |
| 1003 | |
| 1004 | begin = mesh.vertexByteOffset + mesh.vertexByteStride * task |
| 1005 | end = min(begin + mesh.vertexByteSize, 0xffffffffffffffff) |
| 1006 | buffer_data = controller.GetBufferData(mesh.vertexResourceId, begin, end -begin) |
| 1007 | |
| 1008 | ret = [] |
| 1009 | offset = 0 |
| 1010 | for var in payload.variables: |
| 1011 | var_data = {} |
| 1012 | var_data[var.name] = [] |
| 1013 | if (var.type.baseType == rd.VarType.Struct): |
| 1014 | structSize = 0 |
| 1015 | structSize += var.type.members[0].byteOffset |
| 1016 | for member in var.type.members: |
| 1017 | byteWidth = rd.VarTypeByteSize(member.type.baseType) |
| 1018 | structSize += byteWidth * member.type.columns * member.type.elements |
| 1019 | skipBytes = structSize * var.type.elements |
| 1020 | log.print(f"Skipping struct variable '{var.name}' Size {skipBytes}") |
| 1021 | offset += skipBytes |
| 1022 | continue |
| 1023 | # This is not complete to decode all possible payload layouts |
| 1024 | for i in range(var.type.elements): |
| 1025 | format = rd.ResourceFormat() |
| 1026 | format.compByteWidth = rd.VarTypeByteSize(var.type.baseType) |
| 1027 | format.compCount = var.type.columns |
| 1028 | format.compType = rd.VarTypeCompType(var.type.baseType) |
| 1029 | format.type = rd.ResourceFormatType.Regular |
| 1030 | |
| 1031 | data = analyse.unpack_data(format, buffer_data, offset) |
| 1032 | if data: |
| 1033 | var_data[var.name] += data |
| 1034 | offset += format.compByteWidth * format.compCount |
| 1035 | ret.append(var_data) |
| 1036 | |
| 1037 | return ret |
| 1038 | |
| 1039 | def get_task_data(self, action: rd.ActionDescription): |
| 1040 | mesh: rd.MeshFormat = self.controller.GetPostVSData(0, 0, rd.MeshDataStage.TaskOut) |
no test coverage detected