mirror of
https://github.com/AngelAuraMC/Amethyst-Android.git
synced 2025-09-15 23:59:21 -04:00
Zink start
This commit is contained in:
parent
2e17542fc7
commit
9ddedb6c50
Binary file not shown.
@ -1 +1 @@
|
||||
1678189863424
|
||||
1685660350631
|
@ -442,7 +442,6 @@ public class JREUtils {
|
||||
case "opengles2_5":
|
||||
case "opengles3":
|
||||
renderLibrary = "libgl4es_114.so"; break;
|
||||
case "opengles3_virgl":
|
||||
case "vulkan_zink": renderLibrary = "libOSMesa_8.so"; break;
|
||||
case "opengles3_desktopgl_angle_vulkan" : renderLibrary = "libtinywrapper.so"; break;
|
||||
default:
|
||||
|
@ -23,563 +23,7 @@
|
||||
#include <environ/environ.h>
|
||||
#include "utils.h"
|
||||
#include "ctxbridges/gl_bridge.h"
|
||||
// region OSMESA internals
|
||||
|
||||
struct pipe_screen;
|
||||
|
||||
//only get what we need to access/modify
|
||||
struct st_manager
|
||||
{
|
||||
struct pipe_screen *screen;
|
||||
};
|
||||
struct st_context_iface
|
||||
{
|
||||
void *st_context_private;
|
||||
};
|
||||
struct zink_device_info
|
||||
{
|
||||
bool have_EXT_conditional_rendering;
|
||||
bool have_EXT_transform_feedback;
|
||||
};
|
||||
struct zink_screen
|
||||
{
|
||||
struct zink_device_info info;
|
||||
};
|
||||
|
||||
enum st_attachment_type {
|
||||
ST_ATTACHMENT_FRONT_LEFT,
|
||||
ST_ATTACHMENT_BACK_LEFT,
|
||||
ST_ATTACHMENT_FRONT_RIGHT,
|
||||
ST_ATTACHMENT_BACK_RIGHT,
|
||||
ST_ATTACHMENT_DEPTH_STENCIL,
|
||||
ST_ATTACHMENT_ACCUM,
|
||||
ST_ATTACHMENT_SAMPLE,
|
||||
|
||||
ST_ATTACHMENT_COUNT,
|
||||
ST_ATTACHMENT_INVALID = -1
|
||||
};
|
||||
enum pipe_format {
|
||||
PIPE_FORMAT_NONE,
|
||||
PIPE_FORMAT_B8G8R8A8_UNORM,
|
||||
PIPE_FORMAT_B8G8R8X8_UNORM,
|
||||
PIPE_FORMAT_A8R8G8B8_UNORM,
|
||||
PIPE_FORMAT_X8R8G8B8_UNORM,
|
||||
PIPE_FORMAT_B5G5R5A1_UNORM,
|
||||
PIPE_FORMAT_R4G4B4A4_UNORM,
|
||||
PIPE_FORMAT_B4G4R4A4_UNORM,
|
||||
PIPE_FORMAT_R5G6B5_UNORM,
|
||||
PIPE_FORMAT_B5G6R5_UNORM,
|
||||
PIPE_FORMAT_R10G10B10A2_UNORM,
|
||||
PIPE_FORMAT_L8_UNORM, /**< ubyte luminance */
|
||||
PIPE_FORMAT_A8_UNORM, /**< ubyte alpha */
|
||||
PIPE_FORMAT_I8_UNORM, /**< ubyte intensity */
|
||||
PIPE_FORMAT_L8A8_UNORM, /**< ubyte alpha, luminance */
|
||||
PIPE_FORMAT_L16_UNORM, /**< ushort luminance */
|
||||
PIPE_FORMAT_UYVY,
|
||||
PIPE_FORMAT_YUYV,
|
||||
PIPE_FORMAT_Z16_UNORM,
|
||||
PIPE_FORMAT_Z16_UNORM_S8_UINT,
|
||||
PIPE_FORMAT_Z32_UNORM,
|
||||
PIPE_FORMAT_Z32_FLOAT,
|
||||
PIPE_FORMAT_Z24_UNORM_S8_UINT,
|
||||
PIPE_FORMAT_S8_UINT_Z24_UNORM,
|
||||
PIPE_FORMAT_Z24X8_UNORM,
|
||||
PIPE_FORMAT_X8Z24_UNORM,
|
||||
PIPE_FORMAT_S8_UINT, /**< ubyte stencil */
|
||||
PIPE_FORMAT_R64_FLOAT,
|
||||
PIPE_FORMAT_R64G64_FLOAT,
|
||||
PIPE_FORMAT_R64G64B64_FLOAT,
|
||||
PIPE_FORMAT_R64G64B64A64_FLOAT,
|
||||
PIPE_FORMAT_R32_FLOAT,
|
||||
PIPE_FORMAT_R32G32_FLOAT,
|
||||
PIPE_FORMAT_R32G32B32_FLOAT,
|
||||
PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
PIPE_FORMAT_R32_UNORM,
|
||||
PIPE_FORMAT_R32G32_UNORM,
|
||||
PIPE_FORMAT_R32G32B32_UNORM,
|
||||
PIPE_FORMAT_R32G32B32A32_UNORM,
|
||||
PIPE_FORMAT_R32_USCALED,
|
||||
PIPE_FORMAT_R32G32_USCALED,
|
||||
PIPE_FORMAT_R32G32B32_USCALED,
|
||||
PIPE_FORMAT_R32G32B32A32_USCALED,
|
||||
PIPE_FORMAT_R32_SNORM,
|
||||
PIPE_FORMAT_R32G32_SNORM,
|
||||
PIPE_FORMAT_R32G32B32_SNORM,
|
||||
PIPE_FORMAT_R32G32B32A32_SNORM,
|
||||
PIPE_FORMAT_R32_SSCALED,
|
||||
PIPE_FORMAT_R32G32_SSCALED,
|
||||
PIPE_FORMAT_R32G32B32_SSCALED,
|
||||
PIPE_FORMAT_R32G32B32A32_SSCALED,
|
||||
PIPE_FORMAT_R16_UNORM,
|
||||
PIPE_FORMAT_R16G16_UNORM,
|
||||
PIPE_FORMAT_R16G16B16_UNORM,
|
||||
PIPE_FORMAT_R16G16B16A16_UNORM,
|
||||
PIPE_FORMAT_R16_USCALED,
|
||||
PIPE_FORMAT_R16G16_USCALED,
|
||||
PIPE_FORMAT_R16G16B16_USCALED,
|
||||
PIPE_FORMAT_R16G16B16A16_USCALED,
|
||||
PIPE_FORMAT_R16_SNORM,
|
||||
PIPE_FORMAT_R16G16_SNORM,
|
||||
PIPE_FORMAT_R16G16B16_SNORM,
|
||||
PIPE_FORMAT_R16G16B16A16_SNORM,
|
||||
PIPE_FORMAT_R16_SSCALED,
|
||||
PIPE_FORMAT_R16G16_SSCALED,
|
||||
PIPE_FORMAT_R16G16B16_SSCALED,
|
||||
PIPE_FORMAT_R16G16B16A16_SSCALED,
|
||||
PIPE_FORMAT_R8_UNORM,
|
||||
PIPE_FORMAT_R8G8_UNORM,
|
||||
PIPE_FORMAT_R8G8B8_UNORM,
|
||||
PIPE_FORMAT_B8G8R8_UNORM,
|
||||
PIPE_FORMAT_R8G8B8A8_UNORM,
|
||||
PIPE_FORMAT_X8B8G8R8_UNORM,
|
||||
PIPE_FORMAT_R8_USCALED,
|
||||
PIPE_FORMAT_R8G8_USCALED,
|
||||
PIPE_FORMAT_R8G8B8_USCALED,
|
||||
PIPE_FORMAT_B8G8R8_USCALED,
|
||||
PIPE_FORMAT_R8G8B8A8_USCALED,
|
||||
PIPE_FORMAT_B8G8R8A8_USCALED,
|
||||
PIPE_FORMAT_A8B8G8R8_USCALED,
|
||||
PIPE_FORMAT_R8_SNORM,
|
||||
PIPE_FORMAT_R8G8_SNORM,
|
||||
PIPE_FORMAT_R8G8B8_SNORM,
|
||||
PIPE_FORMAT_B8G8R8_SNORM,
|
||||
PIPE_FORMAT_R8G8B8A8_SNORM,
|
||||
PIPE_FORMAT_B8G8R8A8_SNORM,
|
||||
PIPE_FORMAT_R8_SSCALED,
|
||||
PIPE_FORMAT_R8G8_SSCALED,
|
||||
PIPE_FORMAT_R8G8B8_SSCALED,
|
||||
PIPE_FORMAT_B8G8R8_SSCALED,
|
||||
PIPE_FORMAT_R8G8B8A8_SSCALED,
|
||||
PIPE_FORMAT_B8G8R8A8_SSCALED,
|
||||
PIPE_FORMAT_A8B8G8R8_SSCALED,
|
||||
PIPE_FORMAT_R32_FIXED,
|
||||
PIPE_FORMAT_R32G32_FIXED,
|
||||
PIPE_FORMAT_R32G32B32_FIXED,
|
||||
PIPE_FORMAT_R32G32B32A32_FIXED,
|
||||
PIPE_FORMAT_R16_FLOAT,
|
||||
PIPE_FORMAT_R16G16_FLOAT,
|
||||
PIPE_FORMAT_R16G16B16_FLOAT,
|
||||
PIPE_FORMAT_R16G16B16A16_FLOAT,
|
||||
|
||||
/* sRGB formats */
|
||||
PIPE_FORMAT_L8_SRGB,
|
||||
PIPE_FORMAT_R8_SRGB,
|
||||
PIPE_FORMAT_L8A8_SRGB,
|
||||
PIPE_FORMAT_R8G8_SRGB,
|
||||
PIPE_FORMAT_R8G8B8_SRGB,
|
||||
PIPE_FORMAT_B8G8R8_SRGB,
|
||||
PIPE_FORMAT_A8B8G8R8_SRGB,
|
||||
PIPE_FORMAT_X8B8G8R8_SRGB,
|
||||
PIPE_FORMAT_B8G8R8A8_SRGB,
|
||||
PIPE_FORMAT_B8G8R8X8_SRGB,
|
||||
PIPE_FORMAT_A8R8G8B8_SRGB,
|
||||
PIPE_FORMAT_X8R8G8B8_SRGB,
|
||||
PIPE_FORMAT_R8G8B8A8_SRGB,
|
||||
|
||||
/* compressed formats */
|
||||
PIPE_FORMAT_DXT1_RGB,
|
||||
PIPE_FORMAT_DXT1_RGBA,
|
||||
PIPE_FORMAT_DXT3_RGBA,
|
||||
PIPE_FORMAT_DXT5_RGBA,
|
||||
|
||||
/* sRGB, compressed */
|
||||
PIPE_FORMAT_DXT1_SRGB,
|
||||
PIPE_FORMAT_DXT1_SRGBA,
|
||||
PIPE_FORMAT_DXT3_SRGBA,
|
||||
PIPE_FORMAT_DXT5_SRGBA,
|
||||
|
||||
/* rgtc compressed */
|
||||
PIPE_FORMAT_RGTC1_UNORM,
|
||||
PIPE_FORMAT_RGTC1_SNORM,
|
||||
PIPE_FORMAT_RGTC2_UNORM,
|
||||
PIPE_FORMAT_RGTC2_SNORM,
|
||||
|
||||
PIPE_FORMAT_R8G8_B8G8_UNORM,
|
||||
PIPE_FORMAT_G8R8_G8B8_UNORM,
|
||||
|
||||
/* mixed formats */
|
||||
PIPE_FORMAT_R8SG8SB8UX8U_NORM,
|
||||
PIPE_FORMAT_R5SG5SB6U_NORM,
|
||||
|
||||
/* TODO: re-order these */
|
||||
PIPE_FORMAT_A8B8G8R8_UNORM,
|
||||
PIPE_FORMAT_B5G5R5X1_UNORM,
|
||||
PIPE_FORMAT_R10G10B10A2_USCALED,
|
||||
PIPE_FORMAT_R11G11B10_FLOAT,
|
||||
PIPE_FORMAT_R9G9B9E5_FLOAT,
|
||||
PIPE_FORMAT_Z32_FLOAT_S8X24_UINT,
|
||||
PIPE_FORMAT_R1_UNORM,
|
||||
PIPE_FORMAT_R10G10B10X2_USCALED,
|
||||
PIPE_FORMAT_R10G10B10X2_SNORM,
|
||||
PIPE_FORMAT_L4A4_UNORM,
|
||||
PIPE_FORMAT_A2R10G10B10_UNORM,
|
||||
PIPE_FORMAT_A2B10G10R10_UNORM,
|
||||
PIPE_FORMAT_B10G10R10A2_UNORM,
|
||||
PIPE_FORMAT_R10SG10SB10SA2U_NORM,
|
||||
PIPE_FORMAT_R8G8Bx_SNORM,
|
||||
PIPE_FORMAT_R8G8B8X8_UNORM,
|
||||
PIPE_FORMAT_B4G4R4X4_UNORM,
|
||||
|
||||
/* some stencil samplers formats */
|
||||
PIPE_FORMAT_X24S8_UINT,
|
||||
PIPE_FORMAT_S8X24_UINT,
|
||||
PIPE_FORMAT_X32_S8X24_UINT,
|
||||
|
||||
PIPE_FORMAT_R3G3B2_UNORM,
|
||||
PIPE_FORMAT_B2G3R3_UNORM,
|
||||
PIPE_FORMAT_L16A16_UNORM,
|
||||
PIPE_FORMAT_A16_UNORM,
|
||||
PIPE_FORMAT_I16_UNORM,
|
||||
|
||||
PIPE_FORMAT_LATC1_UNORM,
|
||||
PIPE_FORMAT_LATC1_SNORM,
|
||||
PIPE_FORMAT_LATC2_UNORM,
|
||||
PIPE_FORMAT_LATC2_SNORM,
|
||||
|
||||
PIPE_FORMAT_A8_SNORM,
|
||||
PIPE_FORMAT_L8_SNORM,
|
||||
PIPE_FORMAT_L8A8_SNORM,
|
||||
PIPE_FORMAT_I8_SNORM,
|
||||
PIPE_FORMAT_A16_SNORM,
|
||||
PIPE_FORMAT_L16_SNORM,
|
||||
PIPE_FORMAT_L16A16_SNORM,
|
||||
PIPE_FORMAT_I16_SNORM,
|
||||
|
||||
PIPE_FORMAT_A16_FLOAT,
|
||||
PIPE_FORMAT_L16_FLOAT,
|
||||
PIPE_FORMAT_L16A16_FLOAT,
|
||||
PIPE_FORMAT_I16_FLOAT,
|
||||
PIPE_FORMAT_A32_FLOAT,
|
||||
PIPE_FORMAT_L32_FLOAT,
|
||||
PIPE_FORMAT_L32A32_FLOAT,
|
||||
PIPE_FORMAT_I32_FLOAT,
|
||||
|
||||
PIPE_FORMAT_YV12,
|
||||
PIPE_FORMAT_YV16,
|
||||
PIPE_FORMAT_IYUV, /**< aka I420 */
|
||||
PIPE_FORMAT_NV12,
|
||||
PIPE_FORMAT_NV21,
|
||||
|
||||
/* PIPE_FORMAT_Y8_U8_V8_420_UNORM = IYUV */
|
||||
/* PIPE_FORMAT_Y8_U8V8_420_UNORM = NV12 */
|
||||
PIPE_FORMAT_Y8_U8_V8_422_UNORM,
|
||||
PIPE_FORMAT_Y8_U8V8_422_UNORM,
|
||||
PIPE_FORMAT_Y8_U8_V8_444_UNORM,
|
||||
|
||||
PIPE_FORMAT_Y16_U16_V16_420_UNORM,
|
||||
/* PIPE_FORMAT_Y16_U16V16_420_UNORM */
|
||||
PIPE_FORMAT_Y16_U16_V16_422_UNORM,
|
||||
PIPE_FORMAT_Y16_U16V16_422_UNORM,
|
||||
PIPE_FORMAT_Y16_U16_V16_444_UNORM,
|
||||
|
||||
PIPE_FORMAT_A4R4_UNORM,
|
||||
PIPE_FORMAT_R4A4_UNORM,
|
||||
PIPE_FORMAT_R8A8_UNORM,
|
||||
PIPE_FORMAT_A8R8_UNORM,
|
||||
|
||||
PIPE_FORMAT_R10G10B10A2_SSCALED,
|
||||
PIPE_FORMAT_R10G10B10A2_SNORM,
|
||||
|
||||
PIPE_FORMAT_B10G10R10A2_USCALED,
|
||||
PIPE_FORMAT_B10G10R10A2_SSCALED,
|
||||
PIPE_FORMAT_B10G10R10A2_SNORM,
|
||||
|
||||
PIPE_FORMAT_R8_UINT,
|
||||
PIPE_FORMAT_R8G8_UINT,
|
||||
PIPE_FORMAT_R8G8B8_UINT,
|
||||
PIPE_FORMAT_R8G8B8A8_UINT,
|
||||
|
||||
PIPE_FORMAT_R8_SINT,
|
||||
PIPE_FORMAT_R8G8_SINT,
|
||||
PIPE_FORMAT_R8G8B8_SINT,
|
||||
PIPE_FORMAT_R8G8B8A8_SINT,
|
||||
|
||||
PIPE_FORMAT_R16_UINT,
|
||||
PIPE_FORMAT_R16G16_UINT,
|
||||
PIPE_FORMAT_R16G16B16_UINT,
|
||||
PIPE_FORMAT_R16G16B16A16_UINT,
|
||||
|
||||
PIPE_FORMAT_R16_SINT,
|
||||
PIPE_FORMAT_R16G16_SINT,
|
||||
PIPE_FORMAT_R16G16B16_SINT,
|
||||
PIPE_FORMAT_R16G16B16A16_SINT,
|
||||
|
||||
PIPE_FORMAT_R32_UINT,
|
||||
PIPE_FORMAT_R32G32_UINT,
|
||||
PIPE_FORMAT_R32G32B32_UINT,
|
||||
PIPE_FORMAT_R32G32B32A32_UINT,
|
||||
|
||||
PIPE_FORMAT_R32_SINT,
|
||||
PIPE_FORMAT_R32G32_SINT,
|
||||
PIPE_FORMAT_R32G32B32_SINT,
|
||||
PIPE_FORMAT_R32G32B32A32_SINT,
|
||||
|
||||
PIPE_FORMAT_R64_UINT,
|
||||
PIPE_FORMAT_R64_SINT,
|
||||
|
||||
PIPE_FORMAT_A8_UINT,
|
||||
PIPE_FORMAT_I8_UINT,
|
||||
PIPE_FORMAT_L8_UINT,
|
||||
PIPE_FORMAT_L8A8_UINT,
|
||||
|
||||
PIPE_FORMAT_A8_SINT,
|
||||
PIPE_FORMAT_I8_SINT,
|
||||
PIPE_FORMAT_L8_SINT,
|
||||
PIPE_FORMAT_L8A8_SINT,
|
||||
|
||||
PIPE_FORMAT_A16_UINT,
|
||||
PIPE_FORMAT_I16_UINT,
|
||||
PIPE_FORMAT_L16_UINT,
|
||||
PIPE_FORMAT_L16A16_UINT,
|
||||
|
||||
PIPE_FORMAT_A16_SINT,
|
||||
PIPE_FORMAT_I16_SINT,
|
||||
PIPE_FORMAT_L16_SINT,
|
||||
PIPE_FORMAT_L16A16_SINT,
|
||||
|
||||
PIPE_FORMAT_A32_UINT,
|
||||
PIPE_FORMAT_I32_UINT,
|
||||
PIPE_FORMAT_L32_UINT,
|
||||
PIPE_FORMAT_L32A32_UINT,
|
||||
|
||||
PIPE_FORMAT_A32_SINT,
|
||||
PIPE_FORMAT_I32_SINT,
|
||||
PIPE_FORMAT_L32_SINT,
|
||||
PIPE_FORMAT_L32A32_SINT,
|
||||
|
||||
PIPE_FORMAT_B8G8R8_UINT,
|
||||
PIPE_FORMAT_B8G8R8A8_UINT,
|
||||
|
||||
PIPE_FORMAT_B8G8R8_SINT,
|
||||
PIPE_FORMAT_B8G8R8A8_SINT,
|
||||
|
||||
PIPE_FORMAT_A8R8G8B8_UINT,
|
||||
PIPE_FORMAT_A8B8G8R8_UINT,
|
||||
PIPE_FORMAT_A2R10G10B10_UINT,
|
||||
PIPE_FORMAT_A2B10G10R10_UINT,
|
||||
PIPE_FORMAT_B10G10R10A2_UINT,
|
||||
PIPE_FORMAT_B10G10R10A2_SINT,
|
||||
PIPE_FORMAT_R5G6B5_UINT,
|
||||
PIPE_FORMAT_B5G6R5_UINT,
|
||||
PIPE_FORMAT_R5G5B5A1_UINT,
|
||||
PIPE_FORMAT_B5G5R5A1_UINT,
|
||||
PIPE_FORMAT_A1R5G5B5_UINT,
|
||||
PIPE_FORMAT_A1B5G5R5_UINT,
|
||||
PIPE_FORMAT_R4G4B4A4_UINT,
|
||||
PIPE_FORMAT_B4G4R4A4_UINT,
|
||||
PIPE_FORMAT_A4R4G4B4_UINT,
|
||||
PIPE_FORMAT_A4B4G4R4_UINT,
|
||||
PIPE_FORMAT_R3G3B2_UINT,
|
||||
PIPE_FORMAT_B2G3R3_UINT,
|
||||
|
||||
PIPE_FORMAT_ETC1_RGB8,
|
||||
|
||||
PIPE_FORMAT_R8G8_R8B8_UNORM,
|
||||
PIPE_FORMAT_G8R8_B8R8_UNORM,
|
||||
|
||||
PIPE_FORMAT_R8G8B8X8_SNORM,
|
||||
PIPE_FORMAT_R8G8B8X8_SRGB,
|
||||
PIPE_FORMAT_R8G8B8X8_UINT,
|
||||
PIPE_FORMAT_R8G8B8X8_SINT,
|
||||
PIPE_FORMAT_B10G10R10X2_UNORM,
|
||||
PIPE_FORMAT_R16G16B16X16_UNORM,
|
||||
PIPE_FORMAT_R16G16B16X16_SNORM,
|
||||
PIPE_FORMAT_R16G16B16X16_FLOAT,
|
||||
PIPE_FORMAT_R16G16B16X16_UINT,
|
||||
PIPE_FORMAT_R16G16B16X16_SINT,
|
||||
PIPE_FORMAT_R32G32B32X32_FLOAT,
|
||||
PIPE_FORMAT_R32G32B32X32_UINT,
|
||||
PIPE_FORMAT_R32G32B32X32_SINT,
|
||||
|
||||
PIPE_FORMAT_R8A8_SNORM,
|
||||
PIPE_FORMAT_R16A16_UNORM,
|
||||
PIPE_FORMAT_R16A16_SNORM,
|
||||
PIPE_FORMAT_R16A16_FLOAT,
|
||||
PIPE_FORMAT_R32A32_FLOAT,
|
||||
PIPE_FORMAT_R8A8_UINT,
|
||||
PIPE_FORMAT_R8A8_SINT,
|
||||
PIPE_FORMAT_R16A16_UINT,
|
||||
PIPE_FORMAT_R16A16_SINT,
|
||||
PIPE_FORMAT_R32A32_UINT,
|
||||
PIPE_FORMAT_R32A32_SINT,
|
||||
PIPE_FORMAT_R10G10B10A2_UINT,
|
||||
PIPE_FORMAT_R10G10B10A2_SINT,
|
||||
|
||||
PIPE_FORMAT_B5G6R5_SRGB,
|
||||
|
||||
PIPE_FORMAT_BPTC_RGBA_UNORM,
|
||||
PIPE_FORMAT_BPTC_SRGBA,
|
||||
PIPE_FORMAT_BPTC_RGB_FLOAT,
|
||||
PIPE_FORMAT_BPTC_RGB_UFLOAT,
|
||||
|
||||
PIPE_FORMAT_G8R8_UNORM,
|
||||
PIPE_FORMAT_G8R8_SNORM,
|
||||
PIPE_FORMAT_G16R16_UNORM,
|
||||
PIPE_FORMAT_G16R16_SNORM,
|
||||
|
||||
PIPE_FORMAT_A8B8G8R8_SNORM,
|
||||
PIPE_FORMAT_X8B8G8R8_SNORM,
|
||||
|
||||
PIPE_FORMAT_ETC2_RGB8,
|
||||
PIPE_FORMAT_ETC2_SRGB8,
|
||||
PIPE_FORMAT_ETC2_RGB8A1,
|
||||
PIPE_FORMAT_ETC2_SRGB8A1,
|
||||
PIPE_FORMAT_ETC2_RGBA8,
|
||||
PIPE_FORMAT_ETC2_SRGBA8,
|
||||
PIPE_FORMAT_ETC2_R11_UNORM,
|
||||
PIPE_FORMAT_ETC2_R11_SNORM,
|
||||
PIPE_FORMAT_ETC2_RG11_UNORM,
|
||||
PIPE_FORMAT_ETC2_RG11_SNORM,
|
||||
|
||||
PIPE_FORMAT_ASTC_4x4,
|
||||
PIPE_FORMAT_ASTC_5x4,
|
||||
PIPE_FORMAT_ASTC_5x5,
|
||||
PIPE_FORMAT_ASTC_6x5,
|
||||
PIPE_FORMAT_ASTC_6x6,
|
||||
PIPE_FORMAT_ASTC_8x5,
|
||||
PIPE_FORMAT_ASTC_8x6,
|
||||
PIPE_FORMAT_ASTC_8x8,
|
||||
PIPE_FORMAT_ASTC_10x5,
|
||||
PIPE_FORMAT_ASTC_10x6,
|
||||
PIPE_FORMAT_ASTC_10x8,
|
||||
PIPE_FORMAT_ASTC_10x10,
|
||||
PIPE_FORMAT_ASTC_12x10,
|
||||
PIPE_FORMAT_ASTC_12x12,
|
||||
|
||||
PIPE_FORMAT_ASTC_4x4_SRGB,
|
||||
PIPE_FORMAT_ASTC_5x4_SRGB,
|
||||
PIPE_FORMAT_ASTC_5x5_SRGB,
|
||||
PIPE_FORMAT_ASTC_6x5_SRGB,
|
||||
PIPE_FORMAT_ASTC_6x6_SRGB,
|
||||
PIPE_FORMAT_ASTC_8x5_SRGB,
|
||||
PIPE_FORMAT_ASTC_8x6_SRGB,
|
||||
PIPE_FORMAT_ASTC_8x8_SRGB,
|
||||
PIPE_FORMAT_ASTC_10x5_SRGB,
|
||||
PIPE_FORMAT_ASTC_10x6_SRGB,
|
||||
PIPE_FORMAT_ASTC_10x8_SRGB,
|
||||
PIPE_FORMAT_ASTC_10x10_SRGB,
|
||||
PIPE_FORMAT_ASTC_12x10_SRGB,
|
||||
PIPE_FORMAT_ASTC_12x12_SRGB,
|
||||
|
||||
PIPE_FORMAT_ASTC_3x3x3,
|
||||
PIPE_FORMAT_ASTC_4x3x3,
|
||||
PIPE_FORMAT_ASTC_4x4x3,
|
||||
PIPE_FORMAT_ASTC_4x4x4,
|
||||
PIPE_FORMAT_ASTC_5x4x4,
|
||||
PIPE_FORMAT_ASTC_5x5x4,
|
||||
PIPE_FORMAT_ASTC_5x5x5,
|
||||
PIPE_FORMAT_ASTC_6x5x5,
|
||||
PIPE_FORMAT_ASTC_6x6x5,
|
||||
PIPE_FORMAT_ASTC_6x6x6,
|
||||
|
||||
PIPE_FORMAT_ASTC_3x3x3_SRGB,
|
||||
PIPE_FORMAT_ASTC_4x3x3_SRGB,
|
||||
PIPE_FORMAT_ASTC_4x4x3_SRGB,
|
||||
PIPE_FORMAT_ASTC_4x4x4_SRGB,
|
||||
PIPE_FORMAT_ASTC_5x4x4_SRGB,
|
||||
PIPE_FORMAT_ASTC_5x5x4_SRGB,
|
||||
PIPE_FORMAT_ASTC_5x5x5_SRGB,
|
||||
PIPE_FORMAT_ASTC_6x5x5_SRGB,
|
||||
PIPE_FORMAT_ASTC_6x6x5_SRGB,
|
||||
PIPE_FORMAT_ASTC_6x6x6_SRGB,
|
||||
|
||||
PIPE_FORMAT_FXT1_RGB,
|
||||
PIPE_FORMAT_FXT1_RGBA,
|
||||
|
||||
PIPE_FORMAT_P010,
|
||||
PIPE_FORMAT_P012,
|
||||
PIPE_FORMAT_P016,
|
||||
|
||||
PIPE_FORMAT_R10G10B10X2_UNORM,
|
||||
PIPE_FORMAT_A1R5G5B5_UNORM,
|
||||
PIPE_FORMAT_A1B5G5R5_UNORM,
|
||||
PIPE_FORMAT_X1B5G5R5_UNORM,
|
||||
PIPE_FORMAT_R5G5B5A1_UNORM,
|
||||
PIPE_FORMAT_A4R4G4B4_UNORM,
|
||||
PIPE_FORMAT_A4B4G4R4_UNORM,
|
||||
|
||||
PIPE_FORMAT_G8R8_SINT,
|
||||
PIPE_FORMAT_A8B8G8R8_SINT,
|
||||
PIPE_FORMAT_X8B8G8R8_SINT,
|
||||
|
||||
PIPE_FORMAT_ATC_RGB,
|
||||
PIPE_FORMAT_ATC_RGBA_EXPLICIT,
|
||||
PIPE_FORMAT_ATC_RGBA_INTERPOLATED,
|
||||
|
||||
PIPE_FORMAT_Z24_UNORM_S8_UINT_AS_R8G8B8A8,
|
||||
|
||||
PIPE_FORMAT_AYUV,
|
||||
PIPE_FORMAT_XYUV,
|
||||
|
||||
PIPE_FORMAT_R8_G8B8_420_UNORM,
|
||||
|
||||
PIPE_FORMAT_COUNT
|
||||
};
|
||||
|
||||
struct st_visual
|
||||
{
|
||||
bool no_config;
|
||||
|
||||
/**
|
||||
* Available buffers. Bitfield of ST_ATTACHMENT_*_MASK bits.
|
||||
*/
|
||||
unsigned buffer_mask;
|
||||
|
||||
/**
|
||||
* Buffer formats. The formats are always set even when the buffer is
|
||||
* not available.
|
||||
*/
|
||||
enum pipe_format color_format;
|
||||
enum pipe_format depth_stencil_format;
|
||||
enum pipe_format accum_format;
|
||||
unsigned samples;
|
||||
|
||||
/**
|
||||
* Desired render buffer.
|
||||
*/
|
||||
enum st_attachment_type render_buffer;
|
||||
};
|
||||
typedef struct osmesa_buffer
|
||||
{
|
||||
struct st_framebuffer_iface *stfb;
|
||||
struct st_visual visual;
|
||||
unsigned width, height;
|
||||
|
||||
struct pipe_resource *textures[ST_ATTACHMENT_COUNT];
|
||||
|
||||
void *map;
|
||||
|
||||
struct osmesa_buffer *next; /**< next in linked list */
|
||||
};
|
||||
|
||||
|
||||
typedef struct osmesa_context
|
||||
{
|
||||
struct st_context_iface *stctx;
|
||||
|
||||
bool ever_used; /*< Has this context ever been current? */
|
||||
|
||||
struct osmesa_buffer *current_buffer;
|
||||
|
||||
/* Storage for depth/stencil, if the user has requested access. The backing
|
||||
* driver always has its own storage for the actual depth/stencil, which we
|
||||
* have to transfer in and out.
|
||||
*/
|
||||
void *zs;
|
||||
unsigned zs_stride;
|
||||
|
||||
enum pipe_format depth_stencil_format, accum_format;
|
||||
|
||||
GLenum format; /*< User-specified context format */
|
||||
GLenum type; /*< Buffer's data type */
|
||||
GLint user_row_length; /*< user-specified number of pixels per row */
|
||||
GLboolean y_up; /*< TRUE -> Y increases upward */
|
||||
/*< FALSE -> Y increases downward */
|
||||
|
||||
/** Which postprocessing filters are enabled. */
|
||||
//safe to remove
|
||||
};
|
||||
// endregion OSMESA internals
|
||||
struct PotatoBridge {
|
||||
|
||||
/* EGLContext */ void* eglContextOld;
|
||||
@ -596,12 +40,9 @@ struct PotatoBridge potatoBridge;
|
||||
|
||||
#include "ctxbridges/egl_loader.h"
|
||||
#include "ctxbridges/osmesa_loader.h"
|
||||
int (*vtest_main_p) (int argc, char** argv);
|
||||
void (*vtest_swap_buffers_p) (void);
|
||||
|
||||
#define RENDERER_GL4ES 1
|
||||
#define RENDERER_VK_ZINK 2
|
||||
#define RENDERER_VIRGL 3
|
||||
|
||||
void* gbuffer;
|
||||
|
||||
@ -653,7 +94,6 @@ void* pojavGetCurrentContext() {
|
||||
switch (pojav_environ->config_renderer) {
|
||||
case RENDERER_GL4ES:
|
||||
return (void *)eglGetCurrentContext_p();
|
||||
case RENDERER_VIRGL:
|
||||
case RENDERER_VK_ZINK:
|
||||
return (void *)OSMesaGetCurrentContext_p();
|
||||
|
||||
@ -697,8 +137,6 @@ void dlsym_OSMesa(void* dl_handle) {
|
||||
|
||||
bool loadSymbols() {
|
||||
switch (pojav_environ->config_renderer) {
|
||||
case RENDERER_VIRGL:
|
||||
dlsym_EGL();
|
||||
case RENDERER_VK_ZINK:
|
||||
dlsym_OSMesa();
|
||||
break;
|
||||
@ -708,24 +146,6 @@ bool loadSymbols() {
|
||||
}
|
||||
}
|
||||
|
||||
bool loadSymbolsVirGL() {
|
||||
pojav_environ->config_renderer = RENDERER_VIRGL;
|
||||
loadSymbols();
|
||||
|
||||
char* fileName = calloc(1, 1024);
|
||||
|
||||
sprintf(fileName, "%s/libvirgl_test_server.so", getenv("POJAV_NATIVEDIR"));
|
||||
void *handle = dlopen(fileName, RTLD_LAZY);
|
||||
printf("VirGL: libvirgl_test_server = %p\n", handle);
|
||||
if (!handle) {
|
||||
printf("VirGL: %s\n", dlerror());
|
||||
}
|
||||
vtest_main_p = dlsym(handle, "vtest_main");
|
||||
vtest_swap_buffers_p = dlsym(handle, "vtest_swap_buffers");
|
||||
|
||||
free(fileName);
|
||||
}
|
||||
|
||||
int pojavInit() {
|
||||
ANativeWindow_acquire(pojav_environ->pojavWindow);
|
||||
pojav_environ->savedWidth = ANativeWindow_getWidth(pojav_environ->pojavWindow);
|
||||
@ -739,15 +159,7 @@ int pojavInit() {
|
||||
|
||||
// NOTE: Override for now.
|
||||
const char *renderer = getenv("POJAV_RENDERER");
|
||||
if (strncmp("opengles3_virgl", renderer, 15) == 0) {
|
||||
pojav_environ->config_renderer = RENDERER_VIRGL;
|
||||
setenv("GALLIUM_DRIVER","virpipe",1);
|
||||
setenv("OSMESA_NO_FLUSH_FRONTBUFFER","1",false);
|
||||
if(strcmp(getenv("OSMESA_NO_FLUSH_FRONTBUFFER"),"1") == 0) {
|
||||
printf("VirGL: OSMesa buffer flush is DISABLED!\n");
|
||||
}
|
||||
loadSymbolsVirGL();
|
||||
} else if (strncmp("opengles", renderer, 8) == 0) {
|
||||
if (strncmp("opengles", renderer, 8) == 0) {
|
||||
pojav_environ->config_renderer = RENDERER_GL4ES;
|
||||
//loadSymbols();
|
||||
} else if (strcmp(renderer, "vulkan_zink") == 0) {
|
||||
@ -762,96 +174,7 @@ int pojavInit() {
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
if (pojav_environ->config_renderer == RENDERER_VIRGL) {
|
||||
if (potatoBridge.eglDisplay == NULL || potatoBridge.eglDisplay == EGL_NO_DISPLAY) {
|
||||
potatoBridge.eglDisplay = eglGetDisplay_p(EGL_DEFAULT_DISPLAY);
|
||||
if (potatoBridge.eglDisplay == EGL_NO_DISPLAY) {
|
||||
printf("EGLBridge: Error eglGetDefaultDisplay() failed: %p\n", eglGetError_p());
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
printf("EGLBridge: Initializing\n");
|
||||
// printf("EGLBridge: ANativeWindow pointer = %p\n", pojav_environ->pojavWindow);
|
||||
//(*env)->ThrowNew(env,(*env)->FindClass(env,"java/lang/Exception"),"Trace exception");
|
||||
if (!eglInitialize_p(potatoBridge.eglDisplay, NULL, NULL)) {
|
||||
printf("EGLBridge: Error eglInitialize() failed: %s\n", eglGetError_p());
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const EGLint attribs[] = {
|
||||
EGL_RED_SIZE, 8,
|
||||
EGL_GREEN_SIZE, 8,
|
||||
EGL_BLUE_SIZE, 8,
|
||||
EGL_ALPHA_SIZE, 8,
|
||||
// Minecraft required on initial 24
|
||||
EGL_DEPTH_SIZE, 24,
|
||||
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
|
||||
EGL_NONE
|
||||
};
|
||||
|
||||
EGLint num_configs;
|
||||
EGLint vid;
|
||||
|
||||
if (!eglChooseConfig_p(potatoBridge.eglDisplay, attribs, &config, 1, &num_configs)) {
|
||||
printf("EGLBridge: Error couldn't get an EGL visual config: %s\n", eglGetError_p());
|
||||
return 0;
|
||||
}
|
||||
|
||||
assert(config);
|
||||
assert(num_configs > 0);
|
||||
|
||||
if (!eglGetConfigAttrib_p(potatoBridge.eglDisplay, config, EGL_NATIVE_VISUAL_ID, &vid)) {
|
||||
printf("EGLBridge: Error eglGetConfigAttrib() failed: %s\n", eglGetError_p());
|
||||
return 0;
|
||||
}
|
||||
|
||||
ANativeWindow_setBuffersGeometry(pojav_environ->pojavWindow, 0, 0, vid);
|
||||
|
||||
eglBindAPI_p(EGL_OPENGL_ES_API);
|
||||
|
||||
potatoBridge.eglSurface = eglCreateWindowSurface_p(potatoBridge.eglDisplay, config, pojav_environ->pojavWindow, NULL);
|
||||
|
||||
if (!potatoBridge.eglSurface) {
|
||||
printf("EGLBridge: Error eglCreateWindowSurface failed: %p\n", eglGetError_p());
|
||||
//(*env)->ThrowNew(env,(*env)->FindClass(env,"java/lang/Exception"),"Trace exception");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// sanity checks
|
||||
{
|
||||
EGLint val;
|
||||
assert(eglGetConfigAttrib_p(potatoBridge.eglDisplay, config, EGL_SURFACE_TYPE, &val));
|
||||
assert(val & EGL_WINDOW_BIT);
|
||||
}
|
||||
|
||||
printf("EGLBridge: Initialized!\n");
|
||||
printf("EGLBridge: ThreadID=%d\n", gettid());
|
||||
printf("EGLBridge: EGLDisplay=%p, EGLSurface=%p\n",
|
||||
/* window==0 ? EGL_NO_CONTEXT : */
|
||||
potatoBridge.eglDisplay,
|
||||
potatoBridge.eglSurface
|
||||
);
|
||||
if (pojav_environ->config_renderer != RENDERER_VIRGL) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (pojav_environ->config_renderer == RENDERER_VIRGL) {
|
||||
// Init EGL context and vtest server
|
||||
const EGLint ctx_attribs[] = {
|
||||
EGL_CONTEXT_CLIENT_VERSION, 3,
|
||||
EGL_NONE
|
||||
};
|
||||
EGLContext* ctx = eglCreateContext_p(potatoBridge.eglDisplay, config, NULL, ctx_attribs);
|
||||
printf("VirGL: created EGL context %p\n", ctx);
|
||||
|
||||
pthread_t t;
|
||||
pthread_create(&t, NULL, egl_make_current, (void *)ctx);
|
||||
usleep(100*1000); // need enough time for the server to init
|
||||
}
|
||||
|
||||
if (pojav_environ->config_renderer == RENDERER_VK_ZINK || pojav_environ->config_renderer == RENDERER_VIRGL) {
|
||||
if (pojav_environ->config_renderer == RENDERER_VK_ZINK) {
|
||||
if(OSMesaCreateContext_p == NULL) {
|
||||
printf("OSMDroid: %s\n",dlerror());
|
||||
return 0;
|
||||
@ -883,11 +206,6 @@ void pojavSwapBuffers() {
|
||||
gl_swap_buffers();
|
||||
} break;
|
||||
|
||||
case RENDERER_VIRGL: {
|
||||
glFinish_p();
|
||||
vtest_swap_buffers_p();
|
||||
} break;
|
||||
|
||||
case RENDERER_VK_ZINK: {
|
||||
OSMesaContext ctx = OSMesaGetCurrentContext_p();
|
||||
if(ctx == NULL) {
|
||||
@ -916,12 +234,6 @@ void* egl_make_current(void* window) {
|
||||
} else {
|
||||
printf("EGLBridge: eglMakeCurrent() succeed!\n");
|
||||
}
|
||||
|
||||
if (pojav_environ->config_renderer == RENDERER_VIRGL) {
|
||||
printf("VirGL: vtest_main = %p\n", vtest_main_p);
|
||||
printf("VirGL: Calling VTest server's main function\n");
|
||||
vtest_main_p(3, (const char*[]){"vtest", "--no-loop-or-fork", "--use-gles", NULL, NULL});
|
||||
}
|
||||
}
|
||||
|
||||
bool locked = false;
|
||||
@ -933,26 +245,20 @@ void pojavMakeCurrent(void* window) {
|
||||
if(pojav_environ->config_renderer == RENDERER_GL4ES) {
|
||||
gl_make_current((render_window_t*)window);
|
||||
}
|
||||
if (pojav_environ->config_renderer == RENDERER_VK_ZINK || pojav_environ->config_renderer == RENDERER_VIRGL) {
|
||||
if (pojav_environ->config_renderer == RENDERER_VK_ZINK) {
|
||||
printf("OSMDroid: making current\n");
|
||||
OSMesaMakeCurrent_p((OSMesaContext)window,gbuffer,GL_UNSIGNED_BYTE,pojav_environ->savedWidth,pojav_environ->savedHeight);
|
||||
if (pojav_environ->config_renderer == RENDERER_VK_ZINK) {
|
||||
ANativeWindow_lock(pojav_environ->pojavWindow,&buf,NULL);
|
||||
OSMesaPixelStore_p(OSMESA_ROW_LENGTH,buf.stride);
|
||||
stride = buf.stride;
|
||||
//ANativeWindow_unlockAndPost(pojav_environ->pojavWindow);
|
||||
OSMesaPixelStore_p(OSMESA_Y_UP,0);
|
||||
}
|
||||
|
||||
printf("OSMDroid: vendor: %s\n",glGetString_p(GL_VENDOR));
|
||||
printf("OSMDroid: renderer: %s\n",glGetString_p(GL_RENDERER));
|
||||
glClear_p(GL_COLOR_BUFFER_BIT);
|
||||
glClearColor_p(0.4f, 0.4f, 0.4f, 1.0f);
|
||||
|
||||
// Trigger a texture creation, which then set VIRGL_TEXTURE_ID
|
||||
int pixelsArr[4];
|
||||
glReadPixels_p(0, 0, 1, 1, GL_RGB, GL_INT, &pixelsArr);
|
||||
|
||||
pojavSwapBuffers();
|
||||
return;
|
||||
}
|
||||
@ -990,7 +296,7 @@ void* pojavCreateContext(void* contextSrc) {
|
||||
return gl_init_context(contextSrc);
|
||||
}
|
||||
|
||||
if (pojav_environ->config_renderer == RENDERER_VK_ZINK || pojav_environ->config_renderer == RENDERER_VIRGL) {
|
||||
if (pojav_environ->config_renderer == RENDERER_VK_ZINK) {
|
||||
printf("OSMDroid: generating context\n");
|
||||
void* ctx = OSMesaCreateContext_p(OSMESA_RGBA,contextSrc);
|
||||
printf("OSMDroid: context=%p\n",ctx);
|
||||
@ -1009,7 +315,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL_nativeRegalMakeCurrent(JNIEnv *e
|
||||
}
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_org_lwjgl_opengl_GL_getGraphicsBufferAddr(JNIEnv *env, jobject thiz) {
|
||||
return &gbuffer;
|
||||
return (jlong) &gbuffer;
|
||||
}
|
||||
JNIEXPORT jintArray JNICALL
|
||||
Java_org_lwjgl_opengl_GL_getNativeWidthHeight(JNIEnv *env, jobject thiz) {
|
||||
@ -1023,9 +329,6 @@ void pojavSwapInterval(int interval) {
|
||||
case RENDERER_GL4ES: {
|
||||
gl_swap_interval(interval);
|
||||
} break;
|
||||
case RENDERER_VIRGL: {
|
||||
eglSwapInterval_p(potatoBridge.eglDisplay, interval);
|
||||
} break;
|
||||
|
||||
case RENDERER_VK_ZINK: {
|
||||
printf("eglSwapInterval: NOT IMPLEMENTED YET!\n");
|
||||
|
Binary file not shown.
Binary file not shown.
BIN
app_pojavlauncher/src/main/jniLibs/arm64-v8a/libhardware.so
Normal file
BIN
app_pojavlauncher/src/main/jniLibs/arm64-v8a/libhardware.so
Normal file
Binary file not shown.
Binary file not shown.
@ -1,10 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string-array name="renderer">
|
||||
<item name="2">@string/mcl_setting_renderer_gles2_4</item>
|
||||
<!-- <item name="4">@string/mcl_setting_renderer_vulkan_zink</item> -->
|
||||
<item name="5">@string/mcl_setting_renderer_virgl</item>
|
||||
<item name="6">@string/mcl_setting_renderer_angle</item>
|
||||
<item name="1">@string/mcl_setting_renderer_gles2_4</item>
|
||||
<item name="2">@string/mcl_setting_renderer_vulkan_zink</item>
|
||||
<item name="3">@string/mcl_setting_renderer_angle</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="menu_customcontrol">
|
||||
@ -36,8 +35,7 @@
|
||||
|
||||
<string-array name="renderer_values">
|
||||
<item>opengles2</item> <!-- gl4es_extra 1.1.4 with OpenGL ES 2/"3" -->
|
||||
<!--<item>vulkan_zink</item> -->
|
||||
<item>opengles3_virgl</item> <!-- virglrenderer with OpenGL ES 3 -->
|
||||
<item>vulkan_zink</item> <!-- virglrenderer with OpenGL ES 3 -->
|
||||
<item>opengles3_desktopgl_angle_vulkan</item>
|
||||
</string-array>
|
||||
|
||||
|
@ -101,9 +101,7 @@
|
||||
<string name="mcl_setting_category_scaling">Scaling settings</string>
|
||||
<string name="mcl_setting_category_renderer">Renderer</string>
|
||||
<string name="mcl_setting_renderer_gles2_4">Holy GL4ES - (all versions, fast)</string>
|
||||
<string name="mcl_setting_renderer_virgl">virglrenderer - (release 1.7+, slow)</string>
|
||||
<string name="mcl_setting_renderer_vgpu">vgpu - (up to 1.16.5, fast)</string>
|
||||
<string name="mcl_setting_renderer_vulkan_zink">zink - (old_beta b1.8+, slow)</string>
|
||||
<string name="mcl_setting_renderer_vulkan_zink">Vulkan Zink - (all versions, fast, low device compat)</string>
|
||||
<string name="mcl_setting_renderer_angle">ANGLE - (release 1.17+, mid)</string>
|
||||
<string name="mcl_setting_category_veroption">Version type will be in version list</string>
|
||||
<string name="mcl_setting_veroption_release">Release</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user