)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"aeebaea79ed44aab87596c9cf0101b4bd09bafc1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"37bfa208_8dff6f38","updated":"2026-06-28 09:37:56.000000000","message":"Moin, would be nice to have some input on an API change here. It affects\nonly users that fill their own `Pipe_Config` (users of `Display_Probing`\nprobably won\u0027t notice).\n\nBackground: Currently hardcoded and future default is to always scale a\nsmaller framebuffer up, keeping the aspect ratio, and centering it if\nit can\u0027t be scaled to fully fit the screen. We have a project where the\ndisplay requires us to align the framebuffer image at the top instead.\nEverything else in the patch is \"might be useful?\".","commit_id":"c6e7799627e7bf02027ccc4247446f9d0dbc9b7d"}],"common/hw-gfx-gma-pipe_setup.adb":[{"author":{"_account_id":1000029,"name":"Ada SPARK","email":"gnatbot@sourcearcade.org","username":"gnatbot","avatars":[{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"9ad7a910c25dfaf8455c0724d1b5ae3239ddf9a7","unresolved":false,"context_lines":[{"line_number":313,"context_line":"            pragma Assert_And_Cut (True);"},{"line_number":314,"context_line":"            declare"},{"line_number":315,"context_line":"               Linear_Offset : constant Pixel_Type :\u003d"},{"line_number":316,"context_line":"                  FB.Start_Y * FB.Stride + FB.Start_X;"},{"line_number":317,"context_line":"            begin"},{"line_number":318,"context_line":"               Registers.Write"},{"line_number":319,"context_line":"                 (Register \u003d\u003e Controller.DSPLINOFF,"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"22ccd5a7_6203262c","line":316,"updated":"2026-06-24 07:16:10.000000000","message":"Config(s): i945 ironlake_edp ironlake\n```\nhw-gfx-gma-pipe_setup.adb:316: medium: range check might fail\n  316 |                  FB.Start_Y * FB.Stride + FB.Start_X;\n      |                                         ^ here\n  reason for check: default component value must fit in the type\n```","commit_id":"c6e7799627e7bf02027ccc4247446f9d0dbc9b7d"},{"author":{"_account_id":1000029,"name":"Ada SPARK","email":"gnatbot@sourcearcade.org","username":"gnatbot","avatars":[{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"a658c4ed3d28a6534a12cf3f9dff5457c0772aea","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"         if Config.Has_DSP_Linoff and then FB.Tiling \u003d Linear then"},{"line_number":313,"context_line":"            pragma Assert_And_Cut"},{"line_number":314,"context_line":"              (FB.Start_Y * FB.Stride + FB.Start_X in Pixel_Type);"},{"line_number":315,"context_line":"            declare"},{"line_number":316,"context_line":"               Linear_Offset : constant Pixel_Type :\u003d"},{"line_number":317,"context_line":"                  FB.Start_Y * FB.Stride + FB.Start_X;"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"165a2ee0_77c45f61","line":314,"updated":"2026-07-06 14:33:14.000000000","message":"Config(s): ironlake i945\n```\nhw-gfx-gma-pipe_setup.adb:314: medium: assertion might fail, cannot prove FB.Start_Y * FB.Stride + FB.Start_X in Pixel_Type\n  314 |              (FB.Start_Y * FB.Stride + FB.Start_X in Pixel_Type);\n      |               ^ here\n```\nConfig(s): ironlake_edp\n```\nhw-gfx-gma-pipe_setup.adb:314: medium: assertion might fail, cannot prove FB.Start_Y * FB.Stride + FB.Start_X in Pixel_Type\n  314 |              (FB.Start_Y * FB.Stride + FB.Start_X in Pixel_Type);\n      |               ^ here\n  e.g. when FB \u003d (Start_Y \u003d\u003e 0, Tiling \u003d\u003e Linear, Rotation \u003d\u003e No_Rotation, Offset \u003d\u003e 0, others \u003d\u003e ?)\n```","commit_id":"c260e2db0607ea9e84620ccaec2fa85f2a881519"},{"author":{"_account_id":1000029,"name":"Ada SPARK","email":"gnatbot@sourcearcade.org","username":"gnatbot","avatars":[{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"af3c1f7625d6a1338e186ef8bca90065fa82731f","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"         if Config.Has_DSP_Linoff and then FB.Tiling \u003d Linear then"},{"line_number":313,"context_line":"            pragma Assert_And_Cut"},{"line_number":314,"context_line":"              (FB.Start_Y * FB.Stride + FB.Start_X in Pixel_Type);"},{"line_number":315,"context_line":"            declare"},{"line_number":316,"context_line":"               Linear_Offset : constant Pixel_Type :\u003d"},{"line_number":317,"context_line":"                  FB.Start_Y * FB.Stride + FB.Start_X;"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"459f7c73_4d83e52d","line":314,"updated":"2026-07-06 14:59:55.000000000","message":"Config(s): ironlake i945 ironlake_edp\n```\nhw-gfx-gma-pipe_setup.adb:314: medium: assertion might fail, cannot prove FB.Start_Y * FB.Stride + FB.Start_X in Pixel_Type\n  314 |              (FB.Start_Y * FB.Stride + FB.Start_X in Pixel_Type);\n      |               ^ here\n```","commit_id":"d6c9ae8d723f746716e3ee75bd51b57a1742e4da"},{"author":{"_account_id":1000029,"name":"Ada SPARK","email":"gnatbot@sourcearcade.org","username":"gnatbot","avatars":[{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c244ab97f43ca382a72e76784b616a4b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"bd99289e914a5a2dea0307ff0220070b5e2b9a8b","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"         if Config.Has_DSP_Linoff and then FB.Tiling \u003d Linear then"},{"line_number":313,"context_line":"            pragma Assert_And_Cut"},{"line_number":314,"context_line":"              (FB.Start_Y * FB.Stride + FB.Start_X in Pixel_Type);"},{"line_number":315,"context_line":"            declare"},{"line_number":316,"context_line":"               Linear_Offset : constant Pixel_Type :\u003d"},{"line_number":317,"context_line":"                  FB.Start_Y * FB.Stride + FB.Start_X;"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"aa2240b2_fb276ec3","line":314,"updated":"2026-07-06 16:19:25.000000000","message":"Config(s): ironlake i945 ironlake_edp\n```\nhw-gfx-gma-pipe_setup.adb:314: medium: assertion might fail, cannot prove FB.Start_Y * FB.Stride + FB.Start_X in Pixel_Type\n  314 |              (FB.Start_Y * FB.Stride + FB.Start_X in Pixel_Type);\n      |               ^ here\n```","commit_id":"f88b02c65bd2da924a12b15a825a62525e7b9804"}],"common/hw-gfx-gma.ads":[{"author":{"_account_id":1000002,"name":"Thomas Heijligen","email":"src@posteo.de","username":"heijligen","avatars":[{"url":"https://www.gravatar.com/avatar/4285328fce6f2f2d1dcd3409fd9ebcbe.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4285328fce6f2f2d1dcd3409fd9ebcbe.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4285328fce6f2f2d1dcd3409fd9ebcbe.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4285328fce6f2f2d1dcd3409fd9ebcbe.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f06a08632f81af0424233d53ceeb656218b20860","unresolved":true,"context_lines":[{"line_number":97,"context_line":"   subtype Physical_USBC_Ports is Port_Type range USBC1 .. USBC4;"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"   type Alignment is"},{"line_number":100,"context_line":"     (Top_Left, Top, Top_Right, Right,"},{"line_number":101,"context_line":"      Bottom_Right, Bottom, Bottom_Left, Left,"},{"line_number":102,"context_line":"      Center);"},{"line_number":103,"context_line":"   type Scaling is (None, Keep_Aspect, Maximum);"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"   type Cursor_Mode is (No_Cursor, ARGB_Cursor);"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"da5575fe_581114a0","line":102,"range":{"start_line":100,"start_character":5,"end_line":102,"end_character":14},"updated":"2026-07-03 17:33:15.000000000","message":"nit/readability: Ordering in the way of reading\n```\ntype Alignment is\n  (Top_Left, Top, Top_Right,\n   Left, Center, Right,\n   Bottom_Left, Bottom, Bottom_Right);\n```","commit_id":"f8438f409802120e90f4a39887233103e391e05f"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"a027d8393333c5c67423c89590e589f0a741ed44","unresolved":false,"context_lines":[{"line_number":97,"context_line":"   subtype Physical_USBC_Ports is Port_Type range USBC1 .. USBC4;"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"   type Alignment is"},{"line_number":100,"context_line":"     (Top_Left, Top, Top_Right, Right,"},{"line_number":101,"context_line":"      Bottom_Right, Bottom, Bottom_Left, Left,"},{"line_number":102,"context_line":"      Center);"},{"line_number":103,"context_line":"   type Scaling is (None, Keep_Aspect, Maximum);"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"   type Cursor_Mode is (No_Cursor, ARGB_Cursor);"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"8fb88b19_525f124d","line":102,"range":{"start_line":100,"start_character":5,"end_line":102,"end_character":14},"in_reply_to":"da5575fe_581114a0","updated":"2026-07-06 14:57:54.000000000","message":"Done","commit_id":"f8438f409802120e90f4a39887233103e391e05f"},{"author":{"_account_id":1000002,"name":"Thomas Heijligen","email":"src@posteo.de","username":"heijligen","avatars":[{"url":"https://www.gravatar.com/avatar/4285328fce6f2f2d1dcd3409fd9ebcbe.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4285328fce6f2f2d1dcd3409fd9ebcbe.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4285328fce6f2f2d1dcd3409fd9ebcbe.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4285328fce6f2f2d1dcd3409fd9ebcbe.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f06a08632f81af0424233d53ceeb656218b20860","unresolved":true,"context_lines":[{"line_number":100,"context_line":"     (Top_Left, Top, Top_Right, Right,"},{"line_number":101,"context_line":"      Bottom_Right, Bottom, Bottom_Left, Left,"},{"line_number":102,"context_line":"      Center);"},{"line_number":103,"context_line":"   type Scaling is (None, Keep_Aspect, Maximum);"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"   type Cursor_Mode is (No_Cursor, ARGB_Cursor);"},{"line_number":106,"context_line":"   type Cursor_Size is (Cursor_64x64, Cursor_128x128, Cursor_256x256);"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"42221dac_b17b5e6d","line":103,"updated":"2026-07-03 17:33:15.000000000","message":"Choosing a wording which is more common in image positioning, At this point I don\u0027t know what exactly `Keep_Aspect` or `Maximum` means:\n- Contain / Fit: scaling the image such that it entirely fit into the framebuffer, no change of aspect ratio, empty space where the image is not drawn,\n- Cover / Fill: scaling the image such that the whole framebuffer is covered. Part of the image may be outside of the framebuffer and not shown. Keep the aspect ratio.\n- Stretch: Scale X and Y independent to cover the whole framebuffer but not loosing content.","commit_id":"f8438f409802120e90f4a39887233103e391e05f"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"a027d8393333c5c67423c89590e589f0a741ed44","unresolved":false,"context_lines":[{"line_number":100,"context_line":"     (Top_Left, Top, Top_Right, Right,"},{"line_number":101,"context_line":"      Bottom_Right, Bottom, Bottom_Left, Left,"},{"line_number":102,"context_line":"      Center);"},{"line_number":103,"context_line":"   type Scaling is (None, Keep_Aspect, Maximum);"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"   type Cursor_Mode is (No_Cursor, ARGB_Cursor);"},{"line_number":106,"context_line":"   type Cursor_Size is (Cursor_64x64, Cursor_128x128, Cursor_256x256);"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"aea56f5e_bf133132","line":103,"in_reply_to":"42221dac_b17b5e6d","updated":"2026-07-06 14:57:54.000000000","message":"Done","commit_id":"f8438f409802120e90f4a39887233103e391e05f"},{"author":{"_account_id":1000012,"name":"Angel Pons","email":"th3fanbus@gmail.com","username":"th3fanbus","avatars":[{"url":"https://www.gravatar.com/avatar/61cdfc186d8caca5a8908b0a382de6d8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/61cdfc186d8caca5a8908b0a382de6d8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/61cdfc186d8caca5a8908b0a382de6d8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/61cdfc186d8caca5a8908b0a382de6d8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"df69854771f220e4aa58219e6357f2fada1eadab","unresolved":false,"context_lines":[{"line_number":96,"context_line":"   subtype Physical_HDMI_Ports is Port_Type range HDMI1 .. HDMI_TC4;"},{"line_number":97,"context_line":"   subtype Physical_USBC_Ports is Port_Type range USBC1 .. USBC4;"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"   type Alignment is"},{"line_number":100,"context_line":"     (Top_Left, Top, Top_Right,"},{"line_number":101,"context_line":"      Left, Center, Right,"},{"line_number":102,"context_line":"      Bottom_Left, Bottom, Bottom_Right);"},{"line_number":103,"context_line":"   type Scaling is"},{"line_number":104,"context_line":"     (None,       -- Copy framebuffer contents 1:1"},{"line_number":105,"context_line":"      Fit,        -- Scale up to fit the available space, maintaining aspect ratio"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"b586e673_ba515ef1","line":102,"range":{"start_line":99,"start_character":3,"end_line":102,"end_character":41},"updated":"2026-07-07 11:18:15.000000000","message":"/j\n\n```suggestion\n   type Alignment is\n     (Lawful_Good,    Neutral_Good, Chaotic_Good,\n      Lawful_Neutral, True_Neutral, Chaotic_Neutral,\n      Lawful_Evil,    Neutral_Evil, Chaotic_Evil);\n```","commit_id":"f88b02c65bd2da924a12b15a825a62525e7b9804"}]}
