From f215e02bf85f68d3a6106c2a1f4f7f063f819064 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 11 Apr 2024 10:17:27 +0200 Subject: Adding upstream version 7.0.14-dfsg. Signed-off-by: Daniel Baumann --- src/VBox/Devices/Graphics/shaders/Makefile.kmk | 50 +++++ .../Devices/Graphics/shaders/d3d11blitter.hlsl | 75 +++++++ .../Graphics/shaders/d3d11blitter.hlsl.ps.h | 169 ++++++++++++++ .../Graphics/shaders/d3d11blitter.hlsl.vs.h | 249 +++++++++++++++++++++ 4 files changed, 543 insertions(+) create mode 100644 src/VBox/Devices/Graphics/shaders/Makefile.kmk create mode 100644 src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl create mode 100644 src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.ps.h create mode 100644 src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.vs.h (limited to 'src/VBox/Devices/Graphics/shaders') diff --git a/src/VBox/Devices/Graphics/shaders/Makefile.kmk b/src/VBox/Devices/Graphics/shaders/Makefile.kmk new file mode 100644 index 00000000..286dc873 --- /dev/null +++ b/src/VBox/Devices/Graphics/shaders/Makefile.kmk @@ -0,0 +1,50 @@ +# $Id: Makefile.kmk $ +## @file +# Makefile for D3D11 shader compilation. +# + +# +# Copyright (C) 2022-2023 Oracle and/or its affiliates. +# +# This file is part of VirtualBox base platform packages, as +# available from https://www.virtualbox.org. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, in version 3 of the +# License. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# SPDX-License-Identifier: GPL-3.0-only +# + +SUB_DEPTH = ../../../../.. +include $(KBUILD_PATH)/subheader.kmk + +OTHERS += \ + $(PATH_SUB_CURRENT)/d3d11blitter.hlsl.vs.h \ + $(PATH_SUB_CURRENT)/d3d11blitter.hlsl.ps.h +OTHERS_CLEAN += \ + $(PATH_SUB_CURRENT)/d3d11blitter.hlsl.vs.h \ + $(PATH_SUB_CURRENT)/d3d11blitter.hlsl.ps.h + +VBOX_FXC ?= $(PATH_SDK_$(VBOX_WINPSDK)_BIN)/fxc.exe + +$(PATH_SUB_CURRENT)/d3d11blitter.hlsl.vs.h: \ + $(PATH_SUB_CURRENT)/Makefile.kmk \ + $(PATH_SUB_CURRENT)/d3d11blitter.hlsl + $(VBOX_FXC) /nologo /Fhd3d11blitter.hlsl.vs.h /Evs_blitter /Tvs_5_0 d3d11blitter.hlsl + +$(PATH_SUB_CURRENT)/d3d11blitter.hlsl.ps.h: \ + $(PATH_SUB_CURRENT)/Makefile.kmk \ + $(PATH_SUB_CURRENT)/d3d11blitter.hlsl + $(VBOX_FXC) /nologo /Fhd3d11blitter.hlsl.ps.h /Eps_blitter /Tps_5_0 d3d11blitter.hlsl + +include $(FILE_KBUILD_SUB_FOOTER) diff --git a/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl b/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl new file mode 100644 index 00000000..b892752f --- /dev/null +++ b/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl @@ -0,0 +1,75 @@ +/* $Id: d3d11blitter.hlsl $ */ +/* + * Blitter for dxgiBlt/SVGA_3D_CMD_DX_PRESENTBLT. + * + * fxc /nologo /Fhd3d11blitter.hlsl.vs.h /Evs_blitter /Tvs_5_0 d3d11blitter.hlsl + * fxc /nologo /Fhd3d11blitter.hlsl.ps.h /Eps_blitter /Tps_5_0 d3d11blitter.hlsl + */ + +/* + * Copyright (C) 2022-2023 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +Texture2D t; +sampler s; + +cbuffer VSParameters +{ + float scaleX; + float scaleY; + float shiftX; + float shiftY; +}; + +struct VSInput +{ + uint VertexID : SV_VertexID; +}; + +struct VSOutput +{ + float4 position : SV_POSITION; + float2 texcoord : TEXCOORD0; + float2 alpha : TEXCOORD1; +}; + +VSOutput vs_blitter(VSInput input) +{ + VSOutput output; + + float x = (input.VertexID & 1) ? 1.0f : -1.0f; + float y = (input.VertexID & 2) ? -1.0f : 1.0f; + x = x * scaleX + shiftX; + y = y * scaleY + shiftY; + output.position = float4(x, y, 0.0f, 1.0f); + + output.texcoord.x = (input.VertexID & 1) ? 1.0f : 0.0f; + output.texcoord.y = (input.VertexID & 2) ? 1.0f : 0.0f; + + output.alpha = float2(1.0f, 0.0f); + + return output; +} + +float4 ps_blitter(VSOutput input) : SV_TARGET +{ + return float4(t.Sample(s, input.texcoord).rgb, input.alpha.x); +} diff --git a/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.ps.h b/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.ps.h new file mode 100644 index 00000000..dba5f159 --- /dev/null +++ b/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.ps.h @@ -0,0 +1,169 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 10.1 +// +// +// Resource Bindings: +// +// Name Type Format Dim HLSL Bind Count +// ------------------------------ ---------- ------- ----------- -------------- ------ +// s sampler NA NA s0 1 +// t texture float4 2d t0 1 +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_POSITION 0 xyzw 0 POS float +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 zw 1 NONE float z +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_TARGET 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_sampler s0, mode_default +dcl_resource_texture2d (float,float,float,float) t0 +dcl_input_ps linear v1.xy +dcl_input_ps linear v1.z +dcl_output o0.xyzw +dcl_temps 1 +sample_indexable(texture2d)(float,float,float,float) r0.xyz, v1.xyxx, t0.xyzw, s0 +mov o0.xyz, r0.xyzx +mov o0.w, v1.z +ret +// Approximately 4 instruction slots used +#endif + +const BYTE g_ps_blitter[] = +{ + 68, 88, 66, 67, 63, 252, + 141, 106, 55, 56, 211, 92, + 55, 135, 46, 227, 111, 177, + 216, 163, 1, 0, 0, 0, + 216, 2, 0, 0, 5, 0, + 0, 0, 52, 0, 0, 0, + 228, 0, 0, 0, 84, 1, + 0, 0, 136, 1, 0, 0, + 60, 2, 0, 0, 82, 68, + 69, 70, 168, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 60, 0, 0, 0, 0, 5, + 255, 255, 0, 1, 0, 0, + 128, 0, 0, 0, 82, 68, + 49, 49, 60, 0, 0, 0, + 24, 0, 0, 0, 32, 0, + 0, 0, 40, 0, 0, 0, + 36, 0, 0, 0, 12, 0, + 0, 0, 0, 0, 0, 0, + 124, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 126, 0, 0, 0, + 2, 0, 0, 0, 5, 0, + 0, 0, 4, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 1, 0, 0, 0, + 12, 0, 0, 0, 115, 0, + 116, 0, 77, 105, 99, 114, + 111, 115, 111, 102, 116, 32, + 40, 82, 41, 32, 72, 76, + 83, 76, 32, 83, 104, 97, + 100, 101, 114, 32, 67, 111, + 109, 112, 105, 108, 101, 114, + 32, 49, 48, 46, 49, 0, + 73, 83, 71, 78, 104, 0, + 0, 0, 3, 0, 0, 0, + 8, 0, 0, 0, 80, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 92, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 3, 3, 0, 0, 92, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 12, 4, 0, 0, 83, 86, + 95, 80, 79, 83, 73, 84, + 73, 79, 78, 0, 84, 69, + 88, 67, 79, 79, 82, 68, + 0, 171, 171, 171, 79, 83, + 71, 78, 44, 0, 0, 0, + 1, 0, 0, 0, 8, 0, + 0, 0, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 83, 86, 95, 84, + 65, 82, 71, 69, 84, 0, + 171, 171, 83, 72, 69, 88, + 172, 0, 0, 0, 80, 0, + 0, 0, 43, 0, 0, 0, + 106, 8, 0, 1, 90, 0, + 0, 3, 0, 96, 16, 0, + 0, 0, 0, 0, 88, 24, + 0, 4, 0, 112, 16, 0, + 0, 0, 0, 0, 85, 85, + 0, 0, 98, 16, 0, 3, + 50, 16, 16, 0, 1, 0, + 0, 0, 98, 16, 0, 3, + 66, 16, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 242, 32, 16, 0, 0, 0, + 0, 0, 104, 0, 0, 2, + 1, 0, 0, 0, 69, 0, + 0, 139, 194, 0, 0, 128, + 67, 85, 21, 0, 114, 0, + 16, 0, 0, 0, 0, 0, + 70, 16, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 114, 32, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 130, 32, 16, 0, 0, 0, + 0, 0, 42, 16, 16, 0, + 1, 0, 0, 0, 62, 0, + 0, 1, 83, 84, 65, 84, + 148, 0, 0, 0, 4, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0 +}; diff --git a/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.vs.h b/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.vs.h new file mode 100644 index 00000000..a6592b1f --- /dev/null +++ b/src/VBox/Devices/Graphics/shaders/d3d11blitter.hlsl.vs.h @@ -0,0 +1,249 @@ +#if 0 +// +// Generated by Microsoft (R) HLSL Shader Compiler 10.1 +// +// +// Buffer Definitions: +// +// cbuffer VSParameters +// { +// +// float scaleX; // Offset: 0 Size: 4 +// float scaleY; // Offset: 4 Size: 4 +// float shiftX; // Offset: 8 Size: 4 +// float shiftY; // Offset: 12 Size: 4 +// +// } +// +// +// Resource Bindings: +// +// Name Type Format Dim HLSL Bind Count +// ------------------------------ ---------- ------- ----------- -------------- ------ +// VSParameters cbuffer NA NA cb0 1 +// +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_VertexID 0 x 0 VERTID uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_POSITION 0 xyzw 0 POS float xyzw +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 zw 1 NONE float zw +// +vs_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[1], immediateIndexed +dcl_input_sgv v0.x, vertex_id +dcl_output_siv o0.xyzw, position +dcl_output o1.xy +dcl_output o1.zw +dcl_temps 1 +and r0.xyzw, v0.xxxx, l(1, 2, 1, 2) +movc r0.xyzw, r0.xyzw, l(1.000000,-1.000000,1.000000,1.000000), l(-1.000000,1.000000,0,0) +mad o0.xy, r0.xyxx, cb0[0].xyxx, cb0[0].zwzz +mov o1.xy, r0.zwzz +mov o0.zw, l(0,0,0,1.000000) +mov o1.zw, l(0,0,1.000000,0) +ret +// Approximately 7 instruction slots used +#endif + +const BYTE g_vs_blitter[] = +{ + 68, 88, 66, 67, 225, 37, + 228, 7, 29, 113, 112, 121, + 16, 192, 133, 165, 100, 74, + 183, 80, 1, 0, 0, 0, + 96, 4, 0, 0, 5, 0, + 0, 0, 52, 0, 0, 0, + 212, 1, 0, 0, 8, 2, + 0, 0, 120, 2, 0, 0, + 196, 3, 0, 0, 82, 68, + 69, 70, 152, 1, 0, 0, + 1, 0, 0, 0, 108, 0, + 0, 0, 1, 0, 0, 0, + 60, 0, 0, 0, 0, 5, + 254, 255, 0, 1, 0, 0, + 109, 1, 0, 0, 82, 68, + 49, 49, 60, 0, 0, 0, + 24, 0, 0, 0, 32, 0, + 0, 0, 40, 0, 0, 0, + 36, 0, 0, 0, 12, 0, + 0, 0, 0, 0, 0, 0, + 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 86, 83, 80, 97, + 114, 97, 109, 101, 116, 101, + 114, 115, 0, 171, 171, 171, + 92, 0, 0, 0, 4, 0, + 0, 0, 132, 0, 0, 0, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 36, 1, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 2, 0, 0, 0, 52, 1, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 88, 1, + 0, 0, 4, 0, 0, 0, + 4, 0, 0, 0, 2, 0, + 0, 0, 52, 1, 0, 0, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 95, 1, 0, 0, + 8, 0, 0, 0, 4, 0, + 0, 0, 2, 0, 0, 0, + 52, 1, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 255, 255, + 255, 255, 0, 0, 0, 0, + 102, 1, 0, 0, 12, 0, + 0, 0, 4, 0, 0, 0, + 2, 0, 0, 0, 52, 1, + 0, 0, 0, 0, 0, 0, + 255, 255, 255, 255, 0, 0, + 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 115, 99, + 97, 108, 101, 88, 0, 102, + 108, 111, 97, 116, 0, 171, + 171, 171, 0, 0, 3, 0, + 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 43, 1, + 0, 0, 115, 99, 97, 108, + 101, 89, 0, 115, 104, 105, + 102, 116, 88, 0, 115, 104, + 105, 102, 116, 89, 0, 77, + 105, 99, 114, 111, 115, 111, + 102, 116, 32, 40, 82, 41, + 32, 72, 76, 83, 76, 32, + 83, 104, 97, 100, 101, 114, + 32, 67, 111, 109, 112, 105, + 108, 101, 114, 32, 49, 48, + 46, 49, 0, 171, 171, 171, + 73, 83, 71, 78, 44, 0, + 0, 0, 1, 0, 0, 0, + 8, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 83, 86, + 95, 86, 101, 114, 116, 101, + 120, 73, 68, 0, 79, 83, + 71, 78, 104, 0, 0, 0, + 3, 0, 0, 0, 8, 0, + 0, 0, 80, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 92, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 3, 12, + 0, 0, 92, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 12, 3, + 0, 0, 83, 86, 95, 80, + 79, 83, 73, 84, 73, 79, + 78, 0, 84, 69, 88, 67, + 79, 79, 82, 68, 0, 171, + 171, 171, 83, 72, 69, 88, + 68, 1, 0, 0, 80, 0, + 1, 0, 81, 0, 0, 0, + 106, 8, 0, 1, 89, 0, + 0, 4, 70, 142, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 96, 0, 0, 4, + 18, 16, 16, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 103, 0, 0, 4, 242, 32, + 16, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 50, 32, 16, 0, + 1, 0, 0, 0, 101, 0, + 0, 3, 194, 32, 16, 0, + 1, 0, 0, 0, 104, 0, + 0, 2, 1, 0, 0, 0, + 1, 0, 0, 10, 242, 0, + 16, 0, 0, 0, 0, 0, + 6, 16, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 1, 0, 0, 0, 2, 0, + 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 55, 0, + 0, 15, 242, 0, 16, 0, + 0, 0, 0, 0, 70, 14, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 63, 0, 0, 128, 191, + 0, 0, 128, 63, 0, 0, + 128, 63, 2, 64, 0, 0, + 0, 0, 128, 191, 0, 0, + 128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 11, 50, 32, 16, 0, + 0, 0, 0, 0, 70, 0, + 16, 0, 0, 0, 0, 0, + 70, 128, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 230, 138, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 50, 32, + 16, 0, 1, 0, 0, 0, + 230, 10, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 8, + 194, 32, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 128, 63, 54, 0, + 0, 8, 194, 32, 16, 0, + 1, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 128, 63, 0, 0, 0, 0, + 62, 0, 0, 1, 83, 84, + 65, 84, 148, 0, 0, 0, + 7, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +}; -- cgit v1.2.3