mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	video_core: Don't cast away const
This commit is contained in:
		
							parent
							
								
									0c0fb463f0
								
							
						
					
					
						commit
						63e956cc7a
					
				@ -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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user