| 1818 | |
| 1819 | |
| 1820 | int main(void) |
| 1821 | { |
| 1822 | |
| 1823 | ShaderInfo shaderInfo; |
| 1824 | parseShader(&shaderInfo, s_vex_vv); |
| 1825 | |
| 1826 | void *shaderBinary = malloc(shaderInfo.m_gpuShaderCodeSize); |
| 1827 | void *shaderHeader = malloc(shaderInfo.m_vsShader->computeSize()); |
| 1828 | |
| 1829 | memcpy(shaderBinary, shaderInfo.m_gpuShaderCode, shaderInfo.m_gpuShaderCodeSize); |
| 1830 | memcpy(shaderHeader, shaderInfo.m_vsShader, shaderInfo.m_vsShader->computeSize()); |
| 1831 | |
| 1832 | ShaderBinaryInfo* binInfo = findShaderBinInfo((uint8_t*)shaderBinary); |
| 1833 | |
| 1834 | InputResourceOffsets table; |
| 1835 | generateInputResourceOffsetTable(&table, binInfo); |
| 1836 | |
| 1837 | size_t codeLength = binInfo->m_length + sizeof(ShaderBinaryInfo); |
| 1838 | |
| 1839 | VsShader* m_shader = static_cast<VsShader*>(shaderHeader); |
| 1840 | m_shader->patchShaderGpuAddress(shaderBinary); |
| 1841 | |
| 1842 | VsShader* vertexShader = m_shader; |
| 1843 | FetchShaderBuildState fb = { 0 }; |
| 1844 | generateVsFetchShaderBuildState(&fb, (const VsStageRegisters*)&vertexShader->m_vsStageRegisters, vertexShader->m_numInputSemantics, nullptr, 0, fb.m_vertexBaseUsgpr, fb.m_instanceBaseUsgpr); |
| 1845 | |
| 1846 | const InputUsageSlot *inputUsageSlots = vertexShader->getInputUsageSlotTable(); |
| 1847 | fb.m_numInputSemantics = vertexShader->m_numInputSemantics; |
| 1848 | fb.m_inputSemantics = vertexShader->getInputSemanticTable(); |
| 1849 | fb.m_numInputUsageSlots = vertexShader->m_common.m_numInputUsageSlots; |
| 1850 | fb.m_inputUsageSlots = inputUsageSlots; |
| 1851 | fb.m_numElementsInRemapTable = 0; |
| 1852 | fb.m_semanticsRemapTable = 0; |
| 1853 | |
| 1854 | uint32_t *fs = (uint32_t *)malloc(fb.m_fetchShaderBufferSize); |
| 1855 | generateFetchShader(fs, &fb); |
| 1856 | |
| 1857 | std::ofstream fout("fetch_shader.bin"); |
| 1858 | fout.write((char*)fs, fb.m_fetchShaderBufferSize); |
| 1859 | fout.close(); |
| 1860 | |
| 1861 | const InputUsageSlot* slot = m_shader->getInputUsageSlotTable(); |
| 1862 | const VertexInputSemantic* inputSema = m_shader->getInputSemanticTable(); |
| 1863 | const VertexExportSemantic* expSema = m_shader->getExportSemanticTable(); |
| 1864 | |
| 1865 | // |
| 1866 | //ShaderInfo psShaderInfo; |
| 1867 | //parseShader(&psShaderInfo, s_pix_p); |
| 1868 | |
| 1869 | //void *psshaderBinary = malloc(psShaderInfo.m_gpuShaderCodeSize); |
| 1870 | //void *psshaderHeader = malloc(psShaderInfo.m_psShader->computeSize()); |
| 1871 | |
| 1872 | //memcpy(psshaderBinary, psShaderInfo.m_gpuS haderCode, psShaderInfo.m_gpuShaderCodeSize); |
| 1873 | //memcpy(psshaderHeader, psShaderInfo.m_psShader, psShaderInfo.m_psShader->computeSize()); |
| 1874 | |
| 1875 | //ShaderBinaryInfo* psbinInfo = findShaderBinInfo((uint8_t*)psshaderBinary); |
| 1876 | |
| 1877 | //InputResourceOffsets pstable; |
nothing calls this directly
no test coverage detected