GrBackendFormat GrBackendFormat::MakeVk(const GrVkYcbcrConversionInfo& ycbcrInfo) { #ifdef SK_BUILD_FOR_ANDROID return GrBackendFormat(VK_FORMAT_UNDEFINED, ycbcrInfo); #else return GrBackendFormat(); #endif }
GrBackendFormat get_backend_format(GrBackend backend, uint32_t bufferFormat) { if (backend == kOpenGL_GrBackend) { switch (bufferFormat) { //TODO: find out if we can detect, which graphic buffers support GR_GL_TEXTURE_2D case AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: case AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: return GrBackendFormat::MakeGL(GR_GL_RGBA8, GR_GL_TEXTURE_EXTERNAL); case AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT: return GrBackendFormat::MakeGL(GR_GL_RGBA16F, GR_GL_TEXTURE_EXTERNAL); case AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM: return GrBackendFormat::MakeGL(GR_GL_RGB565, GR_GL_TEXTURE_EXTERNAL); case AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM: return GrBackendFormat::MakeGL(GR_GL_RGB10_A2, GR_GL_TEXTURE_EXTERNAL); case AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: return GrBackendFormat::MakeGL(GR_GL_RGB8, GR_GL_TEXTURE_EXTERNAL); default: return GrBackendFormat::MakeGL(GR_GL_RGBA8, GR_GL_TEXTURE_EXTERNAL); } } else if (backend == kVulkan_GrBackend) { switch (bufferFormat) { //TODO: find out if we can detect, which graphic buffers support GR_GL_TEXTURE_2D case AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM: return GrBackendFormat::MakeVk(VK_FORMAT_R8G8B8A8_UNORM); case AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT: return GrBackendFormat::MakeVk(VK_FORMAT_R16G16B16A16_SFLOAT); case AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM: return GrBackendFormat::MakeVk(VK_FORMAT_R5G6B5_UNORM_PACK16); case AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM: return GrBackendFormat::MakeVk(VK_FORMAT_A2B10G10R10_UNORM_PACK32); case AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM: return GrBackendFormat::MakeVk(VK_FORMAT_R8G8B8A8_UNORM); case AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM: return GrBackendFormat::MakeVk(VK_FORMAT_R8G8B8_UNORM); default: return GrBackendFormat::MakeVk(VK_FORMAT_R8G8B8_UNORM); } } return GrBackendFormat(); }
GrBackendFormat GrCaps::createFormatFromBackendTexture(const GrBackendTexture& backendTex) const { if (!backendTex.isValid()) { return GrBackendFormat(); } return this->onCreateFormatFromBackendTexture(backendTex); }