Skip to content

Commit 5e35753

Browse files
committed
Merge branch 'Vulkan' #100
2 parents a307c23 + c1b5769 commit 5e35753

File tree

13 files changed

+717
-3
lines changed

13 files changed

+717
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
Added:
44

5+
- Vulkan support #100 via @Eatgrapes
56
- `Path::fillWithPaint` #95 via @vladimirsamsonov
67
- `Pixmap::erase`, `Pixmap implements IHasImageInfo` #101 via @Eatgrapes
78
- `Color::premultiply`, `unpremultiply`, `makeLerpPM` #101 via @Eatgrapes

examples/vulkan/README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Skija Vulkan Example
2+
3+
This example demonstrates how to use Skija with Vulkan.
4+
5+
## Prerequisites
6+
7+
- A Vulkan-capable GPU
8+
9+
## Usage
10+
11+
Key API used:
12+
13+
```java
14+
DirectContext.makeVulkan(
15+
vkInstance,
16+
vkPhysicalDevice,
17+
vkDevice,
18+
vkQueue,
19+
queueIndex,
20+
vkGetInstanceProcAddr,
21+
vkGetDeviceProcAddr
22+
);
23+
```

examples/vulkan/script/run.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#! /usr/bin/env python3
2+
import argparse, glob, os, subprocess, sys
3+
sys.path.append(os.path.normpath(os.path.dirname(__file__) + '/../../../script'))
4+
import common, build, build_utils
5+
6+
def main():
7+
parser = argparse.ArgumentParser()
8+
parser.add_argument('--skija-version')
9+
parser.add_argument('--lwjgl-version', default='3.4.0')
10+
(args, _) = parser.parse_known_args()
11+
12+
if (build_utils.arch == 'x64'):
13+
lwjgl_classifier = "natives-" + build_utils.system
14+
else:
15+
lwjgl_classifier = "natives-" + common.classifier
16+
17+
classpath = common.deps_compile() + [
18+
build_utils.fetch_maven('org.lwjgl', 'lwjgl', args.lwjgl_version),
19+
build_utils.fetch_maven('org.lwjgl', 'lwjgl-glfw', args.lwjgl_version),
20+
build_utils.fetch_maven('org.lwjgl', 'lwjgl-vulkan', args.lwjgl_version),
21+
build_utils.fetch_maven('org.lwjgl', 'lwjgl', args.lwjgl_version, classifier=lwjgl_classifier),
22+
build_utils.fetch_maven('org.lwjgl', 'lwjgl-glfw', args.lwjgl_version, classifier=lwjgl_classifier)
23+
]
24+
25+
if args.skija_version:
26+
classpath += [
27+
build_utils.fetch_maven('io.github.humbleui', 'skija-shared', args.skija_version),
28+
build_utils.fetch_maven('io.github.humbleui', 'skija-' + common.classifier, args.skija_version),
29+
]
30+
else:
31+
build.main()
32+
classpath += [
33+
os.path.join('..', '..', 'platform', 'target', common.classifier, 'classes'),
34+
os.path.join('..', '..', 'shared', 'target', 'classes-java9'),
35+
os.path.join('..', '..', 'shared', 'target', 'classes')
36+
]
37+
38+
os.chdir(common.basedir + '/examples/vulkan')
39+
40+
sources = build_utils.files('src/**/*.java', '../scenes/src/**/*.java')
41+
build_utils.javac(sources, 'target/classes', classpath = classpath, release = '16')
42+
43+
subprocess.check_call([
44+
'java',
45+
'--class-path', build_utils.classpath_join(['target/classes'] + classpath)]
46+
+ (['-XstartOnFirstThread'] if 'macos' == build_utils.system else [])
47+
+ ['-Djava.awt.headless=true',
48+
'-enableassertions',
49+
'-enablesystemassertions',
50+
'-Xcheck:jni',
51+
'-Dskija.logLevel=DEBUG',
52+
'io.github.humbleui.skija.examples.vulkan.Main'])
53+
54+
return 0
55+
56+
if __name__ == '__main__':
57+
sys.exit(main())

0 commit comments

Comments
 (0)