From 63e956cc7a57fe05aa2e422762349bee253715fb Mon Sep 17 00:00:00 2001 From: Lioncash Date: Thu, 17 Mar 2016 01:51:09 -0400 Subject: [PATCH] video_core: Don't cast away const --- src/video_core/command_processor.cpp | 11 +++++---- src/video_core/debug_utils/debug_utils.cpp | 24 ++++++++++---------- src/video_core/shader/shader_interpreter.cpp | 2 +- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/video_core/command_processor.cpp b/src/video_core/command_processor.cpp index 54721561e..33414258a 100644 --- a/src/video_core/command_processor.cpp +++ b/src/video_core/command_processor.cpp @@ -234,7 +234,7 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { const auto& index_info = regs.index_array; 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(index_address_8); bool index_u16 = index_info.format != 0; #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); } - const float srcval = (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::BYTE) ? *(s8*)srcdata : - (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::UBYTE) ? *(u8*)srcdata : - (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::SHORT) ? *(s16*)srcdata : - *(float*)srcdata; + const float srcval = + (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::BYTE) ? *reinterpret_cast(srcdata) : + (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::UBYTE) ? *reinterpret_cast(srcdata) : + (vertex_attribute_formats[i] == Regs::VertexAttributeFormat::SHORT) ? *reinterpret_cast(srcdata) : + *reinterpret_cast(srcdata); 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", diff --git a/src/video_core/debug_utils/debug_utils.cpp b/src/video_core/debug_utils/debug_utils.cpp index 271e81ca1..bac6d69c7 100644 --- a/src/video_core/debug_utils/debug_utils.cpp +++ b/src/video_core/debug_utils/debug_utils.cpp @@ -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) { struct StuffToWrite { - u8* pointer; + const u8* pointer; u32 size; }; std::vector writing_queue; 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}); u32 old_write_offset = write_offset; write_offset += size; @@ -228,27 +228,27 @@ void DumpShader(const std::string& filename, const Regs::ShaderConfig& config, c DVLPHeader dvlp{ DVLPHeader::MAGIC_WORD }; DVLEHeader dvle{ DVLEHeader::MAGIC_WORD }; - QueueForWriting((u8*)&dvlb, sizeof(dvlb)); - u32 dvlp_offset = QueueForWriting((u8*)&dvlp, sizeof(dvlp)); - dvlb.dvle_offset = QueueForWriting((u8*)&dvle, sizeof(dvle)); + QueueForWriting(reinterpret_cast(&dvlb), sizeof(dvlb)); + u32 dvlp_offset = QueueForWriting(reinterpret_cast(&dvlp), sizeof(dvlp)); + dvlb.dvle_offset = QueueForWriting(reinterpret_cast(&dvle), sizeof(dvle)); // TODO: Reduce the amount of binary code written to relevant portions dvlp.binary_offset = write_offset - dvlp_offset; dvlp.binary_size_words = setup.program_code.size(); - QueueForWriting((u8*)setup.program_code.data(), setup.program_code.size() * sizeof(u32)); + QueueForWriting(reinterpret_cast(setup.program_code.data()), setup.program_code.size() * sizeof(u32)); dvlp.swizzle_info_offset = write_offset - dvlp_offset; dvlp.swizzle_info_num_entries = setup.swizzle_data.size(); u32 dummy = 0; for (unsigned int i = 0; i < setup.swizzle_data.size(); ++i) { - QueueForWriting((u8*)&setup.swizzle_data[i], sizeof(setup.swizzle_data[i])); - QueueForWriting((u8*)&dummy, sizeof(dummy)); + QueueForWriting(reinterpret_cast(&setup.swizzle_data[i]), sizeof(setup.swizzle_data[i])); + QueueForWriting(reinterpret_cast(&dummy), sizeof(dummy)); } dvle.main_offset_words = config.main_offset; dvle.output_register_table_offset = write_offset - dvlb.dvle_offset; dvle.output_register_table_size = static_cast(output_info_table.size()); - QueueForWriting((u8*)output_info_table.data(), static_cast(output_info_table.size() * sizeof(OutputRegisterInfo))); + QueueForWriting(reinterpret_cast(output_info_table.data()), static_cast(output_info_table.size() * sizeof(OutputRegisterInfo))); // 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_size = constant_table.size(); for (const auto& constant : constant_table) { - QueueForWriting((uint8_t*)&constant, sizeof(constant)); + QueueForWriting(reinterpret_cast(&constant), sizeof(constant)); } // Write data to file std::ofstream file(filename, std::ios_base::out | std::ios_base::binary); - for (auto& chunk : writing_queue) { - file.write((char*)chunk.pointer, chunk.size); + for (const auto& chunk : writing_queue) { + file.write(reinterpret_cast(chunk.pointer), chunk.size); } } diff --git a/src/video_core/shader/shader_interpreter.cpp b/src/video_core/shader/shader_interpreter.cpp index 295a2466b..02e1a1cb1 100644 --- a/src/video_core/shader/shader_interpreter.cpp +++ b/src/video_core/shader/shader_interpreter.cpp @@ -409,7 +409,7 @@ void RunInterpreter(UnitState& state) { { if ((instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MAD) || (instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MADI)) { - const SwizzlePattern& swizzle = *(SwizzlePattern*)&swizzle_data[instr.mad.operand_desc_id]; + const SwizzlePattern& swizzle = *reinterpret_cast(&swizzle_data[instr.mad.operand_desc_id]); bool is_inverted = (instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MADI);