Skip to content

Update megaTron.metal#2402

Merged
JoeMatt merged 1 commit intodevelopfrom
mrjschulte-megaTron-fix
Mar 2, 2025
Merged

Update megaTron.metal#2402
JoeMatt merged 1 commit intodevelopfrom
mrjschulte-megaTron-fix

Conversation

@mrjschulte
Copy link
Collaborator

@mrjschulte mrjschulte commented Mar 2, 2025

User description

Fix megaTron for Provenance/Metal


PR Type

Enhancement


Description

  • Refactored and optimized the megaTron.metal shader for improved performance.

  • Introduced new inline functions for tone mapping, gamma correction, and mask handling.

  • Enhanced CRT emulation with additional parameters and functionality.

  • Updated documentation and comments for better clarity and maintainability.


Changes walkthrough 📝

Relevant files
Enhancement
megaTron.metal
Refactored and enhanced `megaTron.metal` shader                   

PVUI/Sources/PVUIBase/Resources/Shaders/Metal/Filters/megaTron.metal

  • Added new inline functions for tone mapping and gamma correction.
  • Improved CRT emulation with new parameters and mask handling.
  • Replaced older functions with optimized and modular implementations.
  • Updated comments and documentation for better clarity.
  • +284/-47

    Need help?
  • Type /help how to ... in the comments thread for any questions about Qodo Merge usage.
  • Check out the documentation for more information.
  • Fix megaTron for Provenance/Metal
    @mrjschulte mrjschulte added metal Related to the Metal GPU path in Provenance. Shaders labels Mar 2, 2025
    @qodo-code-review
    Copy link

    Qodo Merge was enabled for this repository. To continue using it, please link your Git account with your Qodo account here.

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 4 🔵🔵🔵🔵⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Memory Alignment

    The pragma pack directives could cause memory alignment issues on some devices. The struct packing should be validated across different Metal devices and architectures.

    #pragma pack(push,4)
    struct MegaTronUniforms {
        float4 SourceSize;      /// x,y = size, z,w = 1/size
        float4 OutputSize;      /// x,y = size, z,w = 1/size
        float MASK;            /// 0=none, 1=RGB, 2=RGB(2), 3=RGB(3)
        float MASK_INTENSITY;  /// Mask intensity (0.0-1.0)
        float SCANLINE_THINNESS; /// Scanline thickness
        float SCAN_BLUR;       /// Scanline blur
        float CURVATURE;       /// Screen curvature
        float TRINITRON_CURVE; /// 0=normal curve, 1=trinitron style
        float CORNER;          /// Corner size
        float CRT_GAMMA;       /// CRT gamma correction
    };
    #pragma pack(pop)
    Performance

    Multiple branching conditions in the megaTronMask function could impact shader performance. Consider optimizing the mask calculation logic to reduce branching.

    float3 megaTronMask(thread float2& pos, thread const float& dark, constant MegaTronUniforms& params)
    {
        if (params.MASK == 2.0)
        {
            float3 m = float3(dark, dark, dark);
            float x = fract(pos.x * (1.0/3.0));
            if (x < (1.0/3.0))
            {
                m.x = 1.0;
            }
            else
            {
                if (x <(2.0/3.0))
                {
                    m.y = 1.0;
                }
                else
                {
                    m.z = 1.0;
                }
            }
            return m;
        }
        else
        {
            if (params.MASK == 1.0)
            {
                float3 m_1 = float3(1.0);
                float x_1 = fract(pos.x * (1.0/3.0));
                if (x_1 < (1.0/3.0))
                {
                    m_1.x = dark;
                }
                else
                {
                    if (x_1 <(2.0/3.0))
                    {
                        m_1.y = dark;
                    }
                    else
                    {
                        m_1.z = dark;
                    }
                }
                return m_1;
            }
            else
            {
                if (params.MASK == 3.0)
                {
                    pos.x += (pos.y * 2.9999);
                    float3 m_2 = float3(dark, dark, dark);
                    float x_2 = fract(pos.x * (1.0/6.0));
                    if (x_2 < (1.0/3.0))
                    {
                        m_2.x = 1.0;
                    }
                    else
                    {
                        if (x_2 <(2.0/3.0))
                        {
                            m_2.y = 1.0;
                        }
                        else
                        {
                            m_2.z = 1.0;
                        }
                    }
                    return m_2;
                }
                else
                {
                    return float3(1.0);
                }
            }
        }
    Precision Loss

    The gamma correction and tone mapping calculations may suffer from precision loss due to aggressive float operations. Consider using higher precision intermediates.

        if (c < 0.0031308)
        {
            _116 = c * 12.92;
        }
        else
        {
            _116 = (1.055 * pow(c, 0.41666)) - 0.055;
        }
        return _116;
    }

    @qodo-code-review
    Copy link

    Qodo Merge was enabled for this repository. To continue using it, please link your Git account with your Qodo account here.

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Impact
    Possible issue
    Add texture coordinates bounds checking

    Add bounds checking before accessing texture samples to prevent potential
    out-of-bounds memory access in the megaTronFetch function. The current
    implementation could cause undefined behavior if uv coordinates are outside
    valid range.

    PVUI/Sources/PVUIBase/Resources/Shaders/Metal/Filters/megaTron.metal [80-86]

     static inline __attribute__((always_inline))
     float3 megaTronFetch(thread float2& uv, constant MegaTronUniforms& params, thread texture2d<float> texture, thread const sampler SourceSmplr)
     {
         uv *= (float2(params.SourceSize.z, params.SourceSize.w) / params.SourceSize.zw);
    +    uv = clamp(uv, float2(0.0), float2(1.0));
         float3 param = texture.sample(SourceSmplr, uv, bias(-16.0)).xyz;
         return FromSrgb(param, params);
     }
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    __

    Why: Adding bounds checking for texture coordinates is crucial for preventing undefined behavior and potential crashes from out-of-bounds memory access, which is a significant safety improvement.

    Medium
    Prevent exponential numerical overflow

    The exp2 operations in megaTronFilter could cause numerical overflow with large
    blur values. Add value clamping to prevent potential rendering artifacts.

    PVUI/Sources/PVUIBase/Resources/Shaders/Metal/Filters/megaTron.metal [237-240]

    -float pix0 = exp2((blur * off0) * off0);
    -float pix1 = exp2((blur * off1) * off1);
    -float pix2 = exp2((blur * off2) * off2);
    -float pix3 = exp2((blur * off3) * off3);
    +float pix0 = exp2(clamp((blur * off0) * off0, -16.0, 16.0));
    +float pix1 = exp2(clamp((blur * off1) * off1, -16.0, 16.0));
    +float pix2 = exp2(clamp((blur * off2) * off2, -16.0, 16.0));
    +float pix3 = exp2(clamp((blur * off3) * off3, -16.0, 16.0));
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    __

    Why: Clamping the exponential input values prevents potential numerical overflow that could cause visual artifacts or shader instability, improving the robustness of the CRT filter implementation.

    Medium
    • More

    @qodo-code-review
    Copy link

    qodo-code-review bot commented Mar 2, 2025

    CI Feedback 🧐

    (Feedback updated until commit 774df36)

    A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

    Action: Build and upload Provenance (Provenance-Lite-iOS, iphoneos, Provenance-Lite (AppStore) (Release),...

    Failed stage: Fakesign app [❌]

    Failure summary:

    The build failed for two main reasons:
    1. Simulator runtime version mismatch: No compatible
    simulator runtime was found for the iOS SDK version 22C146 among the available versions.
    2. iOS
    deployment target compatibility issue: Multiple components (HLSLPPSSPP, CorePPSSPP, CommonPPSSPP)
    are set to iOS 11.0, but the supported deployment target range is iOS 12.0 to 18.2.99.

    The build process ultimately failed to create the archive.xcarchive/Products/Applications directory,
    resulting in a failed build for Provenance-Lite-iOS.

    Relevant error logs:
    1:  ##[group]Operating System
    2:  macOS
    ...
    
    7038:  |         ^~~~~~~~~~~~~~~~~~~
    7039:  ##[warning]performing pointer subtraction with a null pointer may have undefined behavior [-Wnull-pointer-subtraction]
    7040:  445 |         INT_ENTRY(6, vCarry),
    7041:  |         ^~~~~~~~~~~~~~~~~~~~
    7042:  ##[warning]performing pointer subtraction with a null pointer may have undefined behavior [-Wnull-pointer-subtraction]
    7043:  446 |         INT_ENTRY(6, vOverflow),
    7044:  |         ^~~~~~~~~~~~~~~~~~~~~~~
    7045:  ##[warning]performing pointer subtraction with a null pointer may have undefined behavior [-Wnull-pointer-subtraction]
    7046:  447 |         INT_ENTRY(6, vErrorCode),
    ...
    
    11281:  [�[36mpng17PPSSPP�[0m] �[1mCompiling�[0m pngset.c
    11282:  [�[36mpng17PPSSPP�[0m] �[1mCompiling�[0m pngrutil.c
    11283:  [�[36mpng17PPSSPP�[0m] �[1mCompiling�[0m pngrtran.c
    11284:  [�[36mpng17PPSSPP�[0m] �[1mCompiling�[0m pngrio.c
    11285:  [�[36mpng17PPSSPP�[0m] �[1mCompiling�[0m pngread.c
    11286:  [�[36mpng17PPSSPP�[0m] �[1mCompiling�[0m pngpread.c
    11287:  [�[36mpng17PPSSPP�[0m] �[1mCompiling�[0m pngmem.c
    11288:  [�[36mpng17PPSSPP�[0m] �[1mCompiling�[0m pngget.c
    11289:  [�[36mpng17PPSSPP�[0m] �[1mCompiling�[0m pngerror.c
    ...
    
    11331:  [�[36mpng�[0m] �[1mCompiling�[0m pngset.c
    11332:  [�[36mpng�[0m] �[1mCompiling�[0m pngrutil.c
    11333:  [�[36mpng�[0m] �[1mCompiling�[0m pngrtran.c
    11334:  [�[36mpng�[0m] �[1mCompiling�[0m pngrio.c
    11335:  [�[36mpng�[0m] �[1mCompiling�[0m pngread.c
    11336:  [�[36mpng�[0m] �[1mCompiling�[0m pngpread.c
    11337:  [�[36mpng�[0m] �[1mCompiling�[0m pngmem.c
    11338:  [�[36mpng�[0m] �[1mCompiling�[0m pngget.c
    11339:  [�[36mpng�[0m] �[1mCompiling�[0m pngerror.c
    ...
    
    11602:  [�[36mmpcdec�[0m] �[1mCompiling�[0m streaminfo.c
    11603:  [�[36mmpcdec�[0m] �[1mCompiling�[0m requant.c
    11604:  [�[36mmpcdec�[0m] �[1mCompiling�[0m mpc_demux.c
    11605:  [�[36mmpcdec�[0m] �[1mCompiling�[0m mpc_decoder.c
    11606:  [�[36mmpcdec�[0m] �[1mCompiling�[0m mpc_bits_reader.c
    11607:  [�[36mmpcdec�[0m] �[1mCompiling�[0m huffman.c
    11608:  [�[36mmpcdec�[0m] �[1mCompiling�[0m crc32.c
    11609:  [�[36mminiupnpcPPSSPP�[0m] �[1mCompiling�[0m upnpreplyparse.c
    11610:  [�[36mminiupnpcPPSSPP�[0m] �[1mCompiling�[0m upnperrors.c
    ...
    
    11729:  [�[36mmednafen�[0m] �[1mCompiling�[0m memory.cpp
    11730:  [�[36mmednafen�[0m] �[1mCompiling�[0m mednafen.cpp
    11731:  [�[36mmednafen�[0m] �[1mCompiling�[0m md5.cpp
    11732:  [�[36mmednafen�[0m] �[1mCompiling�[0m git.cpp
    11733:  [�[36mmednafen�[0m] �[1mCompiling�[0m general.cpp
    11734:  [�[36mmednafen�[0m] �[1mCompiling�[0m gb.cpp
    11735:  [�[36mmednafen�[0m] �[1mCompiling�[0m file.cpp
    11736:  [�[36mmednafen�[0m] �[1mCompiling�[0m escape.cpp
    11737:  [�[36mmednafen�[0m] �[1mCompiling�[0m error.cpp
    ...
    
    11771:  [�[36mmednafen�[0m] �[1mCompiling�[0m zstd_decompress.c
    11772:  [�[36mmednafen�[0m] �[1mCompiling�[0m zstd_ddict.c
    11773:  [�[36mmednafen�[0m] �[1mCompiling�[0m zstd_common.c
    11774:  [�[36mmednafen�[0m] �[1mCompiling�[0m xxhash.c
    11775:  [�[36mmednafen�[0m] �[1mCompiling�[0m resample.c
    11776:  [�[36mmednafen�[0m] �[1mCompiling�[0m minilzo.c
    11777:  [�[36mmednafen�[0m] �[1mCompiling�[0m huf_decompress.c
    11778:  [�[36mmednafen�[0m] �[1mCompiling�[0m fse_decompress.c
    11779:  [�[36mmednafen�[0m] �[1mCompiling�[0m error_private.c
    ...
    
    11798:  [�[36mlibzstd_staticPPSSPP�[0m] �[1mCompiling�[0m threading.c
    11799:  [�[36mlibzstd_staticPPSSPP�[0m] �[1mCompiling�[0m pool.c
    11800:  [�[36mlibzstd_staticPPSSPP�[0m] �[1mCompiling�[0m huf_decompress.c
    11801:  [�[36mlibzstd_staticPPSSPP�[0m] �[1mCompiling�[0m huf_compress.c
    11802:  [�[36mlibzstd_staticPPSSPP�[0m] �[1mCompiling�[0m hist.c
    11803:  [�[36mlibzstd_staticPPSSPP�[0m] �[1mCompiling�[0m fse_decompress.c
    11804:  [�[36mlibzstd_staticPPSSPP�[0m] �[1mCompiling�[0m fse_compress.c
    11805:  [�[36mlibzstd_staticPPSSPP�[0m] �[1mCompiling�[0m fastcover.c
    11806:  [�[36mlibzstd_staticPPSSPP�[0m] �[1mCompiling�[0m error_private.c
    ...
    
    11809:  [�[36mlibzstd_staticPPSSPP�[0m] �[1mCompiling�[0m debug.c
    11810:  [�[36mlibzstd_staticPPSSPP�[0m] �[1mCompiling�[0m cover.c
    11811:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_utf-8.c
    11812:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_unchange_data.c
    11813:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_unchange_archive.c
    11814:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_unchange_all.c
    11815:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_unchange.c
    11816:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_string.c
    11817:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_strerror.c
    ...
    
    11838:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_source_layered.c
    11839:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_source_is_deleted.c
    11840:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_source_get_file_attributes.c
    11841:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_source_function.c
    11842:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_source_free.c
    11843:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_source_file_stdio_named.c
    11844:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_source_file_stdio.c
    11845:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_source_file_common.c
    11846:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_source_error.c
    ...
    
    11881:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_get_archive_comment.c
    11882:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_ftell.c
    11883:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_fseek.c
    11884:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_fread.c
    11885:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_fopen_index_encrypted.c
    11886:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_fopen_index.c
    11887:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_fopen_encrypted.c
    11888:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_fopen.c
    11889:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_file_strerror.c
    ...
    
    11891:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_file_set_external_attributes.c
    11892:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_file_set_encryption.c
    11893:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_file_set_comment.c
    11894:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_file_replace.c
    11895:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_file_rename.c
    11896:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_file_get_offset.c
    11897:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_file_get_external_attributes.c
    11898:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_file_get_comment.c
    11899:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_file_error_get.c
    11900:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_file_error_clear.c
    11901:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_file_add.c
    11902:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_fdopen.c
    11903:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_fclose.c
    11904:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_extra_field_api.c
    11905:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_extra_field.c
    11906:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_error_to_str.c
    11907:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_error_strerror.c
    11908:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_error_get_sys_type.c
    11909:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_error_get.c
    11910:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_error_clear.c
    11911:  [�[36mlibzipPPSSPP�[0m] �[1mCompiling�[0m zip_error.c
    ...
    
    13515:  [�[36memuthree�[0m] �[1mCompiling�[0m ffmpeg_decoder.cpp
    13516:  [�[36memuthree�[0m] �[1mCompiling�[0m ffmpeg_backend.cpp
    13517:  [�[36memuthree�[0m] �[1mCompiling�[0m factory.cpp
    13518:  [�[36memuthree�[0m] �[1mCompiling�[0m extra_hid.cpp
    13519:  [�[36memuthree�[0m] �[1mCompiling�[0m exclusive_monitor.cpp
    13520:  [�[36memuthree�[0m] �[1mCompiling�[0m event.cpp
    13521:  [�[36memuthree�[0m] �[1mCompiling�[0m etc1.cpp
    13522:  [�[36memuthree�[0m] �[1mCompiling�[0m esign.cpp
    13523:  [�[36memuthree�[0m] �[1mCompiling�[0m error.cpp
    ...
    
    13703:  [�[36memuthree�[0m] �[1mCompiling�[0m DirectoryManager.mm
    13704:  [�[36memuthree�[0m] �[1mCompiling�[0m CitraWrapper.mm
    13705:  [�[36memuthree�[0m] �[1mCompiling�[0m 3way.cpp
    13706:  [�[36memuthree�[0m] �[1mCompiling�[0m 3dsx.cpp
    13707:  [�[36mdesmume2015�[0m] �[1mCompiling�[0m xstring.cpp
    13708:  [�[36mdesmume2015�[0m] �[1mCompiling�[0m wifi.cpp
    13709:  [�[36mdesmume2015�[0m] �[1mCompiling�[0m vfat.cpp
    13710:  [�[36mdesmume2015�[0m] �[1mCompiling�[0m tinyxmlparser.cpp
    13711:  [�[36mdesmume2015�[0m] �[1mCompiling�[0m tinyxmlerror.cpp
    ...
    
    14027:  [�[36marmipsPPSSPP�[0m] �[1mCompiling�[0m Misc.cpp
    14028:  [�[36marmipsPPSSPP�[0m] �[1mCompiling�[0m MipsParser.cpp
    14029:  [�[36marmipsPPSSPP�[0m] �[1mCompiling�[0m MipsOpcodes.cpp
    14030:  [�[36marmipsPPSSPP�[0m] �[1mCompiling�[0m MipsMacros.cpp
    14031:  [�[36marmipsPPSSPP�[0m] �[1mCompiling�[0m MipsExpressionFunctions.cpp
    14032:  [�[36marmipsPPSSPP�[0m] �[1mCompiling�[0m MipsElfRelocator.cpp
    14033:  [�[36marmipsPPSSPP�[0m] �[1mCompiling�[0m MipsElfFile.cpp
    14034:  [�[36marmipsPPSSPP�[0m] �[1mCompiling�[0m Mips.cpp
    14035:  ** ARCHIVE FAILED **
    14036:  [�[36marmipsPPSSPP�[0m] �[1mCompiling�[0m FileSystem.cpp
    14037:  [�[36marmipsPPSSPP�[0m] �[1mCompiling�[0m FileManager.cpp
    14038:  [�[36marmipsPPSSPP�[0m] �[1mCompiling�[0m FileClasses.cpp
    14039:  The following build commands failed:
    ...
    
    14146:  [�[36mSPIRVPPSSPP�[0m] �[1mCompiling�[0m spirv_c_interface.cpp
    14147:  [�[36mZipArchive�[0m] �[1mGenerating�[0m ZipArchive_-57F40D945DCA4E01_PackageProduct.framework.dSYM
    14148:  [�[36mRxSwift�[0m] �[1mCopy�[0m arm64-apple-ios.swiftmodule -> RxSwift.swiftmodule
    14149:  [�[36mRxSwift�[0m] �[1mCopy�[0m arm64-apple-ios.swiftdoc -> RxSwift.swiftdoc
    14150:  [�[36mRxSwift�[0m] �[1mCopy�[0m arm64-apple-ios.abi.json -> RxSwift.abi.json
    14151:  [�[36mSQLite�[0m] �[1mCopy�[0m arm64-apple-ios.swiftmodule -> SQLite.swiftmodule
    14152:  [�[36mSQLite�[0m] �[1mCopy�[0m arm64-apple-ios.swiftdoc -> SQLite.swiftdoc
    14153:  [�[36mSQLite�[0m] �[1mCopy�[0m arm64-apple-ios.abi.json -> SQLite.abi.json
    14154:  ##[error]No simulator runtime version from [<DVTBuildVersion 21A342>, <DVTBuildVersion 21C62>, <DVTBuildVersion 21E213>, <DVTBuildVersion 21F79>, <DVTBuildVersion 22B81>] available to use with iphonesimulator SDK version <DVTBuildVersion 22C146>
    ...
    
    14267:  ##[warning]The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 18.2.99. (in target 'HLSLPPSSPP' from project 'PPSSPP')
    14268:  /Users/runner/work/Provenance/Provenance/Cores/PPSSPP/cmake/PPSSPP.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 18.2.99. (in target 'GenericCodeGenPPSSPP' from project 'PPSSPP')
    14269:  note: Disabling previews because SWIFT_VERSION is set and SWIFT_OPTIMIZATION_LEVEL=-Owholemodule, expected -Onone (in target 'FloatingButton' from project 'FloatingButton')
    14270:  ##[warning]The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 18.2.99. (in target 'CorePPSSPP' from project 'PPSSPP')
    14271:  /Users/runner/work/Provenance/Provenance/Cores/PPSSPP/cmake/PPSSPP.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 18.2.99. (in target 'CommonPPSSPP' from project 'PPSSPP')
    14272:  note: Disabling previews because SWIFT_VERSION is set and SWIFT_OPTIMIZATION_LEVEL=-Owholemodule, expected -Onone (in target 'Checksum' from project 'Checksum')
    14273:  ##[warning]no rule to process file '/Users/runner/work/Provenance/Provenance/Cores/emuThree/emuthree/emuThreeDS/externals/include/dynarmic/frontend/A32/decoder/vfp.inc' of type 'sourcecode.pascal' for architecture 'arm64' (in target 'emuthree' from project 'PVEmuThree')
    14274:  Archiving workspace Provenance with scheme Provenance-Lite (AppStore) (Release)
    14275:  (2 failures)
    ...
    
    14285:  �[36;1mecho "Contents of Provenance directory:"�[0m
    14286:  �[36;1mls -la "Provenance/"�[0m
    14287:  �[36;1mecho "Contents of ./ directory:"�[0m
    14288:  �[36;1mls -la "./"�[0m
    14289:  �[36;1mecho "Contents of archive.xcarchive/Products/Applications/ directory:"�[0m
    14290:  �[36;1mls -la "archive.xcarchive/Products/Applications/"�[0m
    14291:  �[36;1mecho "Checking app binary..."�[0m
    14292:  �[36;1mls -la "archive.xcarchive/Products/Applications/Provenance Lite.app/"�[0m
    14293:  �[36;1mldid -S"Provenance/Provenance-AppStore.entitlements" "archive.xcarchive/Products/Applications/Provenance Lite.app/Provenance Lite" || echo "::warning::Fakesign failed but continuing build"�[0m
    ...
    
    14418:  -rwxr-xr-x   1 runner  staff    306 Mar  2 20:06 azure.sh
    14419:  drwxr-xr-x   2 runner  staff     64 Mar  2 20:20 build
    14420:  drwxr-xr-x  20 runner  staff    640 Mar  2 20:06 fastlane
    14421:  drwxr-xr-x   5 runner  staff    160 Mar  2 20:06 iCloudBrowser
    14422:  lrwxr-xr-x   1 runner  staff     28 Mar  2 20:06 modules -> CoresRetro/RetroArch/modules
    14423:  -rw-r--r--   1 runner  staff   6488 Mar  2 20:06 project.yml
    14424:  Contents of archive.xcarchive/Products/Applications/ directory:
    14425:  ls: archive.xcarchive/Products/Applications/: No such file or directory
    14426:  ##[error]Process completed with exit code 1.
    14427:  ##[group]Run if [ "failure" = "success" ]; then
    14428:  �[36;1mif [ "failure" = "success" ]; then�[0m
    14429:  �[36;1m  echo "✅ Build succeeded for Provenance-Lite-iOS"�[0m
    14430:  �[36;1melse�[0m
    14431:  �[36;1m  echo "❌ Build failed for Provenance-Lite-iOS"�[0m
    ...
    
    14437:  AWS_ACCESS_KEY_ID: ***
    14438:  SWIFT_PACKAGE_ALLOW_WRITING_TO_DIRECTORY: /Users/runner/work/Provenance/Provenance
    14439:  DEVELOPER_DIR: /Applications/Xcode_16.2.app/Contents/Developer
    14440:  XCODE_VERSION: 16.2
    14441:  MD_APPLE_SDK_ROOT: /Applications/Xcode_16.2.app
    14442:  BUILD_NUMBER: 6228
    14443:  MARKETING_VERSION: 3.0.5
    14444:  ##[endgroup]
    14445:  ❌ Build failed for Provenance-Lite-iOS
    14446:  ##[error]Process completed with exit code 1.
    14447:  ##[group]Run if [ "failure" = "success" ]; then
    14448:  �[36;1mif [ "failure" = "success" ]; then�[0m
    14449:  �[36;1m  STATUS_COLOR="65280"�[0m
    14450:  �[36;1m  STATUS="✅ Success"�[0m
    14451:  �[36;1melse�[0m
    14452:  �[36;1m  STATUS_COLOR="16711680"�[0m
    14453:  �[36;1m  STATUS="❌ Failed"�[0m
    

    Copy link
    Member

    @JoeMatt JoeMatt left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    massive, awesome, thank you!

    @JoeMatt JoeMatt merged commit 1cfccdd into develop Mar 2, 2025
    1 of 6 checks passed
    @JoeMatt JoeMatt deleted the mrjschulte-megaTron-fix branch March 2, 2025 22:43
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    metal Related to the Metal GPU path in Provenance. Review effort 4/5 Shaders

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    2 participants