summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gui/rhi/qrhi.cpp14
-rw-r--r--src/gui/rhi/qrhi_p.h2
-rw-r--r--src/gui/rhi/qrhid3d11.cpp8
-rw-r--r--src/gui/rhi/qrhigles2.cpp8
-rw-r--r--src/gui/rhi/qrhimetal.mm8
-rw-r--r--src/gui/rhi/qrhivulkan.cpp8
6 files changed, 22 insertions, 26 deletions
diff --git a/src/gui/rhi/qrhi.cpp b/src/gui/rhi/qrhi.cpp
index 6a118d20c8..e92479bb4d 100644
--- a/src/gui/rhi/qrhi.cpp
+++ b/src/gui/rhi/qrhi.cpp
@@ -2261,16 +2261,12 @@ QRhiResource::Type QRhiRenderBuffer::resourceType() const
/*!
\variable QRhiTexture::NativeTexture::object
- \brief a pointer to the native object handle.
+ \brief 64-bit integer containing the native object handle.
- With OpenGL, the native handle is a GLuint value, so \c object is then a
- pointer to a GLuint. With Vulkan, the native handle is a VkImage, so \c
- object is a pointer to a VkImage. With Direct3D 11 and Metal \c
- object is a pointer to a ID3D11Texture2D or MTLTexture pointer, respectively.
-
- \note Pay attention to the fact that \a object is always a pointer
- to the native texture handle type, even if the native type itself is a
- pointer.
+ With OpenGL, the native handle is a GLuint value, so \c object can then be
+ cast to a GLuint. With Vulkan, the native handle is a VkImage, so \c
+ object can be cast to a VkImage. With Direct3D 11 and Metal \c
+ object contains a ID3D11Texture2D or MTLTexture pointer, respectively.
*/
/*!
diff --git a/src/gui/rhi/qrhi_p.h b/src/gui/rhi/qrhi_p.h
index e63a828bfc..71064cfc6a 100644
--- a/src/gui/rhi/qrhi_p.h
+++ b/src/gui/rhi/qrhi_p.h
@@ -777,7 +777,7 @@ public:
};
struct NativeTexture {
- const void *object;
+ quint64 object;
int layout;
};
diff --git a/src/gui/rhi/qrhid3d11.cpp b/src/gui/rhi/qrhid3d11.cpp
index 2f7974944c..97294669f7 100644
--- a/src/gui/rhi/qrhid3d11.cpp
+++ b/src/gui/rhi/qrhid3d11.cpp
@@ -2937,14 +2937,14 @@ bool QD3D11Texture::build()
bool QD3D11Texture::buildFrom(QRhiTexture::NativeTexture src)
{
- auto *srcTex = static_cast<ID3D11Texture2D * const *>(src.object);
- if (!srcTex || !*srcTex)
+ ID3D11Texture2D *srcTex = reinterpret_cast<ID3D11Texture2D *>(src.object);
+ if (srcTex == nullptr)
return false;
if (!prepareBuild())
return false;
- tex = *srcTex;
+ tex = srcTex;
if (!finishBuild())
return false;
@@ -2960,7 +2960,7 @@ bool QD3D11Texture::buildFrom(QRhiTexture::NativeTexture src)
QRhiTexture::NativeTexture QD3D11Texture::nativeTexture()
{
- return {&tex, 0};
+ return {quint64(tex), 0};
}
ID3D11UnorderedAccessView *QD3D11Texture::unorderedAccessViewForLevel(int level)
diff --git a/src/gui/rhi/qrhigles2.cpp b/src/gui/rhi/qrhigles2.cpp
index d8c64c7408..373b66df89 100644
--- a/src/gui/rhi/qrhigles2.cpp
+++ b/src/gui/rhi/qrhigles2.cpp
@@ -3776,14 +3776,14 @@ bool QGles2Texture::build()
bool QGles2Texture::buildFrom(QRhiTexture::NativeTexture src)
{
- const uint *textureId = static_cast<const uint *>(src.object);
- if (!textureId || !*textureId)
+ const uint textureId = uint(src.object);
+ if (textureId == 0)
return false;
if (!prepareBuild())
return false;
- texture = *textureId;
+ texture = textureId;
specified = true;
QRHI_RES_RHI(QRhiGles2);
@@ -3799,7 +3799,7 @@ bool QGles2Texture::buildFrom(QRhiTexture::NativeTexture src)
QRhiTexture::NativeTexture QGles2Texture::nativeTexture()
{
- return {&texture, 0};
+ return {texture, 0};
}
QGles2Sampler::QGles2Sampler(QRhiImplementation *rhi, Filter magFilter, Filter minFilter, Filter mipmapMode,
diff --git a/src/gui/rhi/qrhimetal.mm b/src/gui/rhi/qrhimetal.mm
index c5afdf63eb..5d94b481a6 100644
--- a/src/gui/rhi/qrhimetal.mm
+++ b/src/gui/rhi/qrhimetal.mm
@@ -2592,14 +2592,14 @@ bool QMetalTexture::build()
bool QMetalTexture::buildFrom(QRhiTexture::NativeTexture src)
{
- void * const * tex = (void * const *) src.object;
- if (!tex || !*tex)
+ id<MTLTexture> tex = id<MTLTexture>(src.object);
+ if (tex == 0)
return false;
if (!prepareBuild())
return false;
- d->tex = (id<MTLTexture>) *tex;
+ d->tex = tex;
d->owns = false;
@@ -2615,7 +2615,7 @@ bool QMetalTexture::buildFrom(QRhiTexture::NativeTexture src)
QRhiTexture::NativeTexture QMetalTexture::nativeTexture()
{
- return {&d->tex, 0};
+ return {quint64(d->tex), 0};
}
id<MTLTexture> QMetalTextureData::viewForLevel(int level)
diff --git a/src/gui/rhi/qrhivulkan.cpp b/src/gui/rhi/qrhivulkan.cpp
index e67b249f9c..1591829cac 100644
--- a/src/gui/rhi/qrhivulkan.cpp
+++ b/src/gui/rhi/qrhivulkan.cpp
@@ -5570,14 +5570,14 @@ bool QVkTexture::build()
bool QVkTexture::buildFrom(QRhiTexture::NativeTexture src)
{
- auto *img = static_cast<const VkImage*>(src.object);
- if (!img || !*img)
+ VkImage img = VkImage(src.object);
+ if (img == 0)
return false;
if (!prepareBuild())
return false;
- image = *img;
+ image = img;
if (!finishBuild())
return false;
@@ -5595,7 +5595,7 @@ bool QVkTexture::buildFrom(QRhiTexture::NativeTexture src)
QRhiTexture::NativeTexture QVkTexture::nativeTexture()
{
- return {&image, usageState.layout};
+ return {quint64(image), usageState.layout};
}
void QVkTexture::setNativeLayout(int layout)