Skip to content

Commit

Permalink
Merge pull request #312 from Vera-Firefly/newrenderer
Browse files Browse the repository at this point in the history
Feat[NewRenderer]: Add freedreno renderer
  • Loading branch information
ShirosakiMio authored Mar 18, 2024
2 parents e44c70a + 017d5a2 commit d410d6e
Show file tree
Hide file tree
Showing 9 changed files with 17 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ private void create() {
rendererDataList.add(FCLConfig.Renderer.RENDERER_ANGLE);
rendererDataList.add(FCLConfig.Renderer.RENDERER_VGPU);
rendererDataList.add(FCLConfig.Renderer.RENDERER_ZINK);
rendererDataList.add(FCLConfig.Renderer.RENDERER_FREEDRENO);
rendererSpinner.setDataList(rendererDataList);

// add spinner text
Expand All @@ -166,6 +167,7 @@ private void create() {
rendererList.add(getContext().getString(R.string.settings_fcl_renderer_angle));
rendererList.add(getContext().getString(R.string.settings_fcl_renderer_vgpu));
rendererList.add(getContext().getString(R.string.settings_fcl_renderer_zink));
rendererList.add(getContext().getString(R.string.settings_fcl_renderer_freedreno));
ArrayAdapter<String> rendererAdapter = new ArrayAdapter<>(getContext(), R.layout.item_spinner_auto_tint, rendererList);
rendererAdapter.setDropDownViewResource(R.layout.item_spinner_dropdown);
rendererSpinner.setAdapter(rendererAdapter);
Expand Down
3 changes: 2 additions & 1 deletion FCL/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -746,6 +746,7 @@
<string name="settings_fcl_renderer_angle">ANGLE (OpenGL 4.6, only support 1.17+)</string>
<string name="settings_fcl_renderer_vgpu" >VGPU (OpenGL 2.1+, only support 1.17-)</string>
<string name="settings_fcl_renderer_zink" translatable="false">Vulkan Zink (OpenGL 4.6)</string>
<string name="settings_fcl_renderer_freedreno" translatable="false">Freedreno (Adreno, OpenGL 4.6)</string>

<string name="settings_game">Game Settings</string>
<string name="settings_game_dimension">Resolution</string>
Expand Down Expand Up @@ -932,4 +933,4 @@
<string name="world_reveal">Reveal in Explorer</string>
<string name="world_show_all">Show All</string>
<string name="world_time">EEE, MMM d, yyyy HH:mm:ss</string>
</resources>
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ public enum Renderer implements Serializable {
RENDERER_VIRGL("VirGLRenderer:libOSMesa_81.so:libEGL.so"),
RENDERER_ANGLE("ANGLE:libtinywrapper.so:libEGL_angle.so"),
RENDERER_VGPU("VGPU:libvgpu.so:libEGL.so"),
RENDERER_ZINK("Zink:libOSMesa_8.so:libEGL.so");
RENDERER_ZINK("Zink:libOSMesa_8.so:libEGL.so"),
RENDERER_FREEDRENO("Freedreno:libOSMesa_8.so:libEGL.so");

private final String glInfo;
private String glVersion;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,9 @@ private static void addRendererEnv(FCLConfig config, HashMap<String, String> env
envMap.put("OSMESA_NO_FLUSH_FRONTBUFFER", "1");
} else if (renderer == FCLConfig.Renderer.RENDERER_ZINK) {
envMap.put("GALLIUM_DRIVER", "zink");
} else if (renderer == FCLConfig.Renderer.RENDERER_FREEDRENO) {
envMap.put("GALLIUM_DRIVER", "freedreno");
envMap.put("MESA_LOADER_DRIVER_OVERRIDE", "kgsl");
}
}
}
Expand Down
9 changes: 4 additions & 5 deletions FCLauncher/src/main/jni/glfw/fcl_window.c
Original file line number Diff line number Diff line change
Expand Up @@ -345,11 +345,10 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API)
{
const char *renderer = getenv("LIBGL_STRING");
if (strcmp(renderer, "VirGLRenderer") == 0) {
if (!_glfwInitEGL())
return GLFW_FALSE;
}
if (strcmp(renderer, "Zink") == 0) {
if (strcmp(renderer, "Zink") == 0 ||
strcmp(renderer, "Freedreno") == 0 ||
strcmp(renderer, "VirGLRenderer") == 0)
{
if (!_glfwInitEGL())
return GLFW_FALSE;
}
Expand Down
6 changes: 4 additions & 2 deletions FCLauncher/src/main/jni/glfw/osmesa_context.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,10 @@ static void swapBuffersOSMesa(_GLFWwindow* window)
if (strcmp(getenv("LIBGL_STRING"), "VirGLRenderer") == 0) {
window->context.Finish();
vtest_swap_buffers();
} else if (strcmp(getenv("LIBGL_STRING"), "Zink") == 0) {
} else if (strcmp(getenv("LIBGL_STRING"), "Zink") == 0 || strcmp(getenv("LIBGL_STRING"), "Freedreno") == 0) {
OSMesaContext context = OSMesaGetCurrentContext();
if (context == NULL) {
printf("Zink: attempted to swap buffers without context!");
printf("OSMesa: attempted to swap buffers without context!");
return;
}
OSMesaMakeCurrent(context, buf.bits, GL_UNSIGNED_BYTE, window->context.osmesa.width, window->context.osmesa.height);
Expand Down Expand Up @@ -196,6 +196,8 @@ GLFWbool _glfwInitOSMesa(void)
} else if (strcmp(renderer, "Zink") == 0) {
load_vulkan();
_glfw.osmesa.handle = _glfw_dlopen("libOSMesa_8.so");
} else if (strcmp(renderer, "Freedreno") == 0) {
_glfw.osmesa.handle = _glfw_dlopen("libOSMesa_8.so");
}

if (!_glfw.osmesa.handle)
Expand Down
Binary file modified FCLauncher/src/main/jniLibs/arm64-v8a/libOSMesa_8.so
Binary file not shown.
Binary file modified FCLauncher/src/main/jniLibs/armeabi-v7a/libOSMesa_8.so
Binary file not shown.
Binary file modified FCLauncher/src/main/jniLibs/x86_64/libOSMesa_8.so
Binary file not shown.

0 comments on commit d410d6e

Please sign in to comment.