Burton2000 commited on
Commit
47cc9c7
·
1 Parent(s): 53458b8

Update scenario and documentation

Browse files

* Scenario will now work with the latest version of scenario runner
* Remove prebuilt scenario runner
* Update README instructions on running the scenario

README.md CHANGED
@@ -36,19 +36,19 @@ Neural Super Sampling (NSS) is a parameter prediction model for real-time tempor
36
 
37
  NSS is under active development with regular updates planned. As we increase the size and diversity of the training dataset we expect to see significant quality improvements. Follow Arm to stay up to date on the latest releases.
38
 
39
- The model is released under Arm's [AI Model Community License](https://huggingface.co/Arm/neural-super-sampling/blob/main/Arm_AI_Model_Community_License_v1_0_PRE-1154.pdf) which allows NSS to be retrained on datasets captured from your own content. Future releases of the [Neural Graphics Model Gym](https://github.com/arm/neural-graphics-model-gym) will provide the tools to capture and convert content for use in (re)retraining..
40
 
41
  ## Uses
42
 
43
  NSS can be directly integrated into graphics pipelines using ML extensions for Vulkan®. See included ML SDK for Vulkan [scenario](https://huggingface.co/Arm/neural-super-sampling/tree/main/scenario) for the simplest way to evaluate the model. The scenario includes the necessary pre- and post-processing compute shaders along with a single frame worth of input data.
44
 
45
- The recommended way of integrating the model into a graphics pipeline is by using the [VGF Library](https://github.com/arm/ai-ml-sdk-vgf-library/tree/main) from the ML SDK for Vulkan.
46
 
47
  NSS is released under a [permissive license](https://huggingface.co/Arm/neural-super-sampling/blob/main/Arm_AI_Model_Community_License_v1_0_PRE-1154.pdf) designed to foster innovation in the graphics industry and provide differentiation to content creators.
48
 
49
  ### Direct Use
50
 
51
- NSS has been integrated into Unreal Engine via two plugins, the [NSS Plugin for Unreal Engine](https://github.com/arm/neural-graphics-for-unreal/). See our [quick start guide](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/nss-unreal/) for step-by-step instructions on how to use NSS in Unreal® Engine.
52
 
53
  ### Out-of-Scope Use
54
 
@@ -67,52 +67,60 @@ application running at a higher frame rate.
67
 
68
  ## How to Get Started with the Model
69
 
70
- This repository contains pre-trained weights and compiled NSS model in VGF format ready for integration with Vulkan applications.
71
 
72
  The included Scenario demonstrates full execution of the model on a Vulkan compute-capable system. An Emulation Layer is provided to implement ML Extensions for Vulkan where it is not supported by the native Vulkan driver.
73
 
74
  ### Download and Prepare the Scenario
75
 
76
- Clone the NSS model repository from Hugging Face
77
- ```powershell
 
 
 
 
78
  git clone https://huggingface.co/Arm/neural-super-sampling
79
  cd neural-super-sampling
80
- git lfs pull # Make sure Git LFS is installed - https://git-lfs.com/
81
  ```
82
 
83
- ### Run the Scenario
84
 
85
- The NSS Hugging Face repository includes pre-built Windows® binaries for ML Emulation Layer for Vulkan and Scenario Runner. For other platforms,
86
- - build from source following the instructions for [Building the Emulation Layer from source](https://github.com/arm/ai-ml-emulation-layer-for-vulkan/blob/main/README.md#building-the-emulation-layer-from-source) and [Building the Scenario Runner from source](https://github.com/arm/ai-ml-sdk-scenario-runner/blob/main/README.md#building-scenario-runner-from-source)
87
- - adapt the instructions below accordingly
88
 
89
- 1. Set the required environment variables:
90
 
91
- On Windows:
92
- ```powershell
93
- $env:VK_LAYER_PATH="$PWD\bin\windows-x86_64"
94
- $env:VK_INSTANCE_LAYERS="VK_LAYER_ML_Graph_Emulation;VK_LAYER_ML_Tensor_Emulation"
95
- ```
96
 
97
- On Linux (assuming the Emulation Layer binaries and JSON files and Scenario Runner executable are copied to `bin/linux-x86_64`):
98
- ```powershell
99
- export LD_LIBRARY_PATH=$PWD/bin/linux-x86_64:$LD_LIBRARY_PATH
100
- export VK_LAYER_PATH=$PWD/bin/linux-x86_64
101
- export VK_INSTANCE_LAYERS=VK_LAYER_ML_Graph_Emulation:VK_LAYER_ML_Tensor_Emulation
102
  ```
103
-
104
- 2. Execute the scenario:
105
 
106
- On Windows:
107
- ```powershell
108
- bin\windows-x86_64\scenario-runner.exe --scenario scenario\scenario.json --output out
109
- ```
 
 
 
 
 
110
 
111
- On Linux:
112
- ```powershell
113
- bin/linux-x86_64/scenario-runner --scenario scenario/scenario.json --output out
 
 
 
 
 
 
 
 
 
114
  ```
115
-
116
  - Output images are encoded as `B10G11R11_UFLOAT`. This format is common for framebuffers but not widely supported by image viewers. Use [RenderDoc](https://renderdoc.org/) to view these images.
117
 
118
  ## Training and Evaluation
@@ -121,13 +129,13 @@ For background on NSS architecture and training read our blog: [How Neural Super
121
 
122
  Training and evaluation details, including model architecture code, training pipeline, and test configurations, are available at:
123
 
124
- - Model training code: https://github.com/arm/neural-graphics-model-gym
125
- - Examples and tutorials: https://github.com/arm/neural-graphics-model-gym-examples
126
- - Sample dataset: https://huggingface.co/datasets/Arm/neural-graphics-dataset
127
 
128
  ### 🔎 Model Explorer VGF extension
129
 
130
- The [VGF extension to Model Explorer](https://github.com/arm/vgf-adapter-model-explorer) provides a simple interface to visualize model and analyse VGF composition.
131
 
132
  ![Model Explorer screenshot](resources/model-explorer-screenshot.png)
133
 
@@ -145,8 +153,8 @@ The [VGF extension to Model Explorer](https://github.com/arm/vgf-adapter-model-e
145
  🙋🏻‍♀️ For questions or feedback please [start a discussion](https://huggingface.co/Arm/neural-super-sampling/discussions)
146
 
147
  ## Trademark notice
148
- Arm® is a registered trademarks of Arm Limited (or its subsidiaries) in the US and/or elsewhere.
149
-
150
- Windows® is a trademark of the Microsoft group of companies.
151
 
152
- Vulkan® is a registered trademark of the [Khronos® Group](https://www.khronos.org/legal/trademarks).
 
 
 
 
36
 
37
  NSS is under active development with regular updates planned. As we increase the size and diversity of the training dataset we expect to see significant quality improvements. Follow Arm to stay up to date on the latest releases.
38
 
39
+ The model is released under Arm's [AI Model Community License](https://huggingface.co/Arm/neural-super-sampling/blob/main/Arm_AI_Model_Community_License_v1_0_PRE-1154.pdf) which allows NSS to be retrained on datasets captured from your own content. Future releases of the [Neural Graphics Model Gym](https://github.com/arm/neural-graphics-model-gym) will provide the tools to capture and convert content for use in (re)retraining.
40
 
41
  ## Uses
42
 
43
  NSS can be directly integrated into graphics pipelines using ML extensions for Vulkan®. See included ML SDK for Vulkan [scenario](https://huggingface.co/Arm/neural-super-sampling/tree/main/scenario) for the simplest way to evaluate the model. The scenario includes the necessary pre- and post-processing compute shaders along with a single frame worth of input data.
44
 
45
+ The recommended way of integrating the model into a graphics pipeline is by using the [VGF Library](https://github.com/arm/ai-ml-sdk-vgf-library/tree/main) from the ML SDK for Vulkan.
46
 
47
  NSS is released under a [permissive license](https://huggingface.co/Arm/neural-super-sampling/blob/main/Arm_AI_Model_Community_License_v1_0_PRE-1154.pdf) designed to foster innovation in the graphics industry and provide differentiation to content creators.
48
 
49
  ### Direct Use
50
 
51
+ NSS has been integrated into Unreal Engine via the [NSS Plugin for Unreal Engine](https://github.com/arm/neural-graphics-for-unreal/). See our [quick start guide](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/nss-unreal/) for step-by-step instructions on how to use NSS in Unreal® Engine.
52
 
53
  ### Out-of-Scope Use
54
 
 
67
 
68
  ## How to Get Started with the Model
69
 
70
+ This repository contains pre-trained weights and a compiled NSS model in VGF format, ready for integration with Vulkan applications.
71
 
72
  The included Scenario demonstrates full execution of the model on a Vulkan compute-capable system. An Emulation Layer is provided to implement ML Extensions for Vulkan where it is not supported by the native Vulkan driver.
73
 
74
  ### Download and Prepare the Scenario
75
 
76
+ These instructions will work on both Windows and Linux. On Windows, we strongly recommend the use of PowerShell over `cmd.exe` ("Command Prompt").
77
+
78
+ 1. Ensure that Git LFS is installed. See [the project's website](https://git-lfs.com/) for more details.
79
+
80
+ 2. Clone the NSS model repository from Hugging Face:
81
+ ```bash
82
  git clone https://huggingface.co/Arm/neural-super-sampling
83
  cd neural-super-sampling
84
+ git lfs pull
85
  ```
86
 
87
+ ### Install the Scenario Runner and Emulation Layers
88
 
89
+ 1. Follow the steps in the Python documentation's ["Create a new virtual environment"](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/#create-a-new-virtual-environment) guide. We will assume below that you installed this environment into a `.venv` subdirectory.
 
 
90
 
91
+ 2. Follow the steps in the Python documentation's ["Activate a virtual environment"](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/#activate-a-virtual-environment) guide.
92
 
93
+ *Note for Windows users:* It is not necessary to determine the location of the Python interpreter as described in this guide. For reference, however, the correct PowerShell command to do this is `gcm python` rather than the given `where python`.
 
 
 
 
94
 
95
+ 3. Install Arm's Scenario Runner and Emulation Layer into your new virtual environment:
96
+ ```bash
97
+ pip install ai-ml-sdk-scenario-runner ai-ml-emulation-layer-for-vulkan
 
 
98
  ```
 
 
99
 
100
+ 4. The Emulation Layer's documentation explains how its environment variables should be configured on [Linux](https://github.com/arm/ai-ml-emulation-layer-for-vulkan/blob/main/README.md#usage-on-linux) and on [Windows](https://github.com/arm/ai-ml-emulation-layer-for-vulkan/blob/main/README.md#usage-on-windows). The following is a simplified summary, assuming that you are at the root of the NSS model repository.
101
+
102
+ * On Linux, enter these commands into Bash:
103
+ ```bash
104
+ EMULATION_LAYER_DIR=$(find $PWD/.venv -name emulation_layer -type d)
105
+ export LD_LIBRARY_PATH="$EMULATION_LAYER_DIR/deploy/lib:$LD_LIBRARY_PATH"
106
+ export VK_LAYER_PATH="$EMULATION_LAYER_DIR/deploy/share/vulkan/explicit_layer.d:$VK_LAYER_PATH"
107
+ export VK_INSTANCE_LAYERS="VK_LAYER_ML_Graph_Emulation:VK_LAYER_ML_Tensor_Emulation"
108
+ ```
109
 
110
+ * On Windows, enter these commands into PowerShell (`cmd.exe` requires a different syntax):
111
+ ```powershell
112
+ $env:VK_LAYER_PATH="$pwd\.venv\Lib\site-packages\emulation_layer\deploy\bin;$env:VK_LAYER_PATH"
113
+ $env:VK_INSTANCE_LAYERS="VK_LAYER_ML_Graph_Emulation;VK_LAYER_ML_Tensor_Emulation"
114
+ ```
115
+
116
+ ### Run the Scenario
117
+
118
+ - Execute the Scenario Runner:
119
+
120
+ ```bash
121
+ scenario-runner --scenario scenario/scenario.json --output out
122
  ```
123
+
124
  - Output images are encoded as `B10G11R11_UFLOAT`. This format is common for framebuffers but not widely supported by image viewers. Use [RenderDoc](https://renderdoc.org/) to view these images.
125
 
126
  ## Training and Evaluation
 
129
 
130
  Training and evaluation details, including model architecture code, training pipeline, and test configurations, are available at:
131
 
132
+ - Model training code: <https://github.com/arm/neural-graphics-model-gym>
133
+ - Examples and tutorials: <https://github.com/arm/neural-graphics-model-gym-examples>
134
+ - Sample dataset: <https://huggingface.co/datasets/Arm/neural-graphics-dataset>
135
 
136
  ### 🔎 Model Explorer VGF extension
137
 
138
+ The [VGF extension to Model Explorer](https://github.com/arm/vgf-adapter-model-explorer) provides a simple interface to visualize model and analyse VGF composition.
139
 
140
  ![Model Explorer screenshot](resources/model-explorer-screenshot.png)
141
 
 
153
  🙋🏻‍♀️ For questions or feedback please [start a discussion](https://huggingface.co/Arm/neural-super-sampling/discussions)
154
 
155
  ## Trademark notice
 
 
 
156
 
157
+ * Arm® is a registered trademark of Arm Limited (or its subsidiaries) in the US and/or elsewhere.
158
+ * Python® is a registered trademark of the Python Software Foundation.
159
+ * Vulkan® is a registered trademark of the [Khronos® Group](https://www.khronos.org/legal/trademarks).
160
+ * Windows® is a trademark of the Microsoft group of companies.
bin/windows-x86_64/VkLayer_Graph.dll DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:0a2fd54f62bef850685bcc4331714e0590a0a3aef28ea2dd6aa8c9e6f68f4da0
3
- size 7437312
 
 
 
 
bin/windows-x86_64/VkLayer_Graph.json DELETED
@@ -1,29 +0,0 @@
1
- {
2
- "file_format_version": "1.0.0",
3
- "layer": {
4
- "name": "VK_LAYER_ML_Graph_Emulation",
5
- "type": "INSTANCE",
6
- "library_path": ".\\VkLayer_Graph.dll",
7
- "api_version": "1.3.0",
8
- "implementation_version": "1",
9
- "description": "ML Graph Emulation Layer",
10
- "functions": {
11
- "vkGetInstanceProcAddr": "graphGetInstanceProcAddr",
12
- "vkGetDeviceProcAddr": "graphGetDeviceProcAddr"
13
- },
14
- "device_extensions": [
15
- {
16
- "name": "VK_ARM_data_graph",
17
- "spec_version": "1",
18
- "entrypoints": [
19
- "vkGetPhysicalDeviceGraphInstructionSetsARM",
20
- "vkCreateGraphPipelinesARM",
21
- "vkCreateGraphPipelineSessionARM",
22
- "vkGetGraphPipelineSessionMemoryRequirementsARM",
23
- "vkBindGraphPipelineSessionMemoryARM",
24
- "vkDestroyGraphPipelineSessionARM",
25
- "vkCmdDispatchGraphARM"
26
- ]
27
- }]
28
- }
29
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bin/windows-x86_64/VkLayer_Tensor.dll DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:15a7e7f9b4ff74f530a550669740f1c8b5295bdbe9a0474da3e3b9e906c4ce76
3
- size 5689344
 
 
 
 
bin/windows-x86_64/VkLayer_Tensor.json DELETED
@@ -1,31 +0,0 @@
1
- {
2
- "file_format_version": "1.0.0",
3
- "layer": {
4
- "name": "VK_LAYER_ML_Tensor_Emulation",
5
- "type": "INSTANCE",
6
- "library_path": ".\\VkLayer_Tensor.dll",
7
- "api_version": "1.3.0",
8
- "implementation_version": "1",
9
- "description": "ML Tensor Emulation Layer",
10
- "functions": {
11
- "vkGetInstanceProcAddr": "tensorGetInstanceProcAddr",
12
- "vkGetDeviceProcAddr": "tensorGetDeviceProcAddr"
13
- },
14
- "device_extensions": [
15
- {
16
- "name": "VK_ARM_tensors",
17
- "spec_version": "1",
18
- "entrypoints": [
19
- "vkCreateTensorARM",
20
- "vkDestroyTensorARM",
21
- "vkCreateTensorViewARM",
22
- "vkDestroyTensorViewARM",
23
- "vkGetTensorMemoryRequirementsARM",
24
- "vkBindTensorMemoryARM",
25
- "vkGetDeviceTensorMemoryRequirementsARM",
26
- "vkCmdCopyTensorARM"
27
- ]
28
- }
29
- ]
30
- }
31
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bin/windows-x86_64/scenario-runner.exe DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:5a99f1076dec1f504d64387969a3d18dc687c7f95c505dca812e4fcbca60f3d2
3
- size 5285376
 
 
 
 
scenario/scenario.json CHANGED
@@ -1,11 +1,5 @@
1
  {
2
  "commands": [
3
- {
4
- "mark_boundary": {
5
- "frame_id": 0,
6
- "resources": []
7
- }
8
- },
9
  {
10
  "dispatch_compute": {
11
  "shader_ref": "0_pre_process",
@@ -212,7 +206,6 @@
212
  },
213
  {
214
  "mark_boundary": {
215
- "frame_id": 1,
216
  "resources": [
217
  "out_colour"
218
  ]
@@ -504,6 +497,9 @@
504
  "dst": "./out_feedback.dds",
505
  "format": "VK_FORMAT_R8G8B8A8_SNORM",
506
  "shader_access": "writeonly",
 
 
 
507
  "mips": 1,
508
  "min_filter": "LINEAR",
509
  "mag_filter": "LINEAR",
@@ -524,8 +520,8 @@
524
  ],
525
  "format": "VK_FORMAT_R8_SINT",
526
  "shader_access": "readwrite",
527
- "alias_target": {
528
- "resource_ref": "out_feedback"
529
  },
530
  "tiling": "LINEAR"
531
  }
@@ -541,6 +537,9 @@
541
  ],
542
  "format": "VK_FORMAT_R8G8B8A8_SNORM",
543
  "shader_access": "readonly",
 
 
 
544
  "mips": 1,
545
  "min_filter": "LINEAR",
546
  "mag_filter": "LINEAR",
@@ -561,8 +560,8 @@
561
  ],
562
  "format": "VK_FORMAT_R8_SINT",
563
  "shader_access": "readwrite",
564
- "alias_target": {
565
- "resource_ref": "out_tp"
566
  },
567
  "tiling": "LINEAR"
568
  }
@@ -578,6 +577,9 @@
578
  ],
579
  "format": "VK_FORMAT_R8G8B8A8_SNORM",
580
  "shader_access": "readonly",
 
 
 
581
  "mips": 1,
582
  "min_filter": "LINEAR",
583
  "mag_filter": "LINEAR",
@@ -597,8 +599,8 @@
597
  ],
598
  "format": "VK_FORMAT_R8_SINT",
599
  "shader_access": "readwrite",
600
- "alias_target": {
601
- "resource_ref": "out_k3"
602
  },
603
  "tiling": "LINEAR"
604
  }
@@ -614,6 +616,9 @@
614
  ],
615
  "format": "VK_FORMAT_R8G8B8A8_SNORM",
616
  "shader_access": "readonly",
 
 
 
617
  "mips": 1,
618
  "min_filter": "LINEAR",
619
  "mag_filter": "LINEAR",
@@ -633,8 +638,8 @@
633
  ],
634
  "format": "VK_FORMAT_R8_SINT",
635
  "shader_access": "readwrite",
636
- "alias_target": {
637
- "resource_ref": "out_k2"
638
  },
639
  "tiling": "LINEAR"
640
  }
@@ -650,6 +655,9 @@
650
  ],
651
  "format": "VK_FORMAT_R8G8B8A8_SNORM",
652
  "shader_access": "readonly",
 
 
 
653
  "mips": 1,
654
  "min_filter": "LINEAR",
655
  "mag_filter": "LINEAR",
@@ -669,8 +677,8 @@
669
  ],
670
  "format": "VK_FORMAT_R8_SINT",
671
  "shader_access": "readwrite",
672
- "alias_target": {
673
- "resource_ref": "out_k1"
674
  },
675
  "tiling": "LINEAR"
676
  }
@@ -686,6 +694,9 @@
686
  ],
687
  "format": "VK_FORMAT_R8G8B8A8_SNORM",
688
  "shader_access": "readonly",
 
 
 
689
  "mips": 1,
690
  "min_filter": "LINEAR",
691
  "mag_filter": "LINEAR",
@@ -705,8 +716,8 @@
705
  ],
706
  "format": "VK_FORMAT_R8_SINT",
707
  "shader_access": "readwrite",
708
- "alias_target": {
709
- "resource_ref": "out_k0"
710
  },
711
  "tiling": "LINEAR"
712
  }
@@ -840,4 +851,4 @@
840
  }
841
  }
842
  ]
843
- }
 
1
  {
2
  "commands": [
 
 
 
 
 
 
3
  {
4
  "dispatch_compute": {
5
  "shader_ref": "0_pre_process",
 
206
  },
207
  {
208
  "mark_boundary": {
 
209
  "resources": [
210
  "out_colour"
211
  ]
 
497
  "dst": "./out_feedback.dds",
498
  "format": "VK_FORMAT_R8G8B8A8_SNORM",
499
  "shader_access": "writeonly",
500
+ "memory_group": {
501
+ "id": "out_feedback"
502
+ },
503
  "mips": 1,
504
  "min_filter": "LINEAR",
505
  "mag_filter": "LINEAR",
 
520
  ],
521
  "format": "VK_FORMAT_R8_SINT",
522
  "shader_access": "readwrite",
523
+ "memory_group": {
524
+ "id": "out_feedback"
525
  },
526
  "tiling": "LINEAR"
527
  }
 
537
  ],
538
  "format": "VK_FORMAT_R8G8B8A8_SNORM",
539
  "shader_access": "readonly",
540
+ "memory_group": {
541
+ "id": "out_tp"
542
+ },
543
  "mips": 1,
544
  "min_filter": "LINEAR",
545
  "mag_filter": "LINEAR",
 
560
  ],
561
  "format": "VK_FORMAT_R8_SINT",
562
  "shader_access": "readwrite",
563
+ "memory_group": {
564
+ "id": "out_tp"
565
  },
566
  "tiling": "LINEAR"
567
  }
 
577
  ],
578
  "format": "VK_FORMAT_R8G8B8A8_SNORM",
579
  "shader_access": "readonly",
580
+ "memory_group": {
581
+ "id": "out_k3"
582
+ },
583
  "mips": 1,
584
  "min_filter": "LINEAR",
585
  "mag_filter": "LINEAR",
 
599
  ],
600
  "format": "VK_FORMAT_R8_SINT",
601
  "shader_access": "readwrite",
602
+ "memory_group": {
603
+ "id": "out_k3"
604
  },
605
  "tiling": "LINEAR"
606
  }
 
616
  ],
617
  "format": "VK_FORMAT_R8G8B8A8_SNORM",
618
  "shader_access": "readonly",
619
+ "memory_group": {
620
+ "id": "out_k2"
621
+ },
622
  "mips": 1,
623
  "min_filter": "LINEAR",
624
  "mag_filter": "LINEAR",
 
638
  ],
639
  "format": "VK_FORMAT_R8_SINT",
640
  "shader_access": "readwrite",
641
+ "memory_group": {
642
+ "id": "out_k2"
643
  },
644
  "tiling": "LINEAR"
645
  }
 
655
  ],
656
  "format": "VK_FORMAT_R8G8B8A8_SNORM",
657
  "shader_access": "readonly",
658
+ "memory_group": {
659
+ "id": "out_k1"
660
+ },
661
  "mips": 1,
662
  "min_filter": "LINEAR",
663
  "mag_filter": "LINEAR",
 
677
  ],
678
  "format": "VK_FORMAT_R8_SINT",
679
  "shader_access": "readwrite",
680
+ "memory_group": {
681
+ "id": "out_k1"
682
  },
683
  "tiling": "LINEAR"
684
  }
 
694
  ],
695
  "format": "VK_FORMAT_R8G8B8A8_SNORM",
696
  "shader_access": "readonly",
697
+ "memory_group": {
698
+ "id": "out_k0"
699
+ },
700
  "mips": 1,
701
  "min_filter": "LINEAR",
702
  "mag_filter": "LINEAR",
 
716
  ],
717
  "format": "VK_FORMAT_R8_SINT",
718
  "shader_access": "readwrite",
719
+ "memory_group": {
720
+ "id": "out_k0"
721
  },
722
  "tiling": "LINEAR"
723
  }
 
851
  }
852
  }
853
  ]
854
+ }