Merge pull request #1539 from lioncash/const
video_core: Don't cast away const
This commit is contained in:
		| @@ -234,7 +234,7 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { | |||||||
|  |  | ||||||
|             const auto& index_info = regs.index_array; |             const auto& index_info = regs.index_array; | ||||||
|             const u8* index_address_8 = Memory::GetPhysicalPointer(base_address + index_info.offset); |             const u8* index_address_8 = Memory::GetPhysicalPointer(base_address + index_info.offset); | ||||||
|             const u16* index_address_16 = (u16*)index_address_8; |             const u16* index_address_16 = reinterpret_cast<const u16*>(index_address_8); | ||||||
|             bool index_u16 = index_info.format != 0; |             bool index_u16 = index_info.format != 0; | ||||||
|  |  | ||||||
| #if PICA_DUMP_GEOMETRY | #if PICA_DUMP_GEOMETRY | ||||||
| @@ -345,10 +345,11 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { | |||||||
|                                         : (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::SHORT) ? 2 : 1); |                                         : (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::SHORT) ? 2 : 1); | ||||||
|                                 } |                                 } | ||||||
|  |  | ||||||
|                                 const float srcval = (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::BYTE) ? *(s8*)srcdata : |                                 const float srcval = | ||||||
|                                     (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::UBYTE) ? *(u8*)srcdata : |                                     (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::BYTE)  ? *reinterpret_cast<const s8*>(srcdata) : | ||||||
|                                     (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::SHORT) ? *(s16*)srcdata : |                                     (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::UBYTE) ? *reinterpret_cast<const u8*>(srcdata) : | ||||||
|                                     *(float*)srcdata; |                                     (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::SHORT) ? *reinterpret_cast<const s16*>(srcdata) : | ||||||
|  |                                     *reinterpret_cast<const float*>(srcdata); | ||||||
|  |  | ||||||
|                                 input.attr[i][comp] = float24::FromFloat32(srcval); |                                 input.attr[i][comp] = float24::FromFloat32(srcval); | ||||||
|                                 LOG_TRACE(HW_GPU, "Loaded component %x of attribute %x for vertex %x (index %x) from 0x%08x + 0x%08x + 0x%04x: %f", |                                 LOG_TRACE(HW_GPU, "Loaded component %x of attribute %x for vertex %x (index %x) from 0x%08x + 0x%08x + 0x%04x: %f", | ||||||
|   | |||||||
| @@ -117,13 +117,13 @@ void GeometryDumper::Dump() { | |||||||
| void DumpShader(const std::string& filename, const Regs::ShaderConfig& config, const Shader::ShaderSetup& setup, const Regs::VSOutputAttributes* output_attributes) | void DumpShader(const std::string& filename, const Regs::ShaderConfig& config, const Shader::ShaderSetup& setup, const Regs::VSOutputAttributes* output_attributes) | ||||||
| { | { | ||||||
|     struct StuffToWrite { |     struct StuffToWrite { | ||||||
|         u8* pointer; |         const u8* pointer; | ||||||
|         u32 size; |         u32 size; | ||||||
|     }; |     }; | ||||||
|     std::vector<StuffToWrite> writing_queue; |     std::vector<StuffToWrite> writing_queue; | ||||||
|     u32 write_offset = 0; |     u32 write_offset = 0; | ||||||
|  |  | ||||||
|     auto QueueForWriting = [&writing_queue,&write_offset](u8* pointer, u32 size) { |     auto QueueForWriting = [&writing_queue,&write_offset](const u8* pointer, u32 size) { | ||||||
|         writing_queue.push_back({pointer, size}); |         writing_queue.push_back({pointer, size}); | ||||||
|         u32 old_write_offset = write_offset; |         u32 old_write_offset = write_offset; | ||||||
|         write_offset += size; |         write_offset += size; | ||||||
| @@ -228,27 +228,27 @@ void DumpShader(const std::string& filename, const Regs::ShaderConfig& config, c | |||||||
|     DVLPHeader dvlp{ DVLPHeader::MAGIC_WORD }; |     DVLPHeader dvlp{ DVLPHeader::MAGIC_WORD }; | ||||||
|     DVLEHeader dvle{ DVLEHeader::MAGIC_WORD }; |     DVLEHeader dvle{ DVLEHeader::MAGIC_WORD }; | ||||||
|  |  | ||||||
|     QueueForWriting((u8*)&dvlb, sizeof(dvlb)); |     QueueForWriting(reinterpret_cast<const u8*>(&dvlb), sizeof(dvlb)); | ||||||
|     u32 dvlp_offset = QueueForWriting((u8*)&dvlp, sizeof(dvlp)); |     u32 dvlp_offset = QueueForWriting(reinterpret_cast<const u8*>(&dvlp), sizeof(dvlp)); | ||||||
|     dvlb.dvle_offset = QueueForWriting((u8*)&dvle, sizeof(dvle)); |     dvlb.dvle_offset = QueueForWriting(reinterpret_cast<const u8*>(&dvle), sizeof(dvle)); | ||||||
|  |  | ||||||
|     // TODO: Reduce the amount of binary code written to relevant portions |     // TODO: Reduce the amount of binary code written to relevant portions | ||||||
|     dvlp.binary_offset = write_offset - dvlp_offset; |     dvlp.binary_offset = write_offset - dvlp_offset; | ||||||
|     dvlp.binary_size_words = setup.program_code.size(); |     dvlp.binary_size_words = setup.program_code.size(); | ||||||
|     QueueForWriting((u8*)setup.program_code.data(), setup.program_code.size() * sizeof(u32)); |     QueueForWriting(reinterpret_cast<const u8*>(setup.program_code.data()), setup.program_code.size() * sizeof(u32)); | ||||||
|  |  | ||||||
|     dvlp.swizzle_info_offset = write_offset - dvlp_offset; |     dvlp.swizzle_info_offset = write_offset - dvlp_offset; | ||||||
|     dvlp.swizzle_info_num_entries = setup.swizzle_data.size(); |     dvlp.swizzle_info_num_entries = setup.swizzle_data.size(); | ||||||
|     u32 dummy = 0; |     u32 dummy = 0; | ||||||
|     for (unsigned int i = 0; i < setup.swizzle_data.size(); ++i) { |     for (unsigned int i = 0; i < setup.swizzle_data.size(); ++i) { | ||||||
|         QueueForWriting((u8*)&setup.swizzle_data[i], sizeof(setup.swizzle_data[i])); |         QueueForWriting(reinterpret_cast<const u8*>(&setup.swizzle_data[i]), sizeof(setup.swizzle_data[i])); | ||||||
|         QueueForWriting((u8*)&dummy, sizeof(dummy)); |         QueueForWriting(reinterpret_cast<const u8*>(&dummy), sizeof(dummy)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     dvle.main_offset_words = config.main_offset; |     dvle.main_offset_words = config.main_offset; | ||||||
|     dvle.output_register_table_offset = write_offset - dvlb.dvle_offset; |     dvle.output_register_table_offset = write_offset - dvlb.dvle_offset; | ||||||
|     dvle.output_register_table_size = static_cast<u32>(output_info_table.size()); |     dvle.output_register_table_size = static_cast<u32>(output_info_table.size()); | ||||||
|     QueueForWriting((u8*)output_info_table.data(), static_cast<u32>(output_info_table.size() * sizeof(OutputRegisterInfo))); |     QueueForWriting(reinterpret_cast<const u8*>(output_info_table.data()), static_cast<u32>(output_info_table.size() * sizeof(OutputRegisterInfo))); | ||||||
|  |  | ||||||
|     // TODO: Create a label table for "main" |     // TODO: Create a label table for "main" | ||||||
|  |  | ||||||
| @@ -292,14 +292,14 @@ void DumpShader(const std::string& filename, const Regs::ShaderConfig& config, c | |||||||
|     dvle.constant_table_offset = write_offset - dvlb.dvle_offset; |     dvle.constant_table_offset = write_offset - dvlb.dvle_offset; | ||||||
|     dvle.constant_table_size = constant_table.size(); |     dvle.constant_table_size = constant_table.size(); | ||||||
|     for (const auto& constant : constant_table) { |     for (const auto& constant : constant_table) { | ||||||
|         QueueForWriting((uint8_t*)&constant, sizeof(constant)); |         QueueForWriting(reinterpret_cast<const u8*>(&constant), sizeof(constant)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // Write data to file |     // Write data to file | ||||||
|     std::ofstream file(filename, std::ios_base::out | std::ios_base::binary); |     std::ofstream file(filename, std::ios_base::out | std::ios_base::binary); | ||||||
|  |  | ||||||
|     for (auto& chunk : writing_queue) { |     for (const auto& chunk : writing_queue) { | ||||||
|         file.write((char*)chunk.pointer, chunk.size); |         file.write(reinterpret_cast<const char*>(chunk.pointer), chunk.size); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -409,7 +409,7 @@ void RunInterpreter(UnitState<Debug>& state) { | |||||||
|         { |         { | ||||||
|             if ((instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MAD) || |             if ((instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MAD) || | ||||||
|                 (instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MADI)) { |                 (instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MADI)) { | ||||||
|                 const SwizzlePattern& swizzle = *(SwizzlePattern*)&swizzle_data[instr.mad.operand_desc_id]; |                 const SwizzlePattern& swizzle = *reinterpret_cast<const SwizzlePattern*>(&swizzle_data[instr.mad.operand_desc_id]); | ||||||
|  |  | ||||||
|                 bool is_inverted = (instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MADI); |                 bool is_inverted = (instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MADI); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user