rhi: gl: Have a way to state GL_TEXTURE_RECTANGLE is wanted
Added specifically to support the deprecated CVOpenGLTextureCache on macOS, because Qt Multimedia still needs a way to use that when the applications requests using OpenGL instead of Metal. Follow what we did for GL_TEXTURE_EXTERNAL_OES, and add a flag that simply makes all our glBindTexture calls use the GL_TEXTURE_RECTANGLE[_ARB] target. Pick-to: 6.2 Change-Id: If818b13a9f520cdb8bdc16de84a3ca0e18ad6c33 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
parent
10eedd175e
commit
d55a6891d1
@ -2444,6 +2444,13 @@ bool QRhiRenderBuffer::createFrom(NativeRenderBuffer src)
|
||||
render target's color attachment refers to a slice in range [0..depth-1].
|
||||
The underlying graphics API may not support 3D textures at run time.
|
||||
Support is indicated by the QRhi::ThreeDimensionalTextures feature.
|
||||
|
||||
\value TextureRectangleGL The texture should use the GL_TEXTURE_RECTANGLE
|
||||
target with OpenGL. This flag is ignored with other graphics APIs. Just
|
||||
like ExternalOES, this flag is useful when working with platform APIs where
|
||||
native OpenGL texture objects received from the platform are wrapped in a
|
||||
QRhiTexture, and the platform can only provide textures for a non-2D
|
||||
texture target.
|
||||
*/
|
||||
|
||||
/*!
|
||||
|
@ -778,7 +778,8 @@ public:
|
||||
UsedWithLoadStore = 1 << 7,
|
||||
UsedAsCompressedAtlas = 1 << 8,
|
||||
ExternalOES = 1 << 9,
|
||||
ThreeDimensional = 1 << 10
|
||||
ThreeDimensional = 1 << 10,
|
||||
TextureRectangleGL = 1 << 11
|
||||
};
|
||||
Q_DECLARE_FLAGS(Flags, Flag)
|
||||
|
||||
|
@ -361,6 +361,10 @@ QT_BEGIN_NAMESPACE
|
||||
#define GL_TEXTURE_WRAP_R 0x8072
|
||||
#endif
|
||||
|
||||
#ifndef GL_TEXTURE_RECTANGLE
|
||||
#define GL_TEXTURE_RECTANGLE 0x84F5
|
||||
#endif
|
||||
|
||||
/*!
|
||||
Constructs a new QRhiGles2InitParams.
|
||||
|
||||
@ -4579,6 +4583,8 @@ bool QGles2Texture::prepareCreate(QSize *adjustedSize)
|
||||
: m_sampleCount > 1 ? GL_TEXTURE_2D_MULTISAMPLE : (is3D ? GL_TEXTURE_3D : GL_TEXTURE_2D);
|
||||
if (m_flags.testFlag(ExternalOES))
|
||||
target = GL_TEXTURE_EXTERNAL_OES;
|
||||
else if (m_flags.testFlag(TextureRectangleGL))
|
||||
target = GL_TEXTURE_RECTANGLE;
|
||||
|
||||
mipLevelCount = hasMipMaps ? rhiD->q->mipLevelsForSize(size) : 1;
|
||||
gltype = GL_UNSIGNED_BYTE;
|
||||
|
Loading…
Reference in New Issue
Block a user