Merge changes I5923de87,I5c41c558 into main
* changes:
Enable -Wformat
Enable -Werror
diff --git a/Android.bp b/Android.bp
index 8496ca3..385351f 100644
--- a/Android.bp
+++ b/Android.bp
@@ -45,7 +45,6 @@
"include",
"host",
"host/gl",
- "host/gl/glestranslator/include",
"host/vulkan",
"utils/include",
],
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 47c21f8..766589f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -44,6 +44,12 @@
option(ASTC_CPU_DECODING "Enable decoding ASTC textures on the CPU" OFF)
+option(GFXSTREAM_ENABLE_HOST_TRACING "Enable Perfetto trace events on the host" OFF)
+if(GFXSTREAM_ENABLE_HOST_TRACING)
+ add_compile_definitions(GFXSTREAM_BUILD_WITH_TRACING)
+ add_compile_definitions(GFXSTREAM_BUILD_WITH_PERFETTO_SDK)
+endif()
+
# For now the caller of the cmake script is responsible to create the angle_shader_translator
# target.
option(USE_ANGLE_SHADER_PARSER "Build with ANGLE shader parser." OFF)
diff --git a/host/CMakeLists.txt b/host/CMakeLists.txt
index 7abf440..31a6358 100644
--- a/host/CMakeLists.txt
+++ b/host/CMakeLists.txt
@@ -126,9 +126,14 @@
target_compile_options(
gfxstream_backend_static
PRIVATE
- -Wno-invalid-offsetof
- -Wno-free-nonheap-object
- -Wno-attributes
+ -Wall
+ -Wextra
+ -Werror
+ -Wno-missing-field-initializers
+ -Wno-unused-parameter
+ -Wno-unused-private-field
+ -Wno-return-type-c-linkage
+ -Wno-extern-c-compat
-DGFXSTREAM_ENABLE_HOST_GLES=1
)
diff --git a/host/ColorBuffer.cpp b/host/ColorBuffer.cpp
index 67bed17..345b74b 100644
--- a/host/ColorBuffer.cpp
+++ b/host/ColorBuffer.cpp
@@ -101,11 +101,10 @@
}
#if GFXSTREAM_ENABLE_HOST_GLES
- bool b271028352Workaround = emulationGl && strstr(emulationGl->getGlesRenderer().c_str(), "Intel");
bool vkSnapshotEnabled = emulationVk && emulationVk->getFeatures().VulkanSnapshots.enabled;
if ((!stream || vkSnapshotEnabled) && colorBuffer->mColorBufferGl && colorBuffer->mColorBufferVk &&
- !b271028352Workaround && shouldAttemptExternalMemorySharing(frameworkFormat)) {
+ shouldAttemptExternalMemorySharing(frameworkFormat)) {
colorBuffer->touch();
auto memoryExport = emulationVk->exportColorBufferMemory(handle);
if (memoryExport) {
diff --git a/host/FrameBuffer.cpp b/host/FrameBuffer.cpp
index 0ceb74c..789c8b7 100644
--- a/host/FrameBuffer.cpp
+++ b/host/FrameBuffer.cpp
@@ -178,11 +178,6 @@
#endif
}
-AstcEmulationMode getAstcEmulationMode() {
- return AstcEmulationMode::Gpu;
-// return AstcEmulationMode::Cpu;
-}
-
} // namespace
// |sInitialized| caches the initialized framebuffer state - this way
@@ -360,11 +355,11 @@
#endif
};
fb->m_emulationVk = vk::VkEmulation::create(vkDispatch, callbacks, fb->m_features);
- if (!fb->m_emulationVk) {
+ if (fb->m_emulationVk) {
+ vk::VkDecoderGlobalState::initialize(fb->m_emulationVk.get());
+ } else {
ERR("Failed to initialize global Vulkan emulation. Disable the Vulkan support.");
}
-
- vk::VkDecoderGlobalState::initialize(fb->m_emulationVk.get());
}
if (fb->m_emulationVk) {
fb->m_vulkanEnabled = true;
@@ -488,7 +483,7 @@
GL_LOG("glvk interop final: %d", fb->m_vulkanInteropSupported);
vkEmulationFeatures.glInteropSupported = fb->m_vulkanInteropSupported;
- if (fb->m_features.Vulkan.enabled) {
+ if (fb->m_emulationVk && fb->m_features.Vulkan.enabled) {
fb->m_emulationVk->initFeatures(std::move(vkEmulationFeatures));
auto* display = fb->m_emulationVk->getDisplay();
@@ -498,7 +493,7 @@
}
}
- if (fb->m_useVulkanComposition) {
+ if (fb->m_emulationVk && fb->m_useVulkanComposition) {
fb->m_compositor = fb->m_emulationVk->getCompositor();
if (!fb->m_compositor) {
ERR("Failed to get CompositorVk from VkEmulation.");
@@ -3279,7 +3274,6 @@
GFXSTREAM_ABORT(FatalError(ABORT_REASON_OTHER)) << "RenderThreadInfoGl not available.";
}
if (!info->currContext) {
- auto fb = FrameBuffer::getFB();
uint32_t syncContext;
uint32_t syncSurface;
createTrivialContext(0, // There is no context to share.
diff --git a/host/GlesCompat.h b/host/GlesCompat.h
index 3c57028..f1f56dc 100644
--- a/host/GlesCompat.h
+++ b/host/GlesCompat.h
@@ -19,7 +19,6 @@
typedef unsigned int GLenum;
typedef int32_t EGLint;
-// typedef void *EGLNativeDisplayType;
typedef unsigned int EGLNativeWindowType;
namespace gfxstream {
diff --git a/host/PostWorker.cpp b/host/PostWorker.cpp
index b6bc66f..643d2d4 100644
--- a/host/PostWorker.cpp
+++ b/host/PostWorker.cpp
@@ -23,7 +23,6 @@
#include "FrameBuffer.h"
#include "RenderThreadInfo.h"
#include "aemu/base/Tracing.h"
-#include "host-common/GfxstreamFatalError.h"
#include "host-common/logging.h"
#include "host-common/misc.h"
#include "vulkan/VkCommonOperations.h"
@@ -35,25 +34,6 @@
}
namespace gfxstream {
-namespace {
-
-using emugl::ABORT_REASON_OTHER;
-using emugl::FatalError;
-
-hwc_transform_t getTransformFromRotation(int rotation) {
- switch (static_cast<int>(rotation / 90)) {
- case 1:
- return HWC_TRANSFORM_ROT_270;
- case 2:
- return HWC_TRANSFORM_ROT_180;
- case 3:
- return HWC_TRANSFORM_ROT_90;
- default:
- return HWC_TRANSFORM_NONE;
- }
-}
-
-} // namespace
PostWorker::PostWorker(bool mainThreadPostingOnly, FrameBuffer* fb, Compositor* compositor)
: mFb(fb),
diff --git a/host/PostWorkerGl.cpp b/host/PostWorkerGl.cpp
index f44254e..1bb765f 100644
--- a/host/PostWorkerGl.cpp
+++ b/host/PostWorkerGl.cpp
@@ -221,7 +221,6 @@
float px = mFb->getPx();
float py = mFb->getPy();
int zRot = mFb->getZrot();
- hwc_transform_t rotation = (hwc_transform_t)0;
// Find the x and y values at the origin when "fully scrolled."
// Multiply by 2 because the texture goes from -1 to 1, not 0 to 1.
diff --git a/host/RenderControl.cpp b/host/RenderControl.cpp
index 1393e0d..353b275 100644
--- a/host/RenderControl.cpp
+++ b/host/RenderControl.cpp
@@ -1410,8 +1410,6 @@
uint32_t memoryProperty) {
#define VULKAN_MODE_VULKAN_ONLY 1
- bool modeIsVulkanOnly = mode == VULKAN_MODE_VULKAN_ONLY;
-
FrameBuffer* fb = FrameBuffer::getFB();
if (!fb->hasEmulationVk()) {
ERR("VkEmulation not enabled.");
diff --git a/host/VirtioGpuFrontend.cpp b/host/VirtioGpuFrontend.cpp
index 1a40502..7dacb4f 100644
--- a/host/VirtioGpuFrontend.cpp
+++ b/host/VirtioGpuFrontend.cpp
@@ -806,6 +806,9 @@
auto& context = contextIt->second;
auto createArgs = context.TakePendingBlob(createBlobArgs->blob_id);
+ if (createArgs) {
+ createArgs->handle = resourceId;
+ }
auto resourceOpt =
VirtioGpuResource::Create(mFeatures, mPageSize, contextId, resourceId,
diff --git a/host/VirtioGpuResource.cpp b/host/VirtioGpuResource.cpp
index 1212750..5577188 100644
--- a/host/VirtioGpuResource.cpp
+++ b/host/VirtioGpuResource.cpp
@@ -100,7 +100,7 @@
}
VirtioGpuResourceType GetResourceType(const struct stream_renderer_resource_create_args& args) {
- if (args.target == PIPE_BUFFER) {
+ if (args.target == PIPE_BUFFER && args.bind == VIRGL_BIND_CUSTOM) {
return VirtioGpuResourceType::PIPE;
}
@@ -1094,4 +1094,4 @@
#endif // #ifdef GFXSTREAM_BUILD_WITH_SNAPSHOT_FRONTEND_SUPPORT
} // namespace host
-} // namespace gfxstream
\ No newline at end of file
+} // namespace gfxstream
diff --git a/host/features/include/gfxstream/host/Features.h b/host/features/include/gfxstream/host/Features.h
index 6c03a70..2eaa0d2 100644
--- a/host/features/include/gfxstream/host/Features.h
+++ b/host/features/include/gfxstream/host/Features.h
@@ -221,8 +221,10 @@
};
FeatureInfo BypassVulkanDeviceFeatureOverrides = {
"BypassVulkanDeviceFeatureOverrides",
- "We are force disabling (overriding) some vulkan features (private data, uniform inline block etc) which the device may naturally support."
- "If toggled ON, this flag will cause the host side to not force disable anything and let the device fully advertise supported features.",
+ "We are force disabling (overriding) some vulkan features (private data, uniform inline "
+ "block etc) which the device may naturally support."
+ "If toggled ON, this flag will cause the host side to not force disable anything and let "
+ "the device fully advertise supported features.",
&map,
};
FeatureInfo VulkanAllocateDeviceMemoryOnly = {
@@ -321,7 +323,14 @@
"device properties for the guest queries.",
&map,
};
+ FeatureInfo VulkanRobustness = {
+ "VulkanRobustness",
+ "If enabled, robustness extensions with all supported features will be enabled on "
+ "all created devices. (e.g. VK_EXT_robustness2)",
+ &map,
+ };
};
+
struct FeatureDependencyHandler {
FeatureDependencyHandler(const FeatureSet& set) : featureSetView(set){}
const FeatureSet& featureSetView;
diff --git a/host/gl/Android.bp b/host/gl/Android.bp
index bf36ed3..5e21ad3 100644
--- a/host/gl/Android.bp
+++ b/host/gl/Android.bp
@@ -38,6 +38,7 @@
"libgfxstream_host_features",
"libgfxstream_host_gles1_dec",
"libgfxstream_host_gles2_dec",
+ "libgfxstream_host_glestranslator_glcommon",
"libgfxstream_host_glsnapshot",
],
}
diff --git a/host/gl/BUILD.bazel b/host/gl/BUILD.bazel
index a9e771f..0b6ee9f 100644
--- a/host/gl/BUILD.bazel
+++ b/host/gl/BUILD.bazel
@@ -30,9 +30,9 @@
cc_library(
name = "gl-common-headers",
- hdrs = glob(["glestranslator/include/**/*.h"]),
+ hdrs = glob(["glestranslator/GLcommon/include/**/*.h"]),
copts = ["-fno-exceptions"],
- includes = ["glestranslator/include"],
+ includes = ["glestranslator/GLcommon/include"],
visibility = ["//visibility:public"],
deps = ["//hardware/google/gfxstream/host/apigen-codec-common"],
)
@@ -167,7 +167,6 @@
srcs = [
"gl-host-common/opengl/EmuglBackendList.cpp",
"gl-host-common/opengl/GLProcessPipe.cpp",
- "gl-host-common/opengl/GpuFrameBridge.cpp",
"gl-host-common/opengl/OpenglEsPipe.cpp",
"gl-host-common/opengl/emugl_config.cpp",
"gl-host-common/opengl/gpuinfo.cpp",
diff --git a/host/gl/CMakeLists.txt b/host/gl/CMakeLists.txt
index 45238f7..d617d17 100644
--- a/host/gl/CMakeLists.txt
+++ b/host/gl/CMakeLists.txt
@@ -40,6 +40,7 @@
gfxstream_egl_headers
gles1_dec
gles2_dec
+ GLcommon
GLSnapshot
OpenGLESDispatch)
diff --git a/host/gl/ColorBufferGl.cpp b/host/gl/ColorBufferGl.cpp
index c068f12..4e18562 100644
--- a/host/gl/ColorBufferGl.cpp
+++ b/host/gl/ColorBufferGl.cpp
@@ -21,13 +21,13 @@
#include "BorrowedImageGl.h"
#include "DebugGl.h"
+#include "GLcommon/GLutils.h"
#include "OpenGLESDispatch/DispatchTables.h"
#include "OpenGLESDispatch/EGLDispatch.h"
#include "RenderThreadInfoGl.h"
#include "TextureDraw.h"
#include "TextureResize.h"
#include "gl/YUVConverter.h"
-#include "glestranslator/include/GLcommon/GLutils.h"
#include "host-common/GfxstreamFatalError.h"
#include "host-common/opengl/misc.h"
diff --git a/host/gl/EmulationGl.cpp b/host/gl/EmulationGl.cpp
index 5158606..e9d9757 100644
--- a/host/gl/EmulationGl.cpp
+++ b/host/gl/EmulationGl.cpp
@@ -461,6 +461,17 @@
if (s_egl.eglQueryVulkanInteropSupportANDROID) {
emulationGl->mGlesVulkanInteropSupported = s_egl.eglQueryVulkanInteropSupportANDROID();
}
+ if (emulationGl->mGlesVulkanInteropSupported) {
+ // Intel: b/271028352 workaround
+ const std::vector<const char*> disallowList = {"Intel", "AMD Radeon Pro WX 3200"};
+ const std::string& glesRenderer = emulationGl->getGlesRenderer();
+ for (const auto& disallowed : disallowList) {
+ if (strstr(glesRenderer.c_str(), disallowed)) {
+ emulationGl->mGlesVulkanInteropSupported = false;
+ break;
+ }
+ }
+ }
emulationGl->mTextureDraw = std::make_unique<TextureDraw>();
if (!emulationGl->mTextureDraw) {
diff --git a/host/gl/gl-host-common/Android.bp b/host/gl/gl-host-common/Android.bp
index b6976c5..3e34cdd 100644
--- a/host/gl/gl-host-common/Android.bp
+++ b/host/gl/gl-host-common/Android.bp
@@ -38,7 +38,6 @@
"opengl/EmuglBackendList.cpp",
"opengl/emugl_config.cpp",
"opengl/GLProcessPipe.cpp",
- "opengl/GpuFrameBridge.cpp",
"opengl/gpuinfo.cpp",
"opengl/logger.cpp",
"opengl/misc.cpp",
diff --git a/host/gl/gl-host-common/CMakeLists.txt b/host/gl/gl-host-common/CMakeLists.txt
index e7a3373..a452abc 100644
--- a/host/gl/gl-host-common/CMakeLists.txt
+++ b/host/gl/gl-host-common/CMakeLists.txt
@@ -43,8 +43,6 @@
opengl/emugl_config.cpp
# opengl/emugl_config_unittest.cpp
opengl/GLProcessPipe.cpp
- opengl/GpuFrameBridge.cpp
- # opengl/GpuFrameBridge_unittest.cpp
opengl/gpuinfo.cpp
# opengl/gpuinfo_unittest.cpp
opengl/logger.cpp
diff --git a/host/gl/gl-host-common/include/host-common/opengl/GpuFrameBridge.h b/host/gl/gl-host-common/include/host-common/opengl/GpuFrameBridge.h
deleted file mode 100644
index 03bc1d5..0000000
--- a/host/gl/gl-host-common/include/host-common/opengl/GpuFrameBridge.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (C) 2015 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma once
-
-#include <cstdint>
-
-class Looper;
-namespace android {
-
-namespace base {
-class Looper;
-} // namespace base
-
-namespace opengl {
-
-// GpuFrameBridge is a helper class to forward Gpu frame to its clients.
-// Usage is the following:
-// 1) Create a new GpuFrameBridge instance.
-// 2) Register the FrameAvailableCallback if needed.
-// 3) Call getRecordFrame or getRecordFrameAsync to receive frame.
-class GpuFrameBridge {
-public:
- // Create a new GpuFrameBridge instance.
- static GpuFrameBridge* create();
-
- // Destructor
- virtual ~GpuFrameBridge() {}
-
- // Post callback (synchronous) specifically for recording purposes.
- virtual void postRecordFrame(int width, int height, const void* pixels) = 0;
-
- // Async version of postRecordFrame for use with async readback.
- // Does not read the frame immediately.
- virtual void postRecordFrameAsync(int width,
- int height,
- const void* pixels) = 0;
-
- // Returns the currently displayed frame. This method is designed only for
- // recording. Returns null if there is no frame available. Make sure to
- // attach the postFrameRecording() as the callback or you will not get a
- // valid frame.
- virtual void* getRecordFrame() = 0;
-
- // Async version of getRecordFrame.
- virtual void* getRecordFrameAsync() = 0;
-
- // Invalidates the recording buffers. Once called, getRecordFrame() and it's
- // async version will return null until new data has been posted.
- virtual void invalidateRecordingBuffers() = 0;
-
- typedef void (*FrameAvailableCallback)(void* opaque);
-
- virtual void setFrameReceiver(FrameAvailableCallback receiver, void* opaque) = 0;
-
- virtual void setDisplayId(uint32_t displayId) = 0;
-
- // virtual void setLooper(android::base::Looper* aLooper) = 0;
-
-protected:
- GpuFrameBridge() {}
- GpuFrameBridge(const GpuFrameBridge& other);
-};
-
-} // namespace opengl
-} // namespace android
diff --git a/host/gl/gl-host-common/meson.build b/host/gl/gl-host-common/meson.build
index c10f912..d102831 100644
--- a/host/gl/gl-host-common/meson.build
+++ b/host/gl/gl-host-common/meson.build
@@ -6,7 +6,6 @@
'opengl/EmuglBackendList.cpp',
'opengl/emugl_config.cpp',
'opengl/GLProcessPipe.cpp',
- 'opengl/GpuFrameBridge.cpp',
'opengl/gpuinfo.cpp',
'opengl/logger.cpp',
'opengl/misc.cpp',
diff --git a/host/gl/gl-host-common/opengl/GpuFrameBridge.cpp b/host/gl/gl-host-common/opengl/GpuFrameBridge.cpp
deleted file mode 100644
index 717025d..0000000
--- a/host/gl/gl-host-common/opengl/GpuFrameBridge.cpp
+++ /dev/null
@@ -1,242 +0,0 @@
-// Copyright (C) 2015 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "host-common/opengl/GpuFrameBridge.h"
-
-#include <stdio.h> // for printf
-#include <stdlib.h> // for NULL, free, malloc
-#include <string.h> // for memcpy
-
-#include <atomic> // for atomic_bool, memory_o...
-#include <memory> // for unique_ptr
-
-#include "aemu/base/synchronization/Lock.h" // for Lock, AutoLock
-#include "aemu/base/synchronization/MessageChannel.h"
-#include "host-common/opengles.h" // for android_getFlushReadP...
-
-#ifdef _WIN32
-#undef ERROR
-#endif
-
-namespace android {
-namespace opengl {
-
-using android::base::AutoLock;
-using android::base::Lock;
-using android::base::MessageChannel;
-
-namespace {
-
-// A small structure to model a single frame of the GPU display,
-// as passed between the EmuGL and main loop thread.
-struct Frame {
- int width;
- int height;
- void* pixels;
- bool isValid;
-
- Frame(int w, int h, const void* pixels)
- : width(w), height(h), pixels(NULL), isValid(true) {
- this->pixels = ::malloc(w * 4 * h);
- }
-
- ~Frame() { ::free(pixels); }
-};
-
-// Real implementation of GpuFrameBridge interface.
-class Bridge : public GpuFrameBridge {
-public:
- // Constructor.
- Bridge()
- : GpuFrameBridge(),
- mRecFrame(NULL),
- mRecTmpFrame(NULL),
- mRecFrameUpdated(false),
- mReadPixelsFunc(android_getReadPixelsFunc()),
- mFlushPixelPipeline(android_getFlushReadPixelPipeline()) {}
-
- // The gpu bridge receives frames from a buffer that can contain multiple
- // frames. usually the bridge is one frame behind. This is usually not a
- // problem when we have a high enough framerate. However it is possible that
- // the framerate drops really low (even <1). This can result in the bridge
- // never delivering this "stuck frame".
- //
- // As a work around we will flush the reader pipeline if no frames are
- // delivered within at most 2x kFrameDelayms
- const long kMinFPS = 24;
- const long kFrameDelayMs = 1000 / kMinFPS;
-
- // Destructor
- virtual ~Bridge() {
- if (mRecFrame) {
- delete mRecFrame;
- }
- if (mRecTmpFrame) {
- delete mRecTmpFrame;
- }
- }
-
- // virtual void setLooper(android::base::Looper* aLooper) override {
- // mTimer = std::unique_ptr<android::base::Looper::Timer>(
- // aLooper->createTimer(_on_frame_notify, this));
- // }
-
- void notify() {
- AutoLock delay(mDelayLock);
- switch (mDelayCallback) {
- case FrameDelay::Reschedule:
- // mTimer->startRelative(kFrameDelayMs);
- mDelayCallback = FrameDelay::Scheduled;
- break;
- case FrameDelay::Scheduled:
- // mTimer->stop();
- mDelayCallback = FrameDelay::Firing;
- delay.unlock();
- mFlushPixelPipeline(mDisplayId);
- break;
- default:
- assert(false);
- }
- }
-
- // static void _on_frame_notify(void* opaque,
- // android::base::Looper::Timer* timer) {
- // Bridge* worker = static_cast<Bridge*>(opaque);
- // worker->notify();
- // }
-
- // Implementation of the GpuFrameBridge::postRecordFrame() method, must be
- // called from the EmuGL thread.
- virtual void postRecordFrame(int width,
- int height,
- const void* pixels) override {
- postFrame(width, height, pixels, true);
- }
-
- virtual void postRecordFrameAsync(int width,
- int height,
- const void* pixels) override {
- postFrame(width, height, pixels, false);
- }
-
- virtual void* getRecordFrame() override {
- if (mRecFrameUpdated.exchange(false)) {
- AutoLock lock(mRecLock);
- memcpy(mRecFrame->pixels, mRecTmpFrame->pixels,
- mRecFrame->width * mRecFrame->height * 4);
- mRecFrame->isValid = true;
- }
- return mRecFrame && mRecFrame->isValid ? mRecFrame->pixels : nullptr;
- }
-
- virtual void* getRecordFrameAsync() override {
- if (mRecFrameUpdated.exchange(false)) {
- AutoLock lock(mRecLock);
- mReadPixelsFunc(mRecFrame->pixels,
- mRecFrame->width * mRecFrame->height * 4,
- mDisplayId);
- mRecFrame->isValid = true;
- }
- return mRecFrame && mRecFrame->isValid ? mRecFrame->pixels : nullptr;
- }
-
- virtual void invalidateRecordingBuffers() override {
- {
- AutoLock lock(mRecLock);
- // Release the buffers because new recording in the furture may have
- // different resolution if multi display changes its resolution.
- if (mRecFrame) {
- delete mRecFrame;
- mRecFrame = nullptr;
- }
- if (mRecTmpFrame) {
- delete mRecTmpFrame;
- mRecTmpFrame = nullptr;
- }
- }
- mRecFrameUpdated.store(false, std::memory_order_release);
- }
-
- void setFrameReceiver(FrameAvailableCallback receiver,
- void* opaque) override {
- mReceiver = receiver;
- mReceiverOpaque = opaque;
- }
-
- void postFrame(int width, int height, const void* pixels, bool copy) {
- {
- AutoLock lock(mRecLock);
- if (!mRecFrame) {
- mRecFrame = new Frame(width, height, pixels);
- }
- if (!mRecTmpFrame) {
- mRecTmpFrame = new Frame(width, height, pixels);
- }
- if (copy) {
- memcpy(mRecTmpFrame->pixels, pixels, width * height * 4);
- }
- }
- mRecFrameUpdated.store(true, std::memory_order_release);
- if (mReceiver) {
- mReceiver(mReceiverOpaque);
- AutoLock delay(mDelayLock);
- switch (mDelayCallback) {
- case FrameDelay::NotScheduled:
- // mTimer->startRelative(kFrameDelayMs);
- mDelayCallback = FrameDelay::Scheduled;
- break;
- case FrameDelay::Firing:
- mDelayCallback = FrameDelay::NotScheduled;
- break;
- default:
- mDelayCallback = FrameDelay::Reschedule;
- break;
- }
- }
- }
-
- virtual void setDisplayId(uint32_t displayId) override {
- mDisplayId = displayId;
- }
- enum class FrameDelay {
- NotScheduled = 0, // No delay timer is scheduled
- Scheduled, // A delay timer has been scheduled and will flush the
- // pipeline on expiration
- Reschedule, // Do not flush the pipeline, but reschedule
- Firing, // A callback has been scheduled, nothing needs to happen
- };
-
-private:
- FrameAvailableCallback mReceiver = nullptr;
- void* mReceiverOpaque = nullptr;
- Lock mRecLock;
- Frame* mRecFrame;
- Frame* mRecTmpFrame;
- std::atomic_bool mRecFrameUpdated;
- ReadPixelsFunc mReadPixelsFunc = 0;
- uint32_t mDisplayId = 0;
- FlushReadPixelPipeline mFlushPixelPipeline = 0;
-
- // std::unique_ptr<android::base::Looper::Timer> mTimer;
- Lock mDelayLock;
- FrameDelay mDelayCallback{FrameDelay::NotScheduled};
-};
-} // namespace
-// static
-GpuFrameBridge* GpuFrameBridge::create() {
- return new Bridge();
-}
-
-} // namespace opengl
-} // namespace android
diff --git a/host/gl/gl-host-common/opengl/GpuFrameBridge_unittest.cpp b/host/gl/gl-host-common/opengl/GpuFrameBridge_unittest.cpp
deleted file mode 100644
index 03c62dd..0000000
--- a/host/gl/gl-host-common/opengl/GpuFrameBridge_unittest.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (C) 2015 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "android/opengl/GpuFrameBridge.h"
-
-#include "android/base/async/Looper.h"
-#include "android/base/Log.h"
-#include "android/base/memory/ScopedPtr.h"
-
-#include <gtest/gtest.h>
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-
-namespace android {
-namespace opengl {
-
-using android::base::ScopedPtr;
-using android::base::Looper;
-
-TEST(GpuFrameBridge, postFrameWithinSingleThread) {
- GpuFrameBridge* bridge =
- GpuFrameBridge::create();
- EXPECT_TRUE(bridge);
-
- static const unsigned char kFrame0[4] = {
- 0xff, 0x80, 0x40, 0xff,
- };
-
- bridge->postRecordFrame(1, 1, kFrame0);
- unsigned char* pixel = (unsigned char*)bridge->getRecordFrame();
- for (size_t n = 0; n < sizeof(kFrame0); ++n) {
- EXPECT_EQ(kFrame0[n], pixel[n]) << "# " << n;
- }
-}
-
-} // namespace opengl
-} // namespace android
diff --git a/host/gl/gl-host-common/opengles.cpp b/host/gl/gl-host-common/opengles.cpp
index b83e959..8da6668 100644
--- a/host/gl/gl-host-common/opengles.cpp
+++ b/host/gl/gl-host-common/opengles.cpp
@@ -14,72 +14,30 @@
#include "host-common/opengles.h"
-#include "aemu/base/GLObjectCounter.h"
-#include "aemu/base/files/PathUtils.h"
-#include "aemu/base/files/Stream.h"
-#include "aemu/base/memory/MemoryTracker.h"
-#include "aemu/base/SharedLibrary.h"
-#include "aemu/base/system/System.h"
-#include "host-common/address_space_device.h"
-#include "host-common/address_space_graphics.h"
-#include "host-common/address_space_graphics_types.h"
-#include "host-common/GfxstreamFatalError.h"
-#include "host-common/GoldfishDma.h"
-#include "host-common/logging.h"
-#include "host-common/RefcountPipe.h"
-#include "host-common/FeatureControl.h"
-#include "host-common/globals.h"
-#include "host-common/opengl/emugl_config.h"
-#include "host-common/opengl/GLProcessPipe.h"
-#include "host-common/opengl/logger.h"
-#include "host-common/opengl/gpuinfo.h"
-
-#include "render-utils/render_api_functions.h"
-#include "OpenGLESDispatch/EGLDispatch.h"
-#include "OpenGLESDispatch/GLESv2Dispatch.h"
-
-
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <optional>
-#define D(...)
-#define DD(...)
+#include "aemu/base/GLObjectCounter.h"
+#include "aemu/base/SharedLibrary.h"
+#include "host-common/address_space_device.h"
+#include "host-common/address_space_graphics.h"
+#include "host-common/address_space_graphics_types.h"
+#include "host-common/GfxstreamFatalError.h"
+#include "host-common/logging.h"
+#include "host-common/opengl/GLProcessPipe.h"
+#include "host-common/opengl/emugl_config.h"
+#include "host-common/opengl/logger.h"
+#include "host-common/opengl/gpuinfo.h"
-#define I(fmt, ...) \
- do { \
- GFXSTREAM_LOG(stderr, 'I', fmt, ##__VA_ARGS__); \
- } while (0);
-
-#define E(fmt, ...) \
- do { \
- GFXSTREAM_LOG(stderr, 'E', fmt, ##__VA_ARGS__); \
- } while (0);
-
-
-using android::base::pj;
using android::base::SharedLibrary;
using android::emulation::asg::AddressSpaceGraphicsContext;
using android::emulation::asg::ConsumerCallbacks;
using android::emulation::asg::ConsumerInterface;
using emugl::ABORT_REASON_OTHER;
using emugl::FatalError;
-using gfxstream::gl::EGLDispatch;
-using gfxstream::gl::GLESv2Dispatch;
-
-/* Name of the GLES rendering library we're going to use */
-#define RENDERER_LIB_NAME "libOpenglRender"
-
-/* Declared in "android/globals.h" */
-int android_gles_fast_pipes = 1;
-
-// Define the Render API function pointers.
-#define FUNCTION_(ret, name, sig, params) \
- inline ret (*name) sig = NULL;
-LIST_RENDER_API_FUNCTIONS(FUNCTION_)
-#undef FUNCTION_
static bool sOpenglLoggerInitialized = false;
static bool sRendererUsesSubWindow = false;
@@ -136,7 +94,6 @@
int* glesMinorVersion_out)
{
if (!sRenderLib) {
- D("Can't start OpenGLES renderer without support libraries");
return -1;
}
@@ -146,13 +103,11 @@
const GpuInfoList& gpuList = globalGpuInfoList();
std::string gpuInfoAsString = gpuList.dump();
- I("%s: gpu info", __func__);
- I("%s", gpuInfoAsString.c_str());
+ INFO("%s: gpu info", __func__);
+ INFO("%s", gpuInfoAsString.c_str());
sRenderLib->setRenderer(emuglConfig_get_current_renderer());
sRenderLib->setAvdInfo(guestPhoneApi, guestApiLevel);
- // sRenderLib->setCrashReporter(&crashhandler_die_format);
- // sRenderLib->setFeatureController(&android::featurecontrol::isEnabled);
sRenderLib->setSyncDevice(goldfish_sync_create_timeline,
goldfish_sync_create_fence,
goldfish_sync_timeline_inc,
@@ -169,19 +124,11 @@
sRenderLib->setVmOps(*vm_operations);
sRenderLib->setAddressSpaceDeviceControlOps(get_address_space_device_control_ops());
sRenderLib->setWindowOps(*window_agent, *multi_display_agent);
- // sRenderLib->setUsageTracker(android::base::CpuUsage::get(),
- // android::base::MemoryTracker::get());
const auto* features = reinterpret_cast<const gfxstream::host::FeatureSet*>(gfxstreamFeatures);
sRenderer = sRenderLib->initRenderer(width, height, *features, sRendererUsesSubWindow, sEgl2egl);
android_setOpenglesRenderer(&sRenderer);
- // android::snapshot::Snapshotter::get().addOperationCallback(
- // [](android::snapshot::Snapshotter::Operation op,
- // android::snapshot::Snapshotter::Stage stage) {
- // sRenderer->snapshotOperationCallback(op, stage);
- // });
-
android::emulation::registerOnLastRefCallback(
sRenderLib->getOnLastColorBufferRef());
@@ -237,7 +184,7 @@
AddressSpaceGraphicsContext::setConsumer(iface);
if (!sRenderer) {
- D("Can't start OpenGLES renderer?");
+ ERR("Can't start OpenGLES renderer?");
return -1;
}
@@ -253,8 +200,8 @@
if (sRenderer) {
return sRenderer->asyncReadbackSupported();
} else {
- D("tried to query async readback support "
- "before renderer initialized. Likely guest rendering");
+ VERBOSE("tried to query async readback support "
+ "before renderer initialized. Likely guest rendering");
return false;
}
}
@@ -317,14 +264,14 @@
assert(vendor != NULL && renderer != NULL && version != NULL);
assert(*vendor == NULL && *renderer == NULL && *version == NULL);
if (!sRenderer) {
- D("Can't get OpenGL ES hardware strings when renderer not started");
+ ERR("Can't get OpenGL ES hardware strings when renderer not started");
return;
}
const gfxstream::Renderer::HardwareStrings strings = sRenderer->getHardwareStrings();
- D("OpenGL Vendor=[%s]", strings.vendor.c_str());
- D("OpenGL Renderer=[%s]", strings.renderer.c_str());
- D("OpenGL Version=[%s]", strings.version.c_str());
+ INFO("OpenGL Vendor=[%s]", strings.vendor.c_str());
+ INFO("OpenGL Renderer=[%s]", strings.renderer.c_str());
+ INFO("OpenGL Version=[%s]", strings.version.c_str());
/* Special case for the default ES to GL translators: extract the strings
* of the underlying OpenGL implementation. */
@@ -342,7 +289,7 @@
void android_getOpenglesVersion(int* maj, int* min) {
sRenderLib->getGlesVersion(maj, min);
- fprintf(stderr, "%s: maj min %d %d\n", __func__, *maj, *min);
+ INFO("OpenGL ES version major:%d minor:%d", *maj, *min);
}
void
diff --git a/host/gl/glestranslator/GLcommon/Android.bp b/host/gl/glestranslator/GLcommon/Android.bp
index 5929319..4c1cc99 100644
--- a/host/gl/glestranslator/GLcommon/Android.bp
+++ b/host/gl/glestranslator/GLcommon/Android.bp
@@ -47,4 +47,7 @@
"TextureData.cpp",
"TextureUtils.cpp",
],
+ export_include_dirs: [
+ "include",
+ ],
}
diff --git a/host/gl/glestranslator/GLcommon/CMakeLists.txt b/host/gl/glestranslator/GLcommon/CMakeLists.txt
index 0b358f4..b77678e 100644
--- a/host/gl/glestranslator/GLcommon/CMakeLists.txt
+++ b/host/gl/glestranslator/GLcommon/CMakeLists.txt
@@ -25,7 +25,7 @@
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/host
${GFXSTREAM_REPO_ROOT}/host/apigen-codec-common
- ${GFXSTREAM_REPO_ROOT}/host/gl/glestranslator/include)
+ ${GFXSTREAM_REPO_ROOT}/host/gl/glestranslator/GLcommon/include)
target_link_libraries(
GLcommon PUBLIC
aemu-base.headers
diff --git a/host/gl/glestranslator/include/GLcommon/FramebufferData.h b/host/gl/glestranslator/GLcommon/include/GLcommon/FramebufferData.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/FramebufferData.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/FramebufferData.h
diff --git a/host/gl/glestranslator/include/GLcommon/GLBackgroundLoader.h b/host/gl/glestranslator/GLcommon/include/GLcommon/GLBackgroundLoader.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/GLBackgroundLoader.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/GLBackgroundLoader.h
diff --git a/host/gl/glestranslator/include/GLcommon/GLDispatch.h b/host/gl/glestranslator/GLcommon/include/GLcommon/GLDispatch.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/GLDispatch.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/GLDispatch.h
diff --git a/host/gl/glestranslator/include/GLcommon/GLESbuffer.h b/host/gl/glestranslator/GLcommon/include/GLcommon/GLESbuffer.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/GLESbuffer.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/GLESbuffer.h
diff --git a/host/gl/glestranslator/include/GLcommon/GLEScontext.h b/host/gl/glestranslator/GLcommon/include/GLcommon/GLEScontext.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/GLEScontext.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/GLEScontext.h
diff --git a/host/gl/glestranslator/include/GLcommon/GLESmacros.h b/host/gl/glestranslator/GLcommon/include/GLcommon/GLESmacros.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/GLESmacros.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/GLESmacros.h
diff --git a/host/gl/glestranslator/include/GLcommon/GLESpointer.h b/host/gl/glestranslator/GLcommon/include/GLcommon/GLESpointer.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/GLESpointer.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/GLESpointer.h
diff --git a/host/gl/glestranslator/include/GLcommon/GLESvalidate.h b/host/gl/glestranslator/GLcommon/include/GLcommon/GLESvalidate.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/GLESvalidate.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/GLESvalidate.h
diff --git a/host/gl/glestranslator/include/GLcommon/GLLibrary.h b/host/gl/glestranslator/GLcommon/include/GLcommon/GLLibrary.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/GLLibrary.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/GLLibrary.h
diff --git a/host/gl/glestranslator/include/GLcommon/GLSnapshotSerializers.h b/host/gl/glestranslator/GLcommon/include/GLcommon/GLSnapshotSerializers.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/GLSnapshotSerializers.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/GLSnapshotSerializers.h
diff --git a/host/gl/glestranslator/include/GLcommon/GLconversion_macros.h b/host/gl/glestranslator/GLcommon/include/GLcommon/GLconversion_macros.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/GLconversion_macros.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/GLconversion_macros.h
diff --git a/host/gl/glestranslator/include/GLcommon/GLutils.h b/host/gl/glestranslator/GLcommon/include/GLcommon/GLutils.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/GLutils.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/GLutils.h
diff --git a/host/gl/glestranslator/include/GLcommon/NamedObject.h b/host/gl/glestranslator/GLcommon/include/GLcommon/NamedObject.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/NamedObject.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/NamedObject.h
diff --git a/host/gl/glestranslator/include/GLcommon/ObjectData.h b/host/gl/glestranslator/GLcommon/include/GLcommon/ObjectData.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/ObjectData.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/ObjectData.h
diff --git a/host/gl/glestranslator/include/GLcommon/ObjectNameSpace.h b/host/gl/glestranslator/GLcommon/include/GLcommon/ObjectNameSpace.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/ObjectNameSpace.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/ObjectNameSpace.h
diff --git a/host/gl/glestranslator/include/GLcommon/PaletteTexture.h b/host/gl/glestranslator/GLcommon/include/GLcommon/PaletteTexture.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/PaletteTexture.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/PaletteTexture.h
diff --git a/host/gl/glestranslator/include/GLcommon/RangeManip.h b/host/gl/glestranslator/GLcommon/include/GLcommon/RangeManip.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/RangeManip.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/RangeManip.h
diff --git a/host/gl/glestranslator/include/GLcommon/SaveableTexture.h b/host/gl/glestranslator/GLcommon/include/GLcommon/SaveableTexture.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/SaveableTexture.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/SaveableTexture.h
diff --git a/host/gl/glestranslator/include/GLcommon/ScopedGLState.h b/host/gl/glestranslator/GLcommon/include/GLcommon/ScopedGLState.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/ScopedGLState.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/ScopedGLState.h
diff --git a/host/gl/glestranslator/include/GLcommon/ShareGroup.h b/host/gl/glestranslator/GLcommon/include/GLcommon/ShareGroup.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/ShareGroup.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/ShareGroup.h
diff --git a/host/gl/glestranslator/include/GLcommon/TextureData.h b/host/gl/glestranslator/GLcommon/include/GLcommon/TextureData.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/TextureData.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/TextureData.h
diff --git a/host/gl/glestranslator/include/GLcommon/TextureUtils.h b/host/gl/glestranslator/GLcommon/include/GLcommon/TextureUtils.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/TextureUtils.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/TextureUtils.h
diff --git a/host/gl/glestranslator/include/GLcommon/TranslatorIfaces.h b/host/gl/glestranslator/GLcommon/include/GLcommon/TranslatorIfaces.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/TranslatorIfaces.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/TranslatorIfaces.h
diff --git a/host/gl/glestranslator/include/GLcommon/rgtc.h b/host/gl/glestranslator/GLcommon/include/GLcommon/rgtc.h
similarity index 100%
rename from host/gl/glestranslator/include/GLcommon/rgtc.h
rename to host/gl/glestranslator/GLcommon/include/GLcommon/rgtc.h
diff --git a/host/tracing/CMakeLists.txt b/host/tracing/CMakeLists.txt
index 62f4284..966814a 100644
--- a/host/tracing/CMakeLists.txt
+++ b/host/tracing/CMakeLists.txt
@@ -1,4 +1,4 @@
-if (NOT TARGET gfxstream-gl-host-common)
+if (NOT TARGET gfxstream_host_tracing)
add_library(
gfxstream_host_tracing.headers
INTERFACE)
@@ -14,4 +14,11 @@
gfxstream_host_tracing
PUBLIC
gfxstream_host_tracing.headers)
+
+ if(GFXSTREAM_ENABLE_HOST_TRACING)
+ target_link_libraries(
+ gfxstream_host_tracing
+ PUBLIC
+ perfetto)
+ endif()
endif()
diff --git a/host/tracing/include/gfxstream/host/Tracing.h b/host/tracing/include/gfxstream/host/Tracing.h
index d344a99..94cf8f3 100644
--- a/host/tracing/include/gfxstream/host/Tracing.h
+++ b/host/tracing/include/gfxstream/host/Tracing.h
@@ -26,7 +26,11 @@
#ifdef GFXSTREAM_BUILD_WITH_TRACING
+#ifdef GFXSTREAM_BUILD_WITH_PERFETTO_SDK
+#include <perfetto.h>
+#else
#include <perfetto/tracing.h>
+#endif
PERFETTO_DEFINE_CATEGORIES(perfetto::Category(GFXSTREAM_TRACE_DEFAULT_CATEGORY)
.SetDescription("Default events")
diff --git a/host/virtio-gpu-gfxstream-renderer.cpp b/host/virtio-gpu-gfxstream-renderer.cpp
index 5c0539d..ac938c2 100644
--- a/host/virtio-gpu-gfxstream-renderer.cpp
+++ b/host/virtio-gpu-gfxstream-renderer.cpp
@@ -729,7 +729,7 @@
feature_info->enabled = feature_status == "enabled";
feature_info->reason = "Overridden via STREAM_RENDERER_PARAM_RENDERER_FEATURES";
- stream_renderer_error("Gfxstream feature %s %s", feature_name.c_str(),
+ stream_renderer_info("Gfxstream feature %s %s", feature_name.c_str(),
feature_status.c_str());
}
diff --git a/host/vulkan/CMakeLists.txt b/host/vulkan/CMakeLists.txt
index aeb8d6c..487dda9 100644
--- a/host/vulkan/CMakeLists.txt
+++ b/host/vulkan/CMakeLists.txt
@@ -35,6 +35,8 @@
VulkanStream.cpp
vk_util.cpp)
set_source_files_properties(VkDecoder.cpp PROPERTIES COMPILE_FLAGS -Wno-unused-variable)
+set_source_files_properties(VkSubDecoder.cpp PROPERTIES COMPILE_FLAGS -Wno-unused-variable)
+set_source_files_properties(VkDecoderSnapshot.cpp PROPERTIES COMPILE_FLAGS -Wno-unused-variable)
target_link_libraries(gfxstream-vulkan-server PUBLIC
OpenglRender_vulkan_cereal
@@ -62,7 +64,17 @@
if (NOT MSVC)
target_compile_options(gfxstream-vulkan-server PRIVATE -fvisibility=hidden)
endif()
-target_compile_options(gfxstream-vulkan-server PRIVATE -Wno-unused-value -Wno-return-type -Wno-return-type-c-linkage)
+target_compile_options(gfxstream-vulkan-server
+ PRIVATE
+ -Wall
+ -Wextra
+ -Werror
+ -Wno-missing-field-initializers
+ -Wno-unused-parameter
+ -Wno-unused-private-field
+ -Wno-return-type-c-linkage
+ -Wno-extern-c-compat
+ )
target_include_directories(gfxstream-vulkan-server
PUBLIC
@@ -72,6 +84,7 @@
${GFXSTREAM_REPO_ROOT}
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/host
+ ${GFXSTREAM_REPO_ROOT}/host/tracing
${GFXSTREAM_REPO_ROOT}/host/vulkan
${GFXSTREAM_REPO_ROOT}/host/vulkan/cereal/common
${GFXSTREAM_REPO_ROOT}/host/apigen-codec-common
diff --git a/host/vulkan/CompositorVk.cpp b/host/vulkan/CompositorVk.cpp
index 27865f9..7617622 100644
--- a/host/vulkan/CompositorVk.cpp
+++ b/host/vulkan/CompositorVk.cpp
@@ -108,7 +108,8 @@
m_height(height) {
if (vkImageView == VK_NULL_HANDLE) {
GFXSTREAM_ABORT(FatalError(ABORT_REASON_OTHER))
- << "CompositorVk found empty image view handle when creating RenderTarget.";
+ << "CompositorVk found empty image view handle when creating RenderTarget. Image: "
+ << m_vkImage << " Dimensions: " << m_width << "x" << m_height;
}
const VkFramebufferCreateInfo framebufferCi = {
@@ -1319,6 +1320,7 @@
std::shared_future<PerFrameResources*> composeCompleteFutureForResources =
std::async(std::launch::deferred, [composeCompleteFence, frameResources, traceId,
this]() mutable {
+ (void)traceId;
GFXSTREAM_TRACE_EVENT(GFXSTREAM_TRACE_DEFAULT_CATEGORY, "Wait for compose fence",
GFXSTREAM_TRACE_FLOW(traceId));
diff --git a/host/vulkan/VkAndroidNativeBuffer.cpp b/host/vulkan/VkAndroidNativeBuffer.cpp
index d7436e4..54d53c4 100644
--- a/host/vulkan/VkAndroidNativeBuffer.cpp
+++ b/host/vulkan/VkAndroidNativeBuffer.cpp
@@ -32,7 +32,7 @@
namespace gfxstream {
namespace vk {
-#define VK_ANB_ERR(fmt, ...) INFO(fmt, ##__VA_ARGS__);
+#define VK_ANB_ERR(fmt, ...) ERR(fmt, ##__VA_ARGS__);
#define ENABLE_VK_ANB_DEBUG 0
@@ -201,6 +201,10 @@
importedColorBufferInfo.height);
return nullptr;
}
+
+ // Update create flags to match the color buffer imported
+ createImageCi.flags = importedColorBufferInfo.imageCreateInfoShallow.flags;
+
const auto& importedColorBufferMemoryInfo = importedColorBufferInfo.memory;
// VkBindImageMemorySwapchainInfoKHR may be included from the guest but
@@ -235,6 +239,18 @@
vk->vkGetImageMemoryRequirements(out->mDevice, out->mImage, &out->mImageMemoryRequirements);
+ if (out->mImageMemoryRequirements.size > importedColorBufferMemoryInfo.size) {
+ VK_ANB_ERR(
+ "Failed to prepare ANB image: attempted to import memory that is not large enough "
+ "for the VkImage: image memory requirements size:%llu vs actual memory size:%llu, "
+ "CB: %u, %s, %ux%u",
+ out->mImageMemoryRequirements.size, importedColorBufferMemoryInfo.size,
+ importedColorBufferHandle, string_VkFormat(createImageCi.format),
+ createImageCi.extent.width, createImageCi.extent.height);
+
+ return nullptr;
+ }
+
if (out->mImageMemoryRequirements.size < importedColorBufferMemoryInfo.size) {
out->mImageMemoryRequirements.size = importedColorBufferMemoryInfo.size;
}
@@ -551,6 +567,7 @@
mEverAcquired = true;
if (firstTimeSetup) {
+ mLastUsedQueueFamilyIndex = defaultQueueFamilyIndex;
VkSubmitInfo submitInfo = {
VK_STRUCTURE_TYPE_SUBMIT_INFO,
0,
@@ -567,6 +584,11 @@
return VK_SUCCESS;
}
+ if (mLastUsedQueueFamilyIndex == INVALID_QUEUE_FAMILY_INDEX) {
+ ERR("AndroidNativeBufferInfo missing last used queue.");
+ return VK_ERROR_INITIALIZATION_FAILED;
+ }
+
// Setup queue state for this queue family index.
auto queueFamilyIndex = mLastUsedQueueFamilyIndex;
if (queueFamilyIndex >= mQueueStates.size()) {
@@ -818,6 +840,7 @@
std::lock_guard<std::mutex> qLock(*queueMutex);
VK_CHECK(vk->vkQueueSubmit(queueState.queue, 1, &submitInfo, qsriFence));
auto waitForQsriFenceTask = [this, vk, device = mDevice, qsriFence, traceId] {
+ (void)traceId;
GFXSTREAM_TRACE_EVENT(GFXSTREAM_TRACE_DEFAULT_CATEGORY, "Wait for QSRI fence",
GFXSTREAM_TRACE_FLOW(traceId));
diff --git a/host/vulkan/VkAndroidNativeBuffer.h b/host/vulkan/VkAndroidNativeBuffer.h
index 907ac4c..b6340be 100644
--- a/host/vulkan/VkAndroidNativeBuffer.h
+++ b/host/vulkan/VkAndroidNativeBuffer.h
@@ -140,7 +140,8 @@
// mode (reflected in this struct's |sharingMode| field),
// this part doesn't really matter.
bool mEverSynced = false;
- uint32_t mLastUsedQueueFamilyIndex = -1;
+ static constexpr uint32_t INVALID_QUEUE_FAMILY_INDEX = std::numeric_limits<uint32_t>::max();
+ uint32_t mLastUsedQueueFamilyIndex = INVALID_QUEUE_FAMILY_INDEX;
// On first acquire, we might use a different queue family
// to initially set the semaphore/fence to be signaled.
diff --git a/host/vulkan/VkCommonOperations.cpp b/host/vulkan/VkCommonOperations.cpp
index 11d3f73..5b304fc 100644
--- a/host/vulkan/VkCommonOperations.cpp
+++ b/host/vulkan/VkCommonOperations.cpp
@@ -74,8 +74,6 @@
constexpr size_t kPageBits = 12;
constexpr size_t kPageSize = 1u << kPageBits;
-static int kMaxDebugMarkerAnnotations = 10;
-
static std::optional<std::string> sMemoryLogPath = std::nullopt;
const char* string_AstcEmulationMode(AstcEmulationMode mode) {
@@ -573,6 +571,11 @@
{VK_FORMAT_B8G8R8A8_UNORM,
VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT | VK_IMAGE_CREATE_EXTENDED_USAGE_BIT},
+ {VK_FORMAT_B4G4R4A4_UNORM_PACK16,
+ VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT | VK_IMAGE_CREATE_EXTENDED_USAGE_BIT},
+ {VK_FORMAT_R4G4B4A4_UNORM_PACK16,
+ VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT | VK_IMAGE_CREATE_EXTENDED_USAGE_BIT},
+
{VK_FORMAT_R8_UNORM,
VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT | VK_IMAGE_CREATE_EXTENDED_USAGE_BIT},
{VK_FORMAT_R16_UNORM,
@@ -745,7 +748,7 @@
// Prefer discrete GPUs, then integrated and then others..
const int deviceType = deviceInfo.physdevProps.deviceType;
- deviceScore += deviceTypeScoreTable[deviceInfo.physdevProps.deviceType];
+ deviceScore += deviceTypeScoreTable[deviceType];
// Prefer higher level of Vulkan API support, restrict version numbers to
// common limits to ensure an always increasing scoring change
@@ -1222,6 +1225,15 @@
vk_append_struct(&features2Chain, &privateDataFeatures);
}
+ VkPhysicalDeviceRobustness2FeaturesEXT robustness2Features = {
+ .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT};
+ const bool robustnessRequested = emulation->mFeatures.VulkanRobustness.enabled;
+ const bool robustnessSupported =
+ extensionsSupported(deviceExts, {VK_EXT_ROBUSTNESS_2_EXTENSION_NAME});
+ if (robustnessRequested && robustnessSupported) {
+ vk_append_struct(&features2Chain, &robustness2Features);
+ }
+
emulation->mGetPhysicalDeviceFeatures2Func(physicalDevices[i], &features2);
deviceInfos[i].supportsSamplerYcbcrConversion =
@@ -1232,6 +1244,15 @@
deviceInfos[i].supportsPrivateData = (privateDataFeatures.privateData == VK_TRUE);
+ // Enable robustness only when requested
+ if (robustnessRequested && robustnessSupported) {
+ deviceInfos[i].robustness2Features = vk_make_orphan_copy(robustness2Features);
+ } else if (robustnessRequested) {
+ WARN(
+ "VulkanRobustness was requested but the "
+ "VK_EXT_robustness2 extension is not supported.");
+ }
+
#if defined(__QNX__)
deviceInfos[i].supportsExternalMemoryImport =
extMemScreenBufferFeatures.screenBufferImport == VK_TRUE;
@@ -1360,6 +1381,10 @@
}
#endif
+ if (emulation->mDeviceInfo.robustness2Features) {
+ selectedDeviceExtensionNames_.emplace(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME);
+ }
+
std::vector<const char*> selectedDeviceExtensionNames(selectedDeviceExtensionNames_.begin(),
selectedDeviceExtensionNames_.end());
@@ -1424,6 +1449,14 @@
"VK_NV_device_diagnostic_checkpoints extension is not supported.");
}
+ VkPhysicalDeviceRobustness2FeaturesEXT r2features = {};
+ if (emulation->mDeviceInfo.robustness2Features) {
+ r2features = *emulation->mDeviceInfo.robustness2Features;
+ INFO("Enabling VK_EXT_robustness2 (%d %d %d).", r2features.robustBufferAccess2,
+ r2features.robustImageAccess2, r2features.nullDescriptor);
+ vk_append_struct(&deviceCiChain, &r2features);
+ }
+
ivk->vkCreateDevice(emulation->mPhysicalDevice, &dCi, nullptr, &emulation->mDevice);
if (res != VK_SUCCESS) {
@@ -1650,7 +1683,7 @@
INFO(" useVulkanComposition: %s", features.useVulkanComposition ? "true" : "false");
INFO(" useVulkanNativeSwapchain: %s", features.useVulkanNativeSwapchain ? "true" : "false");
INFO(" enable guestRenderDoc: %s", features.guestRenderDoc ? "true" : "false");
- INFO(" ASTC LDR emulation mode: %d", features.astcLdrEmulationMode);
+ INFO(" ASTC LDR emulation mode: %s", string_AstcEmulationMode(features.astcLdrEmulationMode));
INFO(" enable ETC2 emulation: %s", features.enableEtc2Emulation ? "true" : "false");
INFO(" enable Ycbcr emulation: %s", features.enableYcbcrEmulation ? "true" : "false");
INFO(" guestVulkanOnly: %s", features.guestVulkanOnly ? "true" : "false");
@@ -1759,6 +1792,10 @@
return mDeviceInfo.supportsExternalMemoryHostProps;
}
+std::optional<VkPhysicalDeviceRobustness2FeaturesEXT> VkEmulation::getRobustness2Features() const {
+ return mDeviceInfo.robustness2Features;
+}
+
VkPhysicalDeviceExternalMemoryHostPropertiesEXT VkEmulation::externalMemoryHostProperties() const {
return mDeviceInfo.externalMemoryHostProps;
}
@@ -1959,8 +1996,8 @@
VkResult allocRes = vk->vkAllocateMemory(mDevice, &allocInfo, nullptr, &info->memory);
if (allocRes != VK_SUCCESS) {
- VERBOSE("allocExternalMemory: failed in vkAllocateMemory: %s",
- string_VkResult(allocRes));
+ VERBOSE("%s: failed in vkAllocateMemory: %s",
+ __func__, string_VkResult(allocRes));
break;
}
@@ -1969,7 +2006,7 @@
VkResult mapRes =
vk->vkMapMemory(mDevice, info->memory, 0, info->size, 0, &info->mappedPtr);
if (mapRes != VK_SUCCESS) {
- VERBOSE("allocExternalMemory: failed in vkMapMemory: %s", string_VkResult(mapRes));
+ VERBOSE("%s: failed in vkMapMemory: %s", __func__, string_VkResult(mapRes));
break;
}
}
@@ -1994,14 +2031,14 @@
} else {
allocationAttempts.push_back(info->memory);
- VERBOSE("allocExternalMemory: attempt #%zu failed; deviceAlignment: %" PRIu64
+ VERBOSE("%s: attempt #%zu failed; deviceAlignment: %" PRIu64
", mappedPtrPageOffset: %" PRIu64,
- allocationAttempts.size(), deviceAlignment.valueOr(0), mappedPtrPageOffset);
+ __func__, allocationAttempts.size(), deviceAlignment.valueOr(0), mappedPtrPageOffset);
if (allocationAttempts.size() >= kMaxAllocationAttempts) {
VERBOSE(
- "allocExternalMemory: unable to allocate memory with CPU mapped ptr aligned to "
- "page");
+ "%s: unable to allocate memory with CPU mapped ptr aligned to "
+ "page", __func__);
break;
}
}
@@ -2080,8 +2117,8 @@
#endif
if (exportRes != VK_SUCCESS || !validHandle) {
- WARN("allocExternalMemory: Failed to get external memory, result: %s",
- string_VkResult(exportRes));
+ WARN("%s: Failed to get external memory, result: %s",
+ __func__, string_VkResult(exportRes));
return false;
}
@@ -2230,7 +2267,7 @@
// b/281550953
// RGB8 is not supported on many vulkan drivers.
// Try RGBA8 instead.
- // Note: copyImageData() performs channel conversion for this case.
+ // Note: updateColorBufferFromBytesLocked() performs channel conversion for this case.
return VK_FORMAT_R8G8B8A8_UNORM;
case GL_RGB565:
return VK_FORMAT_R5G6B5_UNORM_PACK16;
@@ -2241,8 +2278,19 @@
return VK_FORMAT_R8G8B8A8_UNORM;
case GL_RGB5_A1_OES:
return VK_FORMAT_A1R5G5B5_UNORM_PACK16;
- case GL_RGBA4_OES:
+ case GL_RGBA4_OES: {
+ // TODO: add R4G4B4A4 support to lavapipe, and check support programmatically
+ const bool lavapipe =
+ (android::base::getEnvironmentVariable("ANDROID_EMU_VK_ICD").compare("lavapipe") ==
+ 0);
+ if (lavapipe) {
+ // RGBA4 is not supported on lavapipe, use more widely available BGRA4 instead.
+ // Note: updateColorBufferFromBytesLocked() performs channel conversion for this
+ // case.
+ return VK_FORMAT_B4G4R4A4_UNORM_PACK16;
+ }
return VK_FORMAT_R4G4B4A4_UNORM_PACK16;
+ }
case GL_RGB10_A2:
case GL_UNSIGNED_INT_10_10_10_2_OES:
return VK_FORMAT_A2R10G10B10_UNORM_PACK32;
@@ -2537,7 +2585,6 @@
auto infoPtr = &mColorBuffers[colorBufferHandle];
VkFormat vkFormat;
- bool glCompatible = (infoPtr->frameworkFormat == FRAMEWORK_FORMAT_GL_COMPATIBLE);
switch (infoPtr->frameworkFormat) {
case FrameworkFormat::FRAMEWORK_FORMAT_GL_COMPATIBLE:
vkFormat = glFormat2VkFormat(infoPtr->internalFormat);
@@ -2656,15 +2703,16 @@
const VkFormat imageVkFormat = infoPtr->imageCreateInfoShallow.format;
VERBOSE(
- "ColorBuffer %d, dimensions: %dx%d, format: %s, "
- "allocation size and type index: %lu, %d, "
- "allocated memory property: %d, "
- "requested memory property: %d",
+ "ColorBuffer %u, %ux%u, %s, "
+ "Memory [size: %llu, type: %d, props: %u / %u]",
colorBufferHandle, infoPtr->width, infoPtr->height, string_VkFormat(imageVkFormat),
infoPtr->memory.size, infoPtr->memory.typeIndex,
mDeviceInfo.memProps.memoryTypes[infoPtr->memory.typeIndex].propertyFlags,
infoPtr->memoryProperty);
+ const bool isHostVisible = (infoPtr->memoryProperty & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT);
+ Optional<uint64_t> deviceAlignment =
+ (!extMemHandleInfo && isHostVisible) ? Optional<uint64_t>(memReqs.alignment) : kNullopt;
Optional<VkImage> dedicatedImage = useDedicated ? Optional<VkImage>(infoPtr->image) : kNullopt;
if (extMemHandleInfo) {
VkMemoryDedicatedAllocateInfo dedicatedInfo = {
@@ -2687,9 +2735,6 @@
infoPtr->externalMemoryCompatible = true;
} else {
- bool isHostVisible = infoPtr->memoryProperty & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
- Optional<uint64_t> deviceAlignment =
- isHostVisible ? Optional<uint64_t>(memReqs.alignment) : kNullopt;
bool allocRes = allocExternalMemory(vk, &infoPtr->memory, true /*actuallyExternal*/,
deviceAlignment, kNullopt, dedicatedImage);
if (!allocRes) {
@@ -2701,8 +2746,13 @@
}
infoPtr->memory.pageOffset = reinterpret_cast<uint64_t>(infoPtr->memory.mappedPtr) % kPageSize;
- infoPtr->memory.bindOffset =
- infoPtr->memory.pageOffset ? kPageSize - infoPtr->memory.pageOffset : 0u;
+ if (deviceAlignment.hasValue()) {
+ infoPtr->memory.bindOffset =
+ infoPtr->memory.pageOffset ? kPageSize - infoPtr->memory.pageOffset : 0u;
+ } else {
+ // Allocated as aligned..
+ infoPtr->memory.bindOffset = 0;
+ }
VkResult bindImageMemoryRes = vk->vkBindImageMemory(
mDevice, infoPtr->image, infoPtr->memory.memory, infoPtr->memory.bindOffset);
@@ -3185,6 +3235,20 @@
}
}
+static void convertRgba4ToBGRA4Pixels(void* dst, const void* src, uint32_t w, uint32_t h) {
+ const size_t pixelCount = w * h;
+ const uint16_t* srcPixels = reinterpret_cast<const uint16_t*>(src);
+ uint16_t* dstPixels = reinterpret_cast<uint16_t*>(dst);
+ for (size_t i = 0; i < pixelCount; ++i) {
+ const uint16_t rgba4_pixel = srcPixels[i];
+ const uint8_t red = (rgba4_pixel >> 12) & 0xF;
+ const uint8_t green = (rgba4_pixel >> 8) & 0xF;
+ const uint8_t blue = (rgba4_pixel >> 4) & 0xF;
+ const uint8_t alpha = rgba4_pixel & 0xF;
+ dstPixels[i] = (blue << 12) | (green << 8) | (red << 4) | alpha;
+ }
+}
+
bool VkEmulation::updateColorBufferFromBytesLocked(uint32_t colorBufferHandle, uint32_t x,
uint32_t y, uint32_t w, uint32_t h,
const void* pixels, size_t inputPixelsSize) {
@@ -3207,9 +3271,10 @@
return false;
}
+ const VkFormat creationFormat = colorBufferInfo->imageCreateInfoShallow.format;
VkDeviceSize dstBufferSize = 0;
std::vector<VkBufferImageCopy> bufferImageCopies;
- if (!getFormatTransferInfo(colorBufferInfo->imageCreateInfoShallow.format,
+ if (!getFormatTransferInfo(creationFormat,
colorBufferInfo->imageCreateInfoShallow.extent.width,
colorBufferInfo->imageCreateInfoShallow.extent.height,
&dstBufferSize, &bufferImageCopies)) {
@@ -3224,10 +3289,11 @@
colorBufferHandle, dstBufferSize, stagingBufferSize);
return false;
}
-
- bool isThreeByteRgb =
+ const bool isRGBA4onBGRA4 = (colorBufferInfo->internalFormat == GL_RGBA4_OES) &&
+ (creationFormat == VK_FORMAT_B4G4R4A4_UNORM_PACK16);
+ const bool isThreeByteRgb =
(colorBufferInfo->internalFormat == GL_RGB || colorBufferInfo->internalFormat == GL_RGB8);
- size_t expectedInputSize = (isThreeByteRgb ? dstBufferSize / 4 * 3 : dstBufferSize);
+ const size_t expectedInputSize = (isThreeByteRgb ? dstBufferSize / 4 * 3 : dstBufferSize);
if (inputPixelsSize != 0 && inputPixelsSize != expectedInputSize) {
ERR("Unexpected contents size when trying to update ColorBuffer:%d, "
@@ -3243,6 +3309,8 @@
// an incompatible choice of 4-byte backing VK_FORMAT_R8G8B8A8_UNORM.
// b/281550953
convertRgbToRgbaPixels(stagingBufferPtr, pixels, w, h);
+ } else if(isRGBA4onBGRA4) {
+ convertRgba4ToBGRA4Pixels(stagingBufferPtr, pixels, w, h);
} else {
std::memcpy(stagingBufferPtr, pixels, dstBufferSize);
}
diff --git a/host/vulkan/VkCommonOperations.h b/host/vulkan/VkCommonOperations.h
index bb50ca3..9e14b4d 100644
--- a/host/vulkan/VkCommonOperations.h
+++ b/host/vulkan/VkCommonOperations.h
@@ -126,6 +126,8 @@
bool supportsExternalMemoryHostProperties() const;
+ std::optional<VkPhysicalDeviceRobustness2FeaturesEXT> getRobustness2Features() const;
+
VkPhysicalDeviceExternalMemoryHostPropertiesEXT externalMemoryHostProperties() const;
bool isGuestVulkanOnly() const;
@@ -472,6 +474,9 @@
#else
PFN_vkGetMemoryFdKHR getMemoryHandleFunc = nullptr;
#endif
+
+ // Set only if requested and supported
+ std::optional<VkPhysicalDeviceRobustness2FeaturesEXT> robustness2Features;
};
uint32_t getValidMemoryTypeIndex(uint32_t requiredMemoryTypeBits,
diff --git a/host/vulkan/VkDecoder.cpp b/host/vulkan/VkDecoder.cpp
index 5a72ca0..acf441f 100644
--- a/host/vulkan/VkDecoder.cpp
+++ b/host/vulkan/VkDecoder.cpp
@@ -56,6 +56,8 @@
#include "host-common/logging.h"
#include "render-utils/IOStream.h"
#define MAX_PACKET_LENGTH (400 * 1024 * 1024) // 400MB
+#define CC_LIKELY(exp) (__builtin_expect(!!(exp), true))
+#define CC_UNLIKELY(exp) (__builtin_expect(!!(exp), false))
namespace gfxstream {
namespace vk {
@@ -262,7 +264,7 @@
ioStream, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pInstance);
}
- VkResult vkCreateInstance_VkResult_return = (VkResult)0;
+ VkResult vkCreateInstance_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
vkCreateInstance_VkResult_return = m_state->on_vkCreateInstance(
&m_pool, snapshotApiCallInfo, pCreateInfo, pAllocator, pInstance);
if ((vkCreateInstance_VkResult_return) == VK_ERROR_DEVICE_LOST)
@@ -296,6 +298,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkInstance*)&instance = (VkInstance)(VkInstance)((VkInstance)(*&cgen_var_0));
+ auto vk = dispatch_VkInstance(instance);
// WARNING PTR CHECK
memcpy((VkAllocationCallbacks**)&pAllocator, (*readStreamPtrPtr), 8);
android::base::Stream::fromBe64((uint8_t*)&pAllocator);
@@ -314,7 +317,10 @@
fprintf(stderr, "stream %p: call vkDestroyInstance 0x%llx 0x%llx \n", ioStream,
(unsigned long long)instance, (unsigned long long)pAllocator);
}
- m_state->on_vkDestroyInstance(&m_pool, snapshotApiCallInfo, instance, pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyInstance(&m_pool, snapshotApiCallInfo, instance,
+ pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyInstance(&m_pool, snapshotApiCallInfo, packet,
@@ -336,6 +342,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkInstance*)&instance = (VkInstance)(VkInstance)((VkInstance)(*&cgen_var_0));
+ auto vk = dispatch_VkInstance(instance);
// Begin manual dispatchable handle unboxing for pPhysicalDeviceCount;
vkReadStream->unsetHandleMapping();
// WARNING PTR CHECK
@@ -378,9 +385,13 @@
(unsigned long long)pPhysicalDeviceCount,
(unsigned long long)pPhysicalDevices);
}
- VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
- vkEnumeratePhysicalDevices_VkResult_return = m_state->on_vkEnumeratePhysicalDevices(
- &m_pool, snapshotApiCallInfo, instance, pPhysicalDeviceCount, pPhysicalDevices);
+ VkResult vkEnumeratePhysicalDevices_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkEnumeratePhysicalDevices_VkResult_return =
+ m_state->on_vkEnumeratePhysicalDevices(&m_pool, snapshotApiCallInfo,
+ instance, pPhysicalDeviceCount,
+ pPhysicalDevices);
+ }
if ((vkEnumeratePhysicalDevices_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkEnumeratePhysicalDevices_VkResult_return, opcode,
@@ -432,6 +443,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
// Begin manual dispatchable handle unboxing for pFeatures;
vkReadStream->unsetHandleMapping();
vkReadStream->alloc((void**)&pFeatures, sizeof(VkPhysicalDeviceFeatures));
@@ -447,8 +459,10 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)pFeatures);
}
- m_state->on_vkGetPhysicalDeviceFeatures(&m_pool, snapshotApiCallInfo,
- physicalDevice, pFeatures);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceFeatures(&m_pool, snapshotApiCallInfo,
+ physicalDevice, pFeatures);
+ }
vkStream->unsetHandleMapping();
if (pFeatures) {
transform_fromhost_VkPhysicalDeviceFeatures(
@@ -478,6 +492,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
memcpy((VkFormat*)&format, *readStreamPtrPtr, sizeof(VkFormat));
*readStreamPtrPtr += sizeof(VkFormat);
// Begin manual dispatchable handle unboxing for pFormatProperties;
@@ -497,8 +512,10 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)format, (unsigned long long)pFormatProperties);
}
- m_state->on_vkGetPhysicalDeviceFormatProperties(
- &m_pool, snapshotApiCallInfo, physicalDevice, format, pFormatProperties);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceFormatProperties(
+ &m_pool, snapshotApiCallInfo, physicalDevice, format, pFormatProperties);
+ }
vkStream->unsetHandleMapping();
if (pFormatProperties) {
transform_fromhost_VkFormatProperties(m_state,
@@ -533,6 +550,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
memcpy((VkFormat*)&format, *readStreamPtrPtr, sizeof(VkFormat));
*readStreamPtrPtr += sizeof(VkFormat);
memcpy((VkImageType*)&type, *readStreamPtrPtr, sizeof(VkImageType));
@@ -563,11 +581,14 @@
(unsigned long long)tiling, (unsigned long long)usage,
(unsigned long long)flags, (unsigned long long)pImageFormatProperties);
}
- VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
- vkGetPhysicalDeviceImageFormatProperties_VkResult_return =
- m_state->on_vkGetPhysicalDeviceImageFormatProperties(
- &m_pool, snapshotApiCallInfo, physicalDevice, format, type, tiling, usage,
- flags, pImageFormatProperties);
+ VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetPhysicalDeviceImageFormatProperties_VkResult_return =
+ m_state->on_vkGetPhysicalDeviceImageFormatProperties(
+ &m_pool, snapshotApiCallInfo, physicalDevice, format, type, tiling,
+ usage, flags, pImageFormatProperties);
+ }
if ((vkGetPhysicalDeviceImageFormatProperties_VkResult_return) ==
VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
@@ -605,6 +626,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
// Begin manual dispatchable handle unboxing for pProperties;
vkReadStream->unsetHandleMapping();
vkReadStream->alloc((void**)&pProperties, sizeof(VkPhysicalDeviceProperties));
@@ -621,8 +643,10 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)pProperties);
}
- m_state->on_vkGetPhysicalDeviceProperties(&m_pool, snapshotApiCallInfo,
- physicalDevice, pProperties);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceProperties(&m_pool, snapshotApiCallInfo,
+ physicalDevice, pProperties);
+ }
vkStream->unsetHandleMapping();
if (pProperties) {
transform_fromhost_VkPhysicalDeviceProperties(
@@ -653,6 +677,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
// Begin manual dispatchable handle unboxing for pQueueFamilyPropertyCount;
vkReadStream->unsetHandleMapping();
// WARNING PTR CHECK
@@ -698,9 +723,11 @@
(unsigned long long)pQueueFamilyPropertyCount,
(unsigned long long)pQueueFamilyProperties);
}
- m_state->on_vkGetPhysicalDeviceQueueFamilyProperties(
- &m_pool, snapshotApiCallInfo, physicalDevice, pQueueFamilyPropertyCount,
- pQueueFamilyProperties);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceQueueFamilyProperties(
+ &m_pool, snapshotApiCallInfo, physicalDevice, pQueueFamilyPropertyCount,
+ pQueueFamilyProperties);
+ }
vkStream->unsetHandleMapping();
// WARNING PTR CHECK
uint64_t cgen_var_3 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
@@ -750,6 +777,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
// Begin manual dispatchable handle unboxing for pMemoryProperties;
vkReadStream->unsetHandleMapping();
vkReadStream->alloc((void**)&pMemoryProperties,
@@ -767,8 +795,10 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)pMemoryProperties);
}
- m_state->on_vkGetPhysicalDeviceMemoryProperties(&m_pool, snapshotApiCallInfo,
- physicalDevice, pMemoryProperties);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceMemoryProperties(
+ &m_pool, snapshotApiCallInfo, physicalDevice, pMemoryProperties);
+ }
vkStream->unsetHandleMapping();
if (pMemoryProperties) {
transform_fromhost_VkPhysicalDeviceMemoryProperties(
@@ -808,8 +838,10 @@
}
PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return =
(PFN_vkVoidFunction)0;
- vkGetInstanceProcAddr_PFN_vkVoidFunction_return =
- vk->vkGetInstanceProcAddr(unboxed_instance, pName);
+ if (CC_LIKELY(vk)) {
+ vkGetInstanceProcAddr_PFN_vkVoidFunction_return =
+ vk->vkGetInstanceProcAddr(unboxed_instance, pName);
+ }
vkStream->unsetHandleMapping();
vkStream->write(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return,
sizeof(PFN_vkVoidFunction));
@@ -844,8 +876,10 @@
}
PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return =
(PFN_vkVoidFunction)0;
- vkGetDeviceProcAddr_PFN_vkVoidFunction_return =
- vk->vkGetDeviceProcAddr(unboxed_device, pName);
+ if (CC_LIKELY(vk)) {
+ vkGetDeviceProcAddr_PFN_vkVoidFunction_return =
+ vk->vkGetDeviceProcAddr(unboxed_device, pName);
+ }
vkStream->unsetHandleMapping();
vkStream->write(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return,
sizeof(PFN_vkVoidFunction));
@@ -872,6 +906,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkDeviceCreateInfo));
reservedunmarshal_VkDeviceCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkDeviceCreateInfo*)(pCreateInfo),
@@ -907,9 +942,12 @@
(unsigned long long)pCreateInfo, (unsigned long long)pAllocator,
(unsigned long long)pDevice);
}
- VkResult vkCreateDevice_VkResult_return = (VkResult)0;
- vkCreateDevice_VkResult_return = m_state->on_vkCreateDevice(
- &m_pool, snapshotApiCallInfo, physicalDevice, pCreateInfo, pAllocator, pDevice);
+ VkResult vkCreateDevice_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateDevice_VkResult_return =
+ m_state->on_vkCreateDevice(&m_pool, snapshotApiCallInfo, physicalDevice,
+ pCreateInfo, pAllocator, pDevice);
+ }
if ((vkCreateDevice_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateDevice_VkResult_return, opcode, context);
@@ -942,6 +980,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// WARNING PTR CHECK
memcpy((VkAllocationCallbacks**)&pAllocator, (*readStreamPtrPtr), 8);
android::base::Stream::fromBe64((uint8_t*)&pAllocator);
@@ -960,7 +999,9 @@
fprintf(stderr, "stream %p: call vkDestroyDevice 0x%llx 0x%llx \n", ioStream,
(unsigned long long)device, (unsigned long long)pAllocator);
}
- m_state->on_vkDestroyDevice(&m_pool, snapshotApiCallInfo, device, pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyDevice(&m_pool, snapshotApiCallInfo, device, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyDevice(&m_pool, snapshotApiCallInfo, packet,
@@ -1032,10 +1073,11 @@
ioStream, (unsigned long long)pLayerName,
(unsigned long long)pPropertyCount, (unsigned long long)pProperties);
}
- VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
+ VkResult vkEnumerateInstanceExtensionProperties_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
vkEnumerateInstanceExtensionProperties_VkResult_return =
- m_vk->vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount,
- pProperties);
+ m_state->on_vkEnumerateInstanceExtensionProperties(
+ &m_pool, snapshotApiCallInfo, pLayerName, pPropertyCount, pProperties);
if ((vkEnumerateInstanceExtensionProperties_VkResult_return) ==
VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
@@ -1095,6 +1137,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
if (vkReadStream->getFeatureBits() &
VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) {
// WARNING PTR CHECK
@@ -1151,11 +1194,14 @@
(unsigned long long)pLayerName, (unsigned long long)pPropertyCount,
(unsigned long long)pProperties);
}
- VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
- vkEnumerateDeviceExtensionProperties_VkResult_return =
- m_state->on_vkEnumerateDeviceExtensionProperties(&m_pool, snapshotApiCallInfo,
- physicalDevice, pLayerName,
- pPropertyCount, pProperties);
+ VkResult vkEnumerateDeviceExtensionProperties_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkEnumerateDeviceExtensionProperties_VkResult_return =
+ m_state->on_vkEnumerateDeviceExtensionProperties(
+ &m_pool, snapshotApiCallInfo, physicalDevice, pLayerName,
+ pPropertyCount, pProperties);
+ }
if ((vkEnumerateDeviceExtensionProperties_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkEnumerateDeviceExtensionProperties_VkResult_return,
@@ -1246,7 +1292,8 @@
ioStream, (unsigned long long)pPropertyCount,
(unsigned long long)pProperties);
}
- VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
+ VkResult vkEnumerateInstanceLayerProperties_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
vkEnumerateInstanceLayerProperties_VkResult_return =
m_vk->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties);
if ((vkEnumerateInstanceLayerProperties_VkResult_return) == VK_ERROR_DEVICE_LOST)
@@ -1349,10 +1396,13 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)pPropertyCount, (unsigned long long)pProperties);
}
- VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
- vkEnumerateDeviceLayerProperties_VkResult_return =
- vk->vkEnumerateDeviceLayerProperties(unboxed_physicalDevice, pPropertyCount,
- pProperties);
+ VkResult vkEnumerateDeviceLayerProperties_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkEnumerateDeviceLayerProperties_VkResult_return =
+ vk->vkEnumerateDeviceLayerProperties(unboxed_physicalDevice, pPropertyCount,
+ pProperties);
+ }
if ((vkEnumerateDeviceLayerProperties_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkEnumerateDeviceLayerProperties_VkResult_return,
@@ -1409,6 +1459,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
memcpy((uint32_t*)&queueFamilyIndex, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&queueIndex, *readStreamPtrPtr, sizeof(uint32_t));
@@ -1426,8 +1477,10 @@
ioStream, (unsigned long long)device, (unsigned long long)queueFamilyIndex,
(unsigned long long)queueIndex, (unsigned long long)pQueue);
}
- m_state->on_vkGetDeviceQueue(&m_pool, snapshotApiCallInfo, device, queueFamilyIndex,
- queueIndex, pQueue);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetDeviceQueue(&m_pool, snapshotApiCallInfo, device,
+ queueFamilyIndex, queueIndex, pQueue);
+ }
vkStream->unsetHandleMapping();
uint64_t cgen_var_2;
static_assert(8 == sizeof(VkQueue),
@@ -1456,6 +1509,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
memcpy((uint32_t*)&submitCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pSubmits,
@@ -1478,9 +1532,11 @@
ioStream, (unsigned long long)queue, (unsigned long long)submitCount,
(unsigned long long)pSubmits, (unsigned long long)fence);
}
- VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
- vkQueueSubmit_VkResult_return = m_state->on_vkQueueSubmit(
- &m_pool, snapshotApiCallInfo, queue, submitCount, pSubmits, fence);
+ VkResult vkQueueSubmit_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkQueueSubmit_VkResult_return = m_state->on_vkQueueSubmit(
+ &m_pool, snapshotApiCallInfo, queue, submitCount, pSubmits, fence);
+ }
if ((vkQueueSubmit_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkQueueSubmit_VkResult_return, opcode, context);
@@ -1506,15 +1562,18 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
if (m_logCalls) {
fprintf(stderr, "stream %p: call vkQueueWaitIdle 0x%llx \n", ioStream,
(unsigned long long)queue);
}
if (m_queueSubmitWithCommandsEnabled)
seqnoPtr->fetch_add(1, std::memory_order_seq_cst);
- VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
- vkQueueWaitIdle_VkResult_return =
- m_state->on_vkQueueWaitIdle(&m_pool, snapshotApiCallInfo, queue);
+ VkResult vkQueueWaitIdle_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkQueueWaitIdle_VkResult_return =
+ m_state->on_vkQueueWaitIdle(&m_pool, snapshotApiCallInfo, queue);
+ }
if ((vkQueueWaitIdle_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkQueueWaitIdle_VkResult_return, opcode, context);
@@ -1547,8 +1606,10 @@
}
if (m_queueSubmitWithCommandsEnabled)
seqnoPtr->fetch_add(1, std::memory_order_seq_cst);
- VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
- vkDeviceWaitIdle_VkResult_return = vk->vkDeviceWaitIdle(unboxed_device);
+ VkResult vkDeviceWaitIdle_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkDeviceWaitIdle_VkResult_return = vk->vkDeviceWaitIdle(unboxed_device);
+ }
if ((vkDeviceWaitIdle_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkDeviceWaitIdle_VkResult_return, opcode, context);
@@ -1575,6 +1636,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pAllocateInfo, sizeof(const VkMemoryAllocateInfo));
reservedunmarshal_VkMemoryAllocateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkMemoryAllocateInfo*)(pAllocateInfo),
@@ -1611,9 +1673,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pAllocateInfo,
(unsigned long long)pAllocator, (unsigned long long)pMemory);
}
- VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
- vkAllocateMemory_VkResult_return = m_state->on_vkAllocateMemory(
- &m_pool, snapshotApiCallInfo, device, pAllocateInfo, pAllocator, pMemory);
+ VkResult vkAllocateMemory_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkAllocateMemory_VkResult_return = m_state->on_vkAllocateMemory(
+ &m_pool, snapshotApiCallInfo, device, pAllocateInfo, pAllocator, pMemory);
+ }
if ((vkAllocateMemory_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(
@@ -1652,6 +1716,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for memory;
VkDeviceMemory boxed_memory_preserve;
uint64_t cgen_var_1;
@@ -1680,7 +1745,10 @@
ioStream, (unsigned long long)device, (unsigned long long)memory,
(unsigned long long)pAllocator);
}
- m_state->on_vkFreeMemory(&m_pool, snapshotApiCallInfo, device, memory, pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkFreeMemory(&m_pool, snapshotApiCallInfo, device, memory,
+ pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkFreeMemory(&m_pool, snapshotApiCallInfo, packet,
@@ -1706,6 +1774,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -1736,9 +1805,11 @@
(unsigned long long)offset, (unsigned long long)size,
(unsigned long long)flags, (unsigned long long)ppData);
}
- VkResult vkMapMemory_VkResult_return = (VkResult)0;
- vkMapMemory_VkResult_return = m_state->on_vkMapMemory(
- &m_pool, snapshotApiCallInfo, device, memory, offset, size, flags, ppData);
+ VkResult vkMapMemory_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkMapMemory_VkResult_return = m_state->on_vkMapMemory(
+ &m_pool, snapshotApiCallInfo, device, memory, offset, size, flags, ppData);
+ }
if ((vkMapMemory_VkResult_return) == VK_ERROR_DEVICE_LOST) m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkMapMemory_VkResult_return, opcode, context);
vkStream->unsetHandleMapping();
@@ -1769,6 +1840,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -1778,7 +1850,9 @@
fprintf(stderr, "stream %p: call vkUnmapMemory 0x%llx 0x%llx \n", ioStream,
(unsigned long long)device, (unsigned long long)memory);
}
- m_state->on_vkUnmapMemory(&m_pool, snapshotApiCallInfo, device, memory);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkUnmapMemory(&m_pool, snapshotApiCallInfo, device, memory);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkUnmapMemory(&m_pool, snapshotApiCallInfo, packet,
@@ -1863,9 +1937,11 @@
packetLen += 8 + readStream;
}
}
- VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
- vkFlushMappedMemoryRanges_VkResult_return =
- vk->vkFlushMappedMemoryRanges(unboxed_device, memoryRangeCount, pMemoryRanges);
+ VkResult vkFlushMappedMemoryRanges_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkFlushMappedMemoryRanges_VkResult_return = vk->vkFlushMappedMemoryRanges(
+ unboxed_device, memoryRangeCount, pMemoryRanges);
+ }
if ((vkFlushMappedMemoryRanges_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkFlushMappedMemoryRanges_VkResult_return, opcode,
@@ -1920,9 +1996,13 @@
ioStream, (unsigned long long)device, (unsigned long long)memoryRangeCount,
(unsigned long long)pMemoryRanges);
}
- VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
- vkInvalidateMappedMemoryRanges_VkResult_return = vk->vkInvalidateMappedMemoryRanges(
- unboxed_device, memoryRangeCount, pMemoryRanges);
+ VkResult vkInvalidateMappedMemoryRanges_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkInvalidateMappedMemoryRanges_VkResult_return =
+ vk->vkInvalidateMappedMemoryRanges(unboxed_device, memoryRangeCount,
+ pMemoryRanges);
+ }
if ((vkInvalidateMappedMemoryRanges_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkInvalidateMappedMemoryRanges_VkResult_return, opcode,
@@ -1992,7 +2072,10 @@
ioStream, (unsigned long long)device, (unsigned long long)memory,
(unsigned long long)pCommittedMemoryInBytes);
}
- vk->vkGetDeviceMemoryCommitment(unboxed_device, memory, pCommittedMemoryInBytes);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetDeviceMemoryCommitment(unboxed_device, memory,
+ pCommittedMemoryInBytes);
+ }
vkStream->unsetHandleMapping();
vkStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
vkStream->commitWrite();
@@ -2018,6 +2101,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -2035,9 +2119,11 @@
ioStream, (unsigned long long)device, (unsigned long long)buffer,
(unsigned long long)memory, (unsigned long long)memoryOffset);
}
- VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
- vkBindBufferMemory_VkResult_return = m_state->on_vkBindBufferMemory(
- &m_pool, snapshotApiCallInfo, device, buffer, memory, memoryOffset);
+ VkResult vkBindBufferMemory_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkBindBufferMemory_VkResult_return = m_state->on_vkBindBufferMemory(
+ &m_pool, snapshotApiCallInfo, device, buffer, memory, memoryOffset);
+ }
if ((vkBindBufferMemory_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkBindBufferMemory_VkResult_return, opcode, context);
@@ -2066,6 +2152,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -2083,9 +2170,11 @@
ioStream, (unsigned long long)device, (unsigned long long)image,
(unsigned long long)memory, (unsigned long long)memoryOffset);
}
- VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
- vkBindImageMemory_VkResult_return = m_state->on_vkBindImageMemory(
- &m_pool, snapshotApiCallInfo, device, image, memory, memoryOffset);
+ VkResult vkBindImageMemory_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkBindImageMemory_VkResult_return = m_state->on_vkBindImageMemory(
+ &m_pool, snapshotApiCallInfo, device, image, memory, memoryOffset);
+ }
if ((vkBindImageMemory_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkBindImageMemory_VkResult_return, opcode, context);
@@ -2113,6 +2202,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -2133,8 +2223,10 @@
ioStream, (unsigned long long)device, (unsigned long long)buffer,
(unsigned long long)pMemoryRequirements);
}
- m_state->on_vkGetBufferMemoryRequirements(&m_pool, snapshotApiCallInfo, device,
- buffer, pMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetBufferMemoryRequirements(&m_pool, snapshotApiCallInfo, device,
+ buffer, pMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
if (pMemoryRequirements) {
transform_fromhost_VkMemoryRequirements(
@@ -2164,6 +2256,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -2184,8 +2277,10 @@
ioStream, (unsigned long long)device, (unsigned long long)image,
(unsigned long long)pMemoryRequirements);
}
- m_state->on_vkGetImageMemoryRequirements(&m_pool, snapshotApiCallInfo, device,
- image, pMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetImageMemoryRequirements(&m_pool, snapshotApiCallInfo, device,
+ image, pMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
if (pMemoryRequirements) {
transform_fromhost_VkMemoryRequirements(
@@ -2271,9 +2366,11 @@
(unsigned long long)pSparseMemoryRequirementCount,
(unsigned long long)pSparseMemoryRequirements);
}
- vk->vkGetImageSparseMemoryRequirements(unboxed_device, image,
- pSparseMemoryRequirementCount,
- pSparseMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetImageSparseMemoryRequirements(unboxed_device, image,
+ pSparseMemoryRequirementCount,
+ pSparseMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
// WARNING PTR CHECK
uint64_t cgen_var_4 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
@@ -2391,9 +2488,11 @@
(unsigned long long)tiling, (unsigned long long)pPropertyCount,
(unsigned long long)pProperties);
}
- vk->vkGetPhysicalDeviceSparseImageFormatProperties(unboxed_physicalDevice, format,
- type, samples, usage, tiling,
- pPropertyCount, pProperties);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetPhysicalDeviceSparseImageFormatProperties(
+ unboxed_physicalDevice, format, type, samples, usage, tiling,
+ pPropertyCount, pProperties);
+ }
vkStream->unsetHandleMapping();
// WARNING PTR CHECK
uint64_t cgen_var_3 = (uint64_t)(uintptr_t)pPropertyCount;
@@ -2444,6 +2543,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
memcpy((uint32_t*)&bindInfoCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pBindInfo,
@@ -2469,9 +2569,11 @@
ioStream, (unsigned long long)queue, (unsigned long long)bindInfoCount,
(unsigned long long)pBindInfo, (unsigned long long)fence);
}
- VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
- vkQueueBindSparse_VkResult_return = m_state->on_vkQueueBindSparse(
- &m_pool, snapshotApiCallInfo, queue, bindInfoCount, pBindInfo, fence);
+ VkResult vkQueueBindSparse_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkQueueBindSparse_VkResult_return = m_state->on_vkQueueBindSparse(
+ &m_pool, snapshotApiCallInfo, queue, bindInfoCount, pBindInfo, fence);
+ }
if ((vkQueueBindSparse_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkQueueBindSparse_VkResult_return, opcode, context);
@@ -2499,6 +2601,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkFenceCreateInfo));
reservedunmarshal_VkFenceCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkFenceCreateInfo*)(pCreateInfo),
@@ -2532,9 +2635,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pFence);
}
- VkResult vkCreateFence_VkResult_return = (VkResult)0;
- vkCreateFence_VkResult_return = m_state->on_vkCreateFence(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pFence);
+ VkResult vkCreateFence_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateFence_VkResult_return = m_state->on_vkCreateFence(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pFence);
+ }
if ((vkCreateFence_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateFence_VkResult_return, opcode, context);
@@ -2570,6 +2675,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for fence;
VkFence boxed_fence_preserve;
uint64_t cgen_var_1;
@@ -2597,7 +2703,10 @@
ioStream, (unsigned long long)device, (unsigned long long)fence,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroyFence(&m_pool, snapshotApiCallInfo, device, fence, pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyFence(&m_pool, snapshotApiCallInfo, device, fence,
+ pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyFence(&m_pool, snapshotApiCallInfo, packet,
@@ -2620,6 +2729,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
memcpy((uint32_t*)&fenceCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pFences, ((fenceCount)) * sizeof(const VkFence));
@@ -2638,9 +2748,11 @@
ioStream, (unsigned long long)device, (unsigned long long)fenceCount,
(unsigned long long)pFences);
}
- VkResult vkResetFences_VkResult_return = (VkResult)0;
- vkResetFences_VkResult_return = m_state->on_vkResetFences(
- &m_pool, snapshotApiCallInfo, device, fenceCount, pFences);
+ VkResult vkResetFences_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkResetFences_VkResult_return = m_state->on_vkResetFences(
+ &m_pool, snapshotApiCallInfo, device, fenceCount, pFences);
+ }
if ((vkResetFences_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkResetFences_VkResult_return, opcode, context);
@@ -2667,6 +2779,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -2675,9 +2788,11 @@
fprintf(stderr, "stream %p: call vkGetFenceStatus 0x%llx 0x%llx \n", ioStream,
(unsigned long long)device, (unsigned long long)fence);
}
- VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
- vkGetFenceStatus_VkResult_return =
- m_state->on_vkGetFenceStatus(&m_pool, snapshotApiCallInfo, device, fence);
+ VkResult vkGetFenceStatus_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetFenceStatus_VkResult_return =
+ m_state->on_vkGetFenceStatus(&m_pool, snapshotApiCallInfo, device, fence);
+ }
if ((vkGetFenceStatus_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetFenceStatus_VkResult_return, opcode, context);
@@ -2707,6 +2822,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
memcpy((uint32_t*)&fenceCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pFences, ((fenceCount)) * sizeof(const VkFence));
@@ -2733,9 +2849,12 @@
}
if (m_queueSubmitWithCommandsEnabled)
seqnoPtr->fetch_add(1, std::memory_order_seq_cst);
- VkResult vkWaitForFences_VkResult_return = (VkResult)0;
- vkWaitForFences_VkResult_return = m_state->on_vkWaitForFences(
- &m_pool, snapshotApiCallInfo, device, fenceCount, pFences, waitAll, timeout);
+ VkResult vkWaitForFences_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkWaitForFences_VkResult_return =
+ m_state->on_vkWaitForFences(&m_pool, snapshotApiCallInfo, device,
+ fenceCount, pFences, waitAll, timeout);
+ }
if ((vkWaitForFences_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkWaitForFences_VkResult_return, opcode, context);
@@ -2763,6 +2882,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkSemaphoreCreateInfo));
reservedunmarshal_VkSemaphoreCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkSemaphoreCreateInfo*)(pCreateInfo),
@@ -2798,9 +2918,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pSemaphore);
}
- VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
- vkCreateSemaphore_VkResult_return = m_state->on_vkCreateSemaphore(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pSemaphore);
+ VkResult vkCreateSemaphore_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateSemaphore_VkResult_return = m_state->on_vkCreateSemaphore(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pSemaphore);
+ }
if ((vkCreateSemaphore_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateSemaphore_VkResult_return, opcode, context);
@@ -2838,6 +2960,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for semaphore;
VkSemaphore boxed_semaphore_preserve;
uint64_t cgen_var_1;
@@ -2865,8 +2988,10 @@
ioStream, (unsigned long long)device, (unsigned long long)semaphore,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroySemaphore(&m_pool, snapshotApiCallInfo, device, semaphore,
- pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroySemaphore(&m_pool, snapshotApiCallInfo, device, semaphore,
+ pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroySemaphore(&m_pool, snapshotApiCallInfo, packet,
@@ -2926,9 +3051,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pEvent);
}
- VkResult vkCreateEvent_VkResult_return = (VkResult)0;
- vkCreateEvent_VkResult_return =
- vk->vkCreateEvent(unboxed_device, pCreateInfo, pAllocator, pEvent);
+ VkResult vkCreateEvent_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateEvent_VkResult_return =
+ vk->vkCreateEvent(unboxed_device, pCreateInfo, pAllocator, pEvent);
+ }
if ((vkCreateEvent_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateEvent_VkResult_return, opcode, context);
@@ -2995,7 +3122,9 @@
ioStream, (unsigned long long)device, (unsigned long long)event,
(unsigned long long)pAllocator);
}
- vk->vkDestroyEvent(unboxed_device, event, pAllocator);
+ if (CC_LIKELY(vk)) {
+ vk->vkDestroyEvent(unboxed_device, event, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyEvent(&m_pool, snapshotApiCallInfo, packet,
@@ -3029,8 +3158,10 @@
fprintf(stderr, "stream %p: call vkGetEventStatus 0x%llx 0x%llx \n", ioStream,
(unsigned long long)device, (unsigned long long)event);
}
- VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
- vkGetEventStatus_VkResult_return = vk->vkGetEventStatus(unboxed_device, event);
+ VkResult vkGetEventStatus_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetEventStatus_VkResult_return = vk->vkGetEventStatus(unboxed_device, event);
+ }
if ((vkGetEventStatus_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetEventStatus_VkResult_return, opcode, context);
@@ -3067,8 +3198,10 @@
fprintf(stderr, "stream %p: call vkSetEvent 0x%llx 0x%llx \n", ioStream,
(unsigned long long)device, (unsigned long long)event);
}
- VkResult vkSetEvent_VkResult_return = (VkResult)0;
- vkSetEvent_VkResult_return = vk->vkSetEvent(unboxed_device, event);
+ VkResult vkSetEvent_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkSetEvent_VkResult_return = vk->vkSetEvent(unboxed_device, event);
+ }
if ((vkSetEvent_VkResult_return) == VK_ERROR_DEVICE_LOST) m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkSetEvent_VkResult_return, opcode, context);
vkStream->unsetHandleMapping();
@@ -3103,8 +3236,10 @@
fprintf(stderr, "stream %p: call vkResetEvent 0x%llx 0x%llx \n", ioStream,
(unsigned long long)device, (unsigned long long)event);
}
- VkResult vkResetEvent_VkResult_return = (VkResult)0;
- vkResetEvent_VkResult_return = vk->vkResetEvent(unboxed_device, event);
+ VkResult vkResetEvent_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkResetEvent_VkResult_return = vk->vkResetEvent(unboxed_device, event);
+ }
if ((vkResetEvent_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkResetEvent_VkResult_return, opcode, context);
@@ -3171,9 +3306,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pQueryPool);
}
- VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
- vkCreateQueryPool_VkResult_return =
- vk->vkCreateQueryPool(unboxed_device, pCreateInfo, pAllocator, pQueryPool);
+ VkResult vkCreateQueryPool_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateQueryPool_VkResult_return =
+ vk->vkCreateQueryPool(unboxed_device, pCreateInfo, pAllocator, pQueryPool);
+ }
if ((vkCreateQueryPool_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateQueryPool_VkResult_return, opcode, context);
@@ -3242,7 +3379,9 @@
ioStream, (unsigned long long)device, (unsigned long long)queryPool,
(unsigned long long)pAllocator);
}
- vk->vkDestroyQueryPool(unboxed_device, queryPool, pAllocator);
+ if (CC_LIKELY(vk)) {
+ vk->vkDestroyQueryPool(unboxed_device, queryPool, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyQueryPool(&m_pool, snapshotApiCallInfo, packet,
@@ -3304,10 +3443,12 @@
(unsigned long long)dataSize, (unsigned long long)pData,
(unsigned long long)stride, (unsigned long long)flags);
}
- VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
- vkGetQueryPoolResults_VkResult_return =
- vk->vkGetQueryPoolResults(unboxed_device, queryPool, firstQuery, queryCount,
- dataSize, pData, stride, flags);
+ VkResult vkGetQueryPoolResults_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetQueryPoolResults_VkResult_return =
+ vk->vkGetQueryPoolResults(unboxed_device, queryPool, firstQuery, queryCount,
+ dataSize, pData, stride, flags);
+ }
if ((vkGetQueryPoolResults_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetQueryPoolResults_VkResult_return, opcode,
@@ -3338,6 +3479,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkBufferCreateInfo));
reservedunmarshal_VkBufferCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkBufferCreateInfo*)(pCreateInfo),
@@ -3372,9 +3514,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pBuffer);
}
- VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
- vkCreateBuffer_VkResult_return = m_state->on_vkCreateBuffer(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pBuffer);
+ VkResult vkCreateBuffer_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateBuffer_VkResult_return = m_state->on_vkCreateBuffer(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pBuffer);
+ }
if ((vkCreateBuffer_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateBuffer_VkResult_return, opcode, context);
@@ -3411,6 +3555,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for buffer;
VkBuffer boxed_buffer_preserve;
uint64_t cgen_var_1;
@@ -3438,8 +3583,10 @@
ioStream, (unsigned long long)device, (unsigned long long)buffer,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroyBuffer(&m_pool, snapshotApiCallInfo, device, buffer,
- pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyBuffer(&m_pool, snapshotApiCallInfo, device, buffer,
+ pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyBuffer(&m_pool, snapshotApiCallInfo, packet,
@@ -3502,9 +3649,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pView);
}
- VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
- vkCreateBufferView_VkResult_return =
- vk->vkCreateBufferView(unboxed_device, pCreateInfo, pAllocator, pView);
+ VkResult vkCreateBufferView_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateBufferView_VkResult_return =
+ vk->vkCreateBufferView(unboxed_device, pCreateInfo, pAllocator, pView);
+ }
if ((vkCreateBufferView_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateBufferView_VkResult_return, opcode, context);
@@ -3573,7 +3722,9 @@
ioStream, (unsigned long long)device, (unsigned long long)bufferView,
(unsigned long long)pAllocator);
}
- vk->vkDestroyBufferView(unboxed_device, bufferView, pAllocator);
+ if (CC_LIKELY(vk)) {
+ vk->vkDestroyBufferView(unboxed_device, bufferView, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyBufferView(&m_pool, snapshotApiCallInfo, packet,
@@ -3597,6 +3748,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkImageCreateInfo));
reservedunmarshal_VkImageCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkImageCreateInfo*)(pCreateInfo),
@@ -3631,9 +3783,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pImage);
}
- VkResult vkCreateImage_VkResult_return = (VkResult)0;
- vkCreateImage_VkResult_return = m_state->on_vkCreateImage(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pImage);
+ VkResult vkCreateImage_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateImage_VkResult_return = m_state->on_vkCreateImage(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pImage);
+ }
if ((vkCreateImage_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateImage_VkResult_return, opcode, context);
@@ -3669,6 +3823,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for image;
VkImage boxed_image_preserve;
uint64_t cgen_var_1;
@@ -3696,7 +3851,10 @@
ioStream, (unsigned long long)device, (unsigned long long)image,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroyImage(&m_pool, snapshotApiCallInfo, device, image, pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyImage(&m_pool, snapshotApiCallInfo, device, image,
+ pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyImage(&m_pool, snapshotApiCallInfo, packet,
@@ -3752,7 +3910,9 @@
ioStream, (unsigned long long)device, (unsigned long long)image,
(unsigned long long)pSubresource, (unsigned long long)pLayout);
}
- vk->vkGetImageSubresourceLayout(unboxed_device, image, pSubresource, pLayout);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetImageSubresourceLayout(unboxed_device, image, pSubresource, pLayout);
+ }
vkStream->unsetHandleMapping();
if (pLayout) {
transform_fromhost_VkSubresourceLayout(m_state,
@@ -3783,6 +3943,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkImageViewCreateInfo));
reservedunmarshal_VkImageViewCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkImageViewCreateInfo*)(pCreateInfo),
@@ -3818,9 +3979,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pView);
}
- VkResult vkCreateImageView_VkResult_return = (VkResult)0;
- vkCreateImageView_VkResult_return = m_state->on_vkCreateImageView(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pView);
+ VkResult vkCreateImageView_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateImageView_VkResult_return = m_state->on_vkCreateImageView(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pView);
+ }
if ((vkCreateImageView_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateImageView_VkResult_return, opcode, context);
@@ -3857,6 +4020,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for imageView;
VkImageView boxed_imageView_preserve;
uint64_t cgen_var_1;
@@ -3884,8 +4048,10 @@
ioStream, (unsigned long long)device, (unsigned long long)imageView,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroyImageView(&m_pool, snapshotApiCallInfo, device, imageView,
- pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyImageView(&m_pool, snapshotApiCallInfo, device, imageView,
+ pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyImageView(&m_pool, snapshotApiCallInfo, packet,
@@ -3910,6 +4076,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkShaderModuleCreateInfo));
reservedunmarshal_VkShaderModuleCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkShaderModuleCreateInfo*)(pCreateInfo),
@@ -3946,9 +4113,12 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pShaderModule);
}
- VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
- vkCreateShaderModule_VkResult_return = m_state->on_vkCreateShaderModule(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pShaderModule);
+ VkResult vkCreateShaderModule_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateShaderModule_VkResult_return =
+ m_state->on_vkCreateShaderModule(&m_pool, snapshotApiCallInfo, device,
+ pCreateInfo, pAllocator, pShaderModule);
+ }
if ((vkCreateShaderModule_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateShaderModule_VkResult_return, opcode, context);
@@ -4018,8 +4188,10 @@
ioStream, (unsigned long long)device, (unsigned long long)shaderModule,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroyShaderModule(&m_pool, snapshotApiCallInfo, device,
- shaderModule, pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyShaderModule(&m_pool, snapshotApiCallInfo, device,
+ shaderModule, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyShaderModule(
@@ -4044,6 +4216,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkPipelineCacheCreateInfo));
reservedunmarshal_VkPipelineCacheCreateInfo(
vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
@@ -4080,9 +4253,12 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pPipelineCache);
}
- VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
- vkCreatePipelineCache_VkResult_return = m_state->on_vkCreatePipelineCache(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pPipelineCache);
+ VkResult vkCreatePipelineCache_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreatePipelineCache_VkResult_return =
+ m_state->on_vkCreatePipelineCache(&m_pool, snapshotApiCallInfo, device,
+ pCreateInfo, pAllocator, pPipelineCache);
+ }
if ((vkCreatePipelineCache_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreatePipelineCache_VkResult_return, opcode,
@@ -4122,6 +4298,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for pipelineCache;
VkPipelineCache boxed_pipelineCache_preserve;
uint64_t cgen_var_1;
@@ -4151,8 +4328,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pipelineCache,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroyPipelineCache(&m_pool, snapshotApiCallInfo, device,
- pipelineCache, pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyPipelineCache(&m_pool, snapshotApiCallInfo, device,
+ pipelineCache, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyPipelineCache(
@@ -4214,9 +4393,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pipelineCache,
(unsigned long long)pDataSize, (unsigned long long)pData);
}
- VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
- vkGetPipelineCacheData_VkResult_return =
- vk->vkGetPipelineCacheData(unboxed_device, pipelineCache, pDataSize, pData);
+ VkResult vkGetPipelineCacheData_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetPipelineCacheData_VkResult_return =
+ vk->vkGetPipelineCacheData(unboxed_device, pipelineCache, pDataSize, pData);
+ }
if ((vkGetPipelineCacheData_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetPipelineCacheData_VkResult_return, opcode,
@@ -4289,9 +4470,11 @@
ioStream, (unsigned long long)device, (unsigned long long)dstCache,
(unsigned long long)srcCacheCount, (unsigned long long)pSrcCaches);
}
- VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
- vkMergePipelineCaches_VkResult_return =
- vk->vkMergePipelineCaches(unboxed_device, dstCache, srcCacheCount, pSrcCaches);
+ VkResult vkMergePipelineCaches_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkMergePipelineCaches_VkResult_return = vk->vkMergePipelineCaches(
+ unboxed_device, dstCache, srcCacheCount, pSrcCaches);
+ }
if ((vkMergePipelineCaches_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkMergePipelineCaches_VkResult_return, opcode,
@@ -4324,6 +4507,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -4380,10 +4564,13 @@
(unsigned long long)createInfoCount, (unsigned long long)pCreateInfos,
(unsigned long long)pAllocator, (unsigned long long)pPipelines);
}
- VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
- vkCreateGraphicsPipelines_VkResult_return = m_state->on_vkCreateGraphicsPipelines(
- &m_pool, snapshotApiCallInfo, device, pipelineCache, createInfoCount,
- pCreateInfos, pAllocator, pPipelines);
+ VkResult vkCreateGraphicsPipelines_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateGraphicsPipelines_VkResult_return =
+ m_state->on_vkCreateGraphicsPipelines(&m_pool, snapshotApiCallInfo, device,
+ pipelineCache, createInfoCount,
+ pCreateInfos, pAllocator, pPipelines);
+ }
if ((vkCreateGraphicsPipelines_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateGraphicsPipelines_VkResult_return, opcode,
@@ -4429,6 +4616,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -4485,10 +4673,12 @@
(unsigned long long)createInfoCount, (unsigned long long)pCreateInfos,
(unsigned long long)pAllocator, (unsigned long long)pPipelines);
}
- VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
- vkCreateComputePipelines_VkResult_return = m_state->on_vkCreateComputePipelines(
- &m_pool, snapshotApiCallInfo, device, pipelineCache, createInfoCount,
- pCreateInfos, pAllocator, pPipelines);
+ VkResult vkCreateComputePipelines_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateComputePipelines_VkResult_return = m_state->on_vkCreateComputePipelines(
+ &m_pool, snapshotApiCallInfo, device, pipelineCache, createInfoCount,
+ pCreateInfos, pAllocator, pPipelines);
+ }
if ((vkCreateComputePipelines_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateComputePipelines_VkResult_return, opcode,
@@ -4531,6 +4721,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for pipeline;
VkPipeline boxed_pipeline_preserve;
uint64_t cgen_var_1;
@@ -4558,8 +4749,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pipeline,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroyPipeline(&m_pool, snapshotApiCallInfo, device, pipeline,
- pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyPipeline(&m_pool, snapshotApiCallInfo, device, pipeline,
+ pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyPipeline(&m_pool, snapshotApiCallInfo, packet,
@@ -4584,6 +4777,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkPipelineLayoutCreateInfo));
reservedunmarshal_VkPipelineLayoutCreateInfo(
vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
@@ -4620,9 +4814,12 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pPipelineLayout);
}
- VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
- vkCreatePipelineLayout_VkResult_return = m_state->on_vkCreatePipelineLayout(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pPipelineLayout);
+ VkResult vkCreatePipelineLayout_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreatePipelineLayout_VkResult_return = m_state->on_vkCreatePipelineLayout(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator,
+ pPipelineLayout);
+ }
if ((vkCreatePipelineLayout_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreatePipelineLayout_VkResult_return, opcode,
@@ -4694,11 +4891,13 @@
ioStream, (unsigned long long)device,
(unsigned long long)pipelineLayout, (unsigned long long)pAllocator);
}
- std::function<void()> delayed_remove_callback = [device, pipelineLayout,
+ std::function<void()> delayed_remove_callback = [vk, device, pipelineLayout,
pAllocator]() {
auto m_state = VkDecoderGlobalState::get();
- m_state->on_vkDestroyPipelineLayout(nullptr, nullptr, device, pipelineLayout,
- pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyPipelineLayout(nullptr, nullptr, device,
+ pipelineLayout, pAllocator);
+ }
};
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
@@ -4725,6 +4924,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkSamplerCreateInfo));
reservedunmarshal_VkSamplerCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkSamplerCreateInfo*)(pCreateInfo),
@@ -4760,9 +4960,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pSampler);
}
- VkResult vkCreateSampler_VkResult_return = (VkResult)0;
- vkCreateSampler_VkResult_return = m_state->on_vkCreateSampler(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pSampler);
+ VkResult vkCreateSampler_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateSampler_VkResult_return = m_state->on_vkCreateSampler(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pSampler);
+ }
if ((vkCreateSampler_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateSampler_VkResult_return, opcode, context);
@@ -4799,6 +5001,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for sampler;
VkSampler boxed_sampler_preserve;
uint64_t cgen_var_1;
@@ -4826,8 +5029,10 @@
ioStream, (unsigned long long)device, (unsigned long long)sampler,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroySampler(&m_pool, snapshotApiCallInfo, device, sampler,
- pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroySampler(&m_pool, snapshotApiCallInfo, device, sampler,
+ pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroySampler(&m_pool, snapshotApiCallInfo, packet,
@@ -4852,6 +5057,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo,
sizeof(const VkDescriptorSetLayoutCreateInfo));
reservedunmarshal_VkDescriptorSetLayoutCreateInfo(
@@ -4891,10 +5097,13 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pSetLayout);
}
- VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
- vkCreateDescriptorSetLayout_VkResult_return =
- m_state->on_vkCreateDescriptorSetLayout(&m_pool, snapshotApiCallInfo, device,
- pCreateInfo, pAllocator, pSetLayout);
+ VkResult vkCreateDescriptorSetLayout_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateDescriptorSetLayout_VkResult_return =
+ m_state->on_vkCreateDescriptorSetLayout(&m_pool, snapshotApiCallInfo,
+ device, pCreateInfo, pAllocator,
+ pSetLayout);
+ }
if ((vkCreateDescriptorSetLayout_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateDescriptorSetLayout_VkResult_return, opcode,
@@ -4935,6 +5144,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for descriptorSetLayout;
VkDescriptorSetLayout boxed_descriptorSetLayout_preserve;
uint64_t cgen_var_1;
@@ -4966,8 +5176,10 @@
(unsigned long long)descriptorSetLayout,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroyDescriptorSetLayout(&m_pool, snapshotApiCallInfo, device,
- descriptorSetLayout, pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyDescriptorSetLayout(&m_pool, snapshotApiCallInfo, device,
+ descriptorSetLayout, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyDescriptorSetLayout(
@@ -4992,6 +5204,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkDescriptorPoolCreateInfo));
reservedunmarshal_VkDescriptorPoolCreateInfo(
vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
@@ -5028,9 +5241,12 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pDescriptorPool);
}
- VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
- vkCreateDescriptorPool_VkResult_return = m_state->on_vkCreateDescriptorPool(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pDescriptorPool);
+ VkResult vkCreateDescriptorPool_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateDescriptorPool_VkResult_return = m_state->on_vkCreateDescriptorPool(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator,
+ pDescriptorPool);
+ }
if ((vkCreateDescriptorPool_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateDescriptorPool_VkResult_return, opcode,
@@ -5070,6 +5286,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for descriptorPool;
VkDescriptorPool boxed_descriptorPool_preserve;
uint64_t cgen_var_1;
@@ -5099,8 +5316,10 @@
ioStream, (unsigned long long)device,
(unsigned long long)descriptorPool, (unsigned long long)pAllocator);
}
- m_state->on_vkDestroyDescriptorPool(&m_pool, snapshotApiCallInfo, device,
- descriptorPool, pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyDescriptorPool(&m_pool, snapshotApiCallInfo, device,
+ descriptorPool, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyDescriptorPool(
@@ -5124,6 +5343,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -5137,9 +5357,11 @@
ioStream, (unsigned long long)device,
(unsigned long long)descriptorPool, (unsigned long long)flags);
}
- VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
- vkResetDescriptorPool_VkResult_return = m_state->on_vkResetDescriptorPool(
- &m_pool, snapshotApiCallInfo, device, descriptorPool, flags);
+ VkResult vkResetDescriptorPool_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkResetDescriptorPool_VkResult_return = m_state->on_vkResetDescriptorPool(
+ &m_pool, snapshotApiCallInfo, device, descriptorPool, flags);
+ }
if ((vkResetDescriptorPool_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkResetDescriptorPool_VkResult_return, opcode,
@@ -5168,6 +5390,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pAllocateInfo,
sizeof(const VkDescriptorSetAllocateInfo));
reservedunmarshal_VkDescriptorSetAllocateInfo(
@@ -5198,9 +5421,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pAllocateInfo,
(unsigned long long)pDescriptorSets);
}
- VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
- vkAllocateDescriptorSets_VkResult_return = m_state->on_vkAllocateDescriptorSets(
- &m_pool, snapshotApiCallInfo, device, pAllocateInfo, pDescriptorSets);
+ VkResult vkAllocateDescriptorSets_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkAllocateDescriptorSets_VkResult_return = m_state->on_vkAllocateDescriptorSets(
+ &m_pool, snapshotApiCallInfo, device, pAllocateInfo, pDescriptorSets);
+ }
if ((vkAllocateDescriptorSets_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkAllocateDescriptorSets_VkResult_return, opcode,
@@ -5246,6 +5471,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -5289,10 +5515,12 @@
(unsigned long long)descriptorSetCount,
(unsigned long long)pDescriptorSets);
}
- VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
- vkFreeDescriptorSets_VkResult_return = m_state->on_vkFreeDescriptorSets(
- &m_pool, snapshotApiCallInfo, device, descriptorPool, descriptorSetCount,
- pDescriptorSets);
+ VkResult vkFreeDescriptorSets_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkFreeDescriptorSets_VkResult_return = m_state->on_vkFreeDescriptorSets(
+ &m_pool, snapshotApiCallInfo, device, descriptorPool, descriptorSetCount,
+ pDescriptorSets);
+ }
if ((vkFreeDescriptorSets_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkFreeDescriptorSets_VkResult_return, opcode, context);
@@ -5324,6 +5552,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
memcpy((uint32_t*)&descriptorWriteCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pDescriptorWrites,
@@ -5364,9 +5593,11 @@
(unsigned long long)descriptorCopyCount,
(unsigned long long)pDescriptorCopies);
}
- m_state->on_vkUpdateDescriptorSets(&m_pool, snapshotApiCallInfo, device,
- descriptorWriteCount, pDescriptorWrites,
- descriptorCopyCount, pDescriptorCopies);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkUpdateDescriptorSets(&m_pool, snapshotApiCallInfo, device,
+ descriptorWriteCount, pDescriptorWrites,
+ descriptorCopyCount, pDescriptorCopies);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkUpdateDescriptorSets(
@@ -5391,6 +5622,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkFramebufferCreateInfo));
reservedunmarshal_VkFramebufferCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkFramebufferCreateInfo*)(pCreateInfo),
@@ -5427,9 +5659,12 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pFramebuffer);
}
- VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
- vkCreateFramebuffer_VkResult_return = m_state->on_vkCreateFramebuffer(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pFramebuffer);
+ VkResult vkCreateFramebuffer_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateFramebuffer_VkResult_return =
+ m_state->on_vkCreateFramebuffer(&m_pool, snapshotApiCallInfo, device,
+ pCreateInfo, pAllocator, pFramebuffer);
+ }
if ((vkCreateFramebuffer_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateFramebuffer_VkResult_return, opcode, context);
@@ -5468,6 +5703,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for framebuffer;
VkFramebuffer boxed_framebuffer_preserve;
uint64_t cgen_var_1;
@@ -5496,8 +5732,10 @@
ioStream, (unsigned long long)device, (unsigned long long)framebuffer,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroyFramebuffer(&m_pool, snapshotApiCallInfo, device, framebuffer,
- pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyFramebuffer(&m_pool, snapshotApiCallInfo, device,
+ framebuffer, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyFramebuffer(
@@ -5522,6 +5760,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkRenderPassCreateInfo));
reservedunmarshal_VkRenderPassCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkRenderPassCreateInfo*)(pCreateInfo),
@@ -5558,9 +5797,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pRenderPass);
}
- VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
- vkCreateRenderPass_VkResult_return = m_state->on_vkCreateRenderPass(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pRenderPass);
+ VkResult vkCreateRenderPass_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateRenderPass_VkResult_return = m_state->on_vkCreateRenderPass(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pRenderPass);
+ }
if ((vkCreateRenderPass_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateRenderPass_VkResult_return, opcode, context);
@@ -5598,6 +5839,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for renderPass;
VkRenderPass boxed_renderPass_preserve;
uint64_t cgen_var_1;
@@ -5626,8 +5868,10 @@
ioStream, (unsigned long long)device, (unsigned long long)renderPass,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroyRenderPass(&m_pool, snapshotApiCallInfo, device, renderPass,
- pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyRenderPass(&m_pool, snapshotApiCallInfo, device,
+ renderPass, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyRenderPass(&m_pool, snapshotApiCallInfo, packet,
@@ -5673,7 +5917,9 @@
ioStream, (unsigned long long)device, (unsigned long long)renderPass,
(unsigned long long)pGranularity);
}
- vk->vkGetRenderAreaGranularity(unboxed_device, renderPass, pGranularity);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetRenderAreaGranularity(unboxed_device, renderPass, pGranularity);
+ }
vkStream->unsetHandleMapping();
if (pGranularity) {
transform_fromhost_VkExtent2D(m_state, (VkExtent2D*)(pGranularity));
@@ -5703,6 +5949,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkCommandPoolCreateInfo));
reservedunmarshal_VkCommandPoolCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkCommandPoolCreateInfo*)(pCreateInfo),
@@ -5739,9 +5986,12 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pCommandPool);
}
- VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
- vkCreateCommandPool_VkResult_return = m_state->on_vkCreateCommandPool(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pCommandPool);
+ VkResult vkCreateCommandPool_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateCommandPool_VkResult_return =
+ m_state->on_vkCreateCommandPool(&m_pool, snapshotApiCallInfo, device,
+ pCreateInfo, pAllocator, pCommandPool);
+ }
if ((vkCreateCommandPool_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateCommandPool_VkResult_return, opcode, context);
@@ -5780,6 +6030,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for commandPool;
VkCommandPool boxed_commandPool_preserve;
uint64_t cgen_var_1;
@@ -5808,8 +6059,10 @@
ioStream, (unsigned long long)device, (unsigned long long)commandPool,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroyCommandPool(&m_pool, snapshotApiCallInfo, device, commandPool,
- pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyCommandPool(&m_pool, snapshotApiCallInfo, device,
+ commandPool, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyCommandPool(
@@ -5833,6 +6086,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -5846,9 +6100,11 @@
ioStream, (unsigned long long)device, (unsigned long long)commandPool,
(unsigned long long)flags);
}
- VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
- vkResetCommandPool_VkResult_return = m_state->on_vkResetCommandPool(
- &m_pool, snapshotApiCallInfo, device, commandPool, flags);
+ VkResult vkResetCommandPool_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkResetCommandPool_VkResult_return = m_state->on_vkResetCommandPool(
+ &m_pool, snapshotApiCallInfo, device, commandPool, flags);
+ }
if ((vkResetCommandPool_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkResetCommandPool_VkResult_return, opcode, context);
@@ -5876,6 +6132,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pAllocateInfo,
sizeof(const VkCommandBufferAllocateInfo));
reservedunmarshal_VkCommandBufferAllocateInfo(
@@ -5906,9 +6163,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pAllocateInfo,
(unsigned long long)pCommandBuffers);
}
- VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
- vkAllocateCommandBuffers_VkResult_return = m_state->on_vkAllocateCommandBuffers(
- &m_pool, snapshotApiCallInfo, device, pAllocateInfo, pCommandBuffers);
+ VkResult vkAllocateCommandBuffers_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkAllocateCommandBuffers_VkResult_return = m_state->on_vkAllocateCommandBuffers(
+ &m_pool, snapshotApiCallInfo, device, pAllocateInfo, pCommandBuffers);
+ }
if ((vkAllocateCommandBuffers_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkAllocateCommandBuffers_VkResult_return, opcode,
@@ -5950,6 +6209,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -5992,8 +6252,11 @@
(unsigned long long)commandBufferCount,
(unsigned long long)pCommandBuffers);
}
- m_state->on_vkFreeCommandBuffers(&m_pool, snapshotApiCallInfo, device, commandPool,
- commandBufferCount, pCommandBuffers);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkFreeCommandBuffers(&m_pool, snapshotApiCallInfo, device,
+ commandPool, commandBufferCount,
+ pCommandBuffers);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkFreeCommandBuffers(
@@ -6021,6 +6284,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
vkReadStream->alloc((void**)&pBeginInfo, sizeof(const VkCommandBufferBeginInfo));
reservedunmarshal_VkCommandBufferBeginInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkCommandBufferBeginInfo*)(pBeginInfo),
@@ -6034,9 +6298,11 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pBeginInfo);
}
- VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
- vkBeginCommandBuffer_VkResult_return = m_state->on_vkBeginCommandBuffer(
- &m_pool, snapshotApiCallInfo, commandBuffer, pBeginInfo, context);
+ VkResult vkBeginCommandBuffer_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkBeginCommandBuffer_VkResult_return = m_state->on_vkBeginCommandBuffer(
+ &m_pool, snapshotApiCallInfo, commandBuffer, pBeginInfo, context);
+ }
if ((vkBeginCommandBuffer_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkBeginCommandBuffer_VkResult_return, opcode, context);
@@ -6063,13 +6329,16 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
if (m_logCalls) {
fprintf(stderr, "stream %p: call vkEndCommandBuffer 0x%llx \n", ioStream,
(unsigned long long)commandBuffer);
}
- VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
- vkEndCommandBuffer_VkResult_return = m_state->on_vkEndCommandBuffer(
- &m_pool, snapshotApiCallInfo, commandBuffer, context);
+ VkResult vkEndCommandBuffer_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkEndCommandBuffer_VkResult_return = m_state->on_vkEndCommandBuffer(
+ &m_pool, snapshotApiCallInfo, commandBuffer, context);
+ }
if ((vkEndCommandBuffer_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkEndCommandBuffer_VkResult_return, opcode, context);
@@ -6097,6 +6366,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
memcpy((VkCommandBufferResetFlags*)&flags, *readStreamPtrPtr,
sizeof(VkCommandBufferResetFlags));
*readStreamPtrPtr += sizeof(VkCommandBufferResetFlags);
@@ -6104,9 +6374,11 @@
fprintf(stderr, "stream %p: call vkResetCommandBuffer 0x%llx 0x%llx \n",
ioStream, (unsigned long long)commandBuffer, (unsigned long long)flags);
}
- VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
- vkResetCommandBuffer_VkResult_return = m_state->on_vkResetCommandBuffer(
- &m_pool, snapshotApiCallInfo, commandBuffer, flags);
+ VkResult vkResetCommandBuffer_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkResetCommandBuffer_VkResult_return = m_state->on_vkResetCommandBuffer(
+ &m_pool, snapshotApiCallInfo, commandBuffer, flags);
+ }
if ((vkResetCommandBuffer_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkResetCommandBuffer_VkResult_return, opcode, context);
@@ -6135,6 +6407,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
memcpy((VkPipelineBindPoint*)&pipelineBindPoint, *readStreamPtrPtr,
sizeof(VkPipelineBindPoint));
*readStreamPtrPtr += sizeof(VkPipelineBindPoint);
@@ -6147,8 +6420,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pipelineBindPoint, (unsigned long long)pipeline);
}
- m_state->on_vkCmdBindPipeline(&m_pool, snapshotApiCallInfo, commandBuffer,
- pipelineBindPoint, pipeline);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdBindPipeline(&m_pool, snapshotApiCallInfo, commandBuffer,
+ pipelineBindPoint, pipeline);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBindPipeline(&m_pool, snapshotApiCallInfo, packet,
@@ -6198,8 +6473,10 @@
(unsigned long long)firstViewport, (unsigned long long)viewportCount,
(unsigned long long)pViewports);
}
- vk->vkCmdSetViewport(unboxed_commandBuffer, firstViewport, viewportCount,
- pViewports);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetViewport(unboxed_commandBuffer, firstViewport, viewportCount,
+ pViewports);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetViewport(&m_pool, snapshotApiCallInfo, packet,
@@ -6248,7 +6525,10 @@
(unsigned long long)firstScissor, (unsigned long long)scissorCount,
(unsigned long long)pScissors);
}
- vk->vkCmdSetScissor(unboxed_commandBuffer, firstScissor, scissorCount, pScissors);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetScissor(unboxed_commandBuffer, firstScissor, scissorCount,
+ pScissors);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetScissor(&m_pool, snapshotApiCallInfo, packet,
@@ -6280,7 +6560,9 @@
fprintf(stderr, "stream %p: call vkCmdSetLineWidth 0x%llx 0x%llx \n", ioStream,
(unsigned long long)commandBuffer, (unsigned long long)lineWidth);
}
- vk->vkCmdSetLineWidth(unboxed_commandBuffer, lineWidth);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetLineWidth(unboxed_commandBuffer, lineWidth);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetLineWidth(&m_pool, snapshotApiCallInfo, packet,
@@ -6321,8 +6603,10 @@
(unsigned long long)depthBiasClamp,
(unsigned long long)depthBiasSlopeFactor);
}
- vk->vkCmdSetDepthBias(unboxed_commandBuffer, depthBiasConstantFactor,
- depthBiasClamp, depthBiasSlopeFactor);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthBias(unboxed_commandBuffer, depthBiasConstantFactor,
+ depthBiasClamp, depthBiasSlopeFactor);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetDepthBias(
@@ -6355,7 +6639,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)blendConstants);
}
- vk->vkCmdSetBlendConstants(unboxed_commandBuffer, blendConstants);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetBlendConstants(unboxed_commandBuffer, blendConstants);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetBlendConstants(&m_pool, snapshotApiCallInfo,
@@ -6391,7 +6677,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)minDepthBounds, (unsigned long long)maxDepthBounds);
}
- vk->vkCmdSetDepthBounds(unboxed_commandBuffer, minDepthBounds, maxDepthBounds);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthBounds(unboxed_commandBuffer, minDepthBounds, maxDepthBounds);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetDepthBounds(&m_pool, snapshotApiCallInfo, packet,
@@ -6429,7 +6717,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)faceMask, (unsigned long long)compareMask);
}
- vk->vkCmdSetStencilCompareMask(unboxed_commandBuffer, faceMask, compareMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilCompareMask(unboxed_commandBuffer, faceMask, compareMask);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetStencilCompareMask(
@@ -6467,7 +6757,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)faceMask, (unsigned long long)writeMask);
}
- vk->vkCmdSetStencilWriteMask(unboxed_commandBuffer, faceMask, writeMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilWriteMask(unboxed_commandBuffer, faceMask, writeMask);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetStencilWriteMask(&m_pool, snapshotApiCallInfo,
@@ -6505,7 +6797,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)faceMask, (unsigned long long)reference);
}
- vk->vkCmdSetStencilReference(unboxed_commandBuffer, faceMask, reference);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilReference(unboxed_commandBuffer, faceMask, reference);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetStencilReference(&m_pool, snapshotApiCallInfo,
@@ -6534,6 +6828,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
memcpy((VkPipelineBindPoint*)&pipelineBindPoint, *readStreamPtrPtr,
sizeof(VkPipelineBindPoint));
*readStreamPtrPtr += sizeof(VkPipelineBindPoint);
@@ -6577,10 +6872,12 @@
(unsigned long long)dynamicOffsetCount,
(unsigned long long)pDynamicOffsets);
}
- m_state->on_vkCmdBindDescriptorSets(&m_pool, snapshotApiCallInfo, commandBuffer,
- pipelineBindPoint, layout, firstSet,
- descriptorSetCount, pDescriptorSets,
- dynamicOffsetCount, pDynamicOffsets);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdBindDescriptorSets(&m_pool, snapshotApiCallInfo, commandBuffer,
+ pipelineBindPoint, layout, firstSet,
+ descriptorSetCount, pDescriptorSets,
+ dynamicOffsetCount, pDynamicOffsets);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBindDescriptorSets(
@@ -6623,7 +6920,9 @@
ioStream, (unsigned long long)commandBuffer, (unsigned long long)buffer,
(unsigned long long)offset, (unsigned long long)indexType);
}
- vk->vkCmdBindIndexBuffer(unboxed_commandBuffer, buffer, offset, indexType);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBindIndexBuffer(unboxed_commandBuffer, buffer, offset, indexType);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBindIndexBuffer(&m_pool, snapshotApiCallInfo, packet,
@@ -6680,8 +6979,10 @@
(unsigned long long)firstBinding, (unsigned long long)bindingCount,
(unsigned long long)pBuffers, (unsigned long long)pOffsets);
}
- vk->vkCmdBindVertexBuffers(unboxed_commandBuffer, firstBinding, bindingCount,
- pBuffers, pOffsets);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBindVertexBuffers(unboxed_commandBuffer, firstBinding, bindingCount,
+ pBuffers, pOffsets);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBindVertexBuffers(
@@ -6724,8 +7025,10 @@
(unsigned long long)vertexCount, (unsigned long long)instanceCount,
(unsigned long long)firstVertex, (unsigned long long)firstInstance);
}
- vk->vkCmdDraw(unboxed_commandBuffer, vertexCount, instanceCount, firstVertex,
- firstInstance);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDraw(unboxed_commandBuffer, vertexCount, instanceCount, firstVertex,
+ firstInstance);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdDraw(&m_pool, snapshotApiCallInfo, packet, packetLen,
@@ -6774,8 +7077,10 @@
(unsigned long long)firstIndex, (unsigned long long)vertexOffset,
(unsigned long long)firstInstance);
}
- vk->vkCmdDrawIndexed(unboxed_commandBuffer, indexCount, instanceCount, firstIndex,
- vertexOffset, firstInstance);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDrawIndexed(unboxed_commandBuffer, indexCount, instanceCount,
+ firstIndex, vertexOffset, firstInstance);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdDrawIndexed(
@@ -6822,7 +7127,9 @@
(unsigned long long)offset, (unsigned long long)drawCount,
(unsigned long long)stride);
}
- vk->vkCmdDrawIndirect(unboxed_commandBuffer, buffer, offset, drawCount, stride);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDrawIndirect(unboxed_commandBuffer, buffer, offset, drawCount, stride);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdDrawIndirect(&m_pool, snapshotApiCallInfo, packet,
@@ -6869,8 +7176,10 @@
(unsigned long long)offset, (unsigned long long)drawCount,
(unsigned long long)stride);
}
- vk->vkCmdDrawIndexedIndirect(unboxed_commandBuffer, buffer, offset, drawCount,
- stride);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDrawIndexedIndirect(unboxed_commandBuffer, buffer, offset, drawCount,
+ stride);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdDrawIndexedIndirect(
@@ -6909,7 +7218,9 @@
(unsigned long long)groupCountX, (unsigned long long)groupCountY,
(unsigned long long)groupCountZ);
}
- vk->vkCmdDispatch(unboxed_commandBuffer, groupCountX, groupCountY, groupCountZ);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDispatch(unboxed_commandBuffer, groupCountX, groupCountY, groupCountZ);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdDispatch(&m_pool, snapshotApiCallInfo, packet,
@@ -6947,7 +7258,9 @@
ioStream, (unsigned long long)commandBuffer, (unsigned long long)buffer,
(unsigned long long)offset);
}
- vk->vkCmdDispatchIndirect(unboxed_commandBuffer, buffer, offset);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDispatchIndirect(unboxed_commandBuffer, buffer, offset);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdDispatchIndirect(&m_pool, snapshotApiCallInfo, packet,
@@ -7004,8 +7317,10 @@
(unsigned long long)srcBuffer, (unsigned long long)dstBuffer,
(unsigned long long)regionCount, (unsigned long long)pRegions);
}
- vk->vkCmdCopyBuffer(unboxed_commandBuffer, srcBuffer, dstBuffer, regionCount,
- pRegions);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdCopyBuffer(unboxed_commandBuffer, srcBuffer, dstBuffer, regionCount,
+ pRegions);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdCopyBuffer(&m_pool, snapshotApiCallInfo, packet,
@@ -7032,6 +7347,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -7065,9 +7381,11 @@
(unsigned long long)dstImage, (unsigned long long)dstImageLayout,
(unsigned long long)regionCount, (unsigned long long)pRegions);
}
- m_state->on_vkCmdCopyImage(&m_pool, snapshotApiCallInfo, commandBuffer, srcImage,
- srcImageLayout, dstImage, dstImageLayout, regionCount,
- pRegions);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdCopyImage(&m_pool, snapshotApiCallInfo, commandBuffer,
+ srcImage, srcImageLayout, dstImage, dstImageLayout,
+ regionCount, pRegions);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdCopyImage(
@@ -7134,8 +7452,10 @@
(unsigned long long)regionCount, (unsigned long long)pRegions,
(unsigned long long)filter);
}
- vk->vkCmdBlitImage(unboxed_commandBuffer, srcImage, srcImageLayout, dstImage,
- dstImageLayout, regionCount, pRegions, filter);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBlitImage(unboxed_commandBuffer, srcImage, srcImageLayout, dstImage,
+ dstImageLayout, regionCount, pRegions, filter);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBlitImage(
@@ -7162,6 +7482,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -7196,9 +7517,11 @@
(unsigned long long)dstImageLayout, (unsigned long long)regionCount,
(unsigned long long)pRegions);
}
- m_state->on_vkCmdCopyBufferToImage(&m_pool, snapshotApiCallInfo, commandBuffer,
- srcBuffer, dstImage, dstImageLayout, regionCount,
- pRegions, context);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdCopyBufferToImage(&m_pool, snapshotApiCallInfo, commandBuffer,
+ srcBuffer, dstImage, dstImageLayout,
+ regionCount, pRegions, context);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdCopyBufferToImage(
@@ -7225,6 +7548,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -7259,9 +7583,11 @@
(unsigned long long)dstBuffer, (unsigned long long)regionCount,
(unsigned long long)pRegions);
}
- m_state->on_vkCmdCopyImageToBuffer(&m_pool, snapshotApiCallInfo, commandBuffer,
- srcImage, srcImageLayout, dstBuffer, regionCount,
- pRegions);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdCopyImageToBuffer(&m_pool, snapshotApiCallInfo, commandBuffer,
+ srcImage, srcImageLayout, dstBuffer,
+ regionCount, pRegions);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdCopyImageToBuffer(
@@ -7309,7 +7635,10 @@
(unsigned long long)dstOffset, (unsigned long long)dataSize,
(unsigned long long)pData);
}
- vk->vkCmdUpdateBuffer(unboxed_commandBuffer, dstBuffer, dstOffset, dataSize, pData);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdUpdateBuffer(unboxed_commandBuffer, dstBuffer, dstOffset, dataSize,
+ pData);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdUpdateBuffer(&m_pool, snapshotApiCallInfo, packet,
@@ -7355,7 +7684,9 @@
(unsigned long long)dstBuffer, (unsigned long long)dstOffset,
(unsigned long long)size, (unsigned long long)data);
}
- vk->vkCmdFillBuffer(unboxed_commandBuffer, dstBuffer, dstOffset, size, data);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdFillBuffer(unboxed_commandBuffer, dstBuffer, dstOffset, size, data);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdFillBuffer(&m_pool, snapshotApiCallInfo, packet,
@@ -7420,8 +7751,10 @@
(unsigned long long)imageLayout, (unsigned long long)pColor,
(unsigned long long)rangeCount, (unsigned long long)pRanges);
}
- vk->vkCmdClearColorImage(unboxed_commandBuffer, image, imageLayout, pColor,
- rangeCount, pRanges);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdClearColorImage(unboxed_commandBuffer, image, imageLayout, pColor,
+ rangeCount, pRanges);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdClearColorImage(
@@ -7488,8 +7821,10 @@
(unsigned long long)imageLayout, (unsigned long long)pDepthStencil,
(unsigned long long)rangeCount, (unsigned long long)pRanges);
}
- vk->vkCmdClearDepthStencilImage(unboxed_commandBuffer, image, imageLayout,
- pDepthStencil, rangeCount, pRanges);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdClearDepthStencilImage(unboxed_commandBuffer, image, imageLayout,
+ pDepthStencil, rangeCount, pRanges);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdClearDepthStencilImage(
@@ -7553,8 +7888,10 @@
(unsigned long long)attachmentCount, (unsigned long long)pAttachments,
(unsigned long long)rectCount, (unsigned long long)pRects);
}
- vk->vkCmdClearAttachments(unboxed_commandBuffer, attachmentCount, pAttachments,
- rectCount, pRects);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdClearAttachments(unboxed_commandBuffer, attachmentCount, pAttachments,
+ rectCount, pRects);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdClearAttachments(
@@ -7620,8 +7957,10 @@
(unsigned long long)dstImage, (unsigned long long)dstImageLayout,
(unsigned long long)regionCount, (unsigned long long)pRegions);
}
- vk->vkCmdResolveImage(unboxed_commandBuffer, srcImage, srcImageLayout, dstImage,
- dstImageLayout, regionCount, pRegions);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResolveImage(unboxed_commandBuffer, srcImage, srcImageLayout, dstImage,
+ dstImageLayout, regionCount, pRegions);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdResolveImage(
@@ -7659,7 +7998,9 @@
ioStream, (unsigned long long)commandBuffer, (unsigned long long)event,
(unsigned long long)stageMask);
}
- vk->vkCmdSetEvent(unboxed_commandBuffer, event, stageMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetEvent(unboxed_commandBuffer, event, stageMask);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetEvent(&m_pool, snapshotApiCallInfo, packet,
@@ -7697,7 +8038,9 @@
ioStream, (unsigned long long)commandBuffer, (unsigned long long)event,
(unsigned long long)stageMask);
}
- vk->vkCmdResetEvent(unboxed_commandBuffer, event, stageMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResetEvent(unboxed_commandBuffer, event, stageMask);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdResetEvent(&m_pool, snapshotApiCallInfo, packet,
@@ -7812,10 +8155,12 @@
(unsigned long long)imageMemoryBarrierCount,
(unsigned long long)pImageMemoryBarriers);
}
- vk->vkCmdWaitEvents(unboxed_commandBuffer, eventCount, pEvents, srcStageMask,
- dstStageMask, memoryBarrierCount, pMemoryBarriers,
- bufferMemoryBarrierCount, pBufferMemoryBarriers,
- imageMemoryBarrierCount, pImageMemoryBarriers);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWaitEvents(unboxed_commandBuffer, eventCount, pEvents, srcStageMask,
+ dstStageMask, memoryBarrierCount, pMemoryBarriers,
+ bufferMemoryBarrierCount, pBufferMemoryBarriers,
+ imageMemoryBarrierCount, pImageMemoryBarriers);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdWaitEvents(
@@ -7848,6 +8193,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
memcpy((VkPipelineStageFlags*)&srcStageMask, *readStreamPtrPtr,
sizeof(VkPipelineStageFlags));
*readStreamPtrPtr += sizeof(VkPipelineStageFlags);
@@ -7918,10 +8264,13 @@
(unsigned long long)imageMemoryBarrierCount,
(unsigned long long)pImageMemoryBarriers);
}
- m_state->on_vkCmdPipelineBarrier(
- &m_pool, snapshotApiCallInfo, commandBuffer, srcStageMask, dstStageMask,
- dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount,
- pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdPipelineBarrier(
+ &m_pool, snapshotApiCallInfo, commandBuffer, srcStageMask, dstStageMask,
+ dependencyFlags, memoryBarrierCount, pMemoryBarriers,
+ bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount,
+ pImageMemoryBarriers);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdPipelineBarrier(
@@ -7967,7 +8316,9 @@
ioStream, (unsigned long long)commandBuffer, (unsigned long long)queryPool,
(unsigned long long)query, (unsigned long long)flags);
}
- vk->vkCmdBeginQuery(unboxed_commandBuffer, queryPool, query, flags);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBeginQuery(unboxed_commandBuffer, queryPool, query, flags);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBeginQuery(&m_pool, snapshotApiCallInfo, packet,
@@ -8005,7 +8356,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)queryPool, (unsigned long long)query);
}
- vk->vkCmdEndQuery(unboxed_commandBuffer, queryPool, query);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndQuery(unboxed_commandBuffer, queryPool, query);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdEndQuery(&m_pool, snapshotApiCallInfo, packet,
@@ -8048,7 +8401,10 @@
(unsigned long long)queryPool, (unsigned long long)firstQuery,
(unsigned long long)queryCount);
}
- vk->vkCmdResetQueryPool(unboxed_commandBuffer, queryPool, firstQuery, queryCount);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResetQueryPool(unboxed_commandBuffer, queryPool, firstQuery,
+ queryCount);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdResetQueryPool(&m_pool, snapshotApiCallInfo, packet,
@@ -8093,7 +8449,9 @@
(unsigned long long)pipelineStage, (unsigned long long)queryPool,
(unsigned long long)query);
}
- vk->vkCmdWriteTimestamp(unboxed_commandBuffer, pipelineStage, queryPool, query);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWriteTimestamp(unboxed_commandBuffer, pipelineStage, queryPool, query);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdWriteTimestamp(&m_pool, snapshotApiCallInfo, packet,
@@ -8154,8 +8512,10 @@
(unsigned long long)dstOffset, (unsigned long long)stride,
(unsigned long long)flags);
}
- vk->vkCmdCopyQueryPoolResults(unboxed_commandBuffer, queryPool, firstQuery,
- queryCount, dstBuffer, dstOffset, stride, flags);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdCopyQueryPoolResults(unboxed_commandBuffer, queryPool, firstQuery,
+ queryCount, dstBuffer, dstOffset, stride, flags);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdCopyQueryPoolResults(
@@ -8208,8 +8568,10 @@
(unsigned long long)stageFlags, (unsigned long long)offset,
(unsigned long long)size, (unsigned long long)pValues);
}
- vk->vkCmdPushConstants(unboxed_commandBuffer, layout, stageFlags, offset, size,
- pValues);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdPushConstants(unboxed_commandBuffer, layout, stageFlags, offset, size,
+ pValues);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdPushConstants(&m_pool, snapshotApiCallInfo, packet,
@@ -8233,6 +8595,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
vkReadStream->alloc((void**)&pRenderPassBegin, sizeof(const VkRenderPassBeginInfo));
reservedunmarshal_VkRenderPassBeginInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkRenderPassBeginInfo*)(pRenderPassBegin),
@@ -8248,8 +8611,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pRenderPassBegin, (unsigned long long)contents);
}
- m_state->on_vkCmdBeginRenderPass(&m_pool, snapshotApiCallInfo, commandBuffer,
- pRenderPassBegin, contents);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdBeginRenderPass(&m_pool, snapshotApiCallInfo, commandBuffer,
+ pRenderPassBegin, contents);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBeginRenderPass(&m_pool, snapshotApiCallInfo, packet,
@@ -8281,7 +8646,9 @@
fprintf(stderr, "stream %p: call vkCmdNextSubpass 0x%llx 0x%llx \n", ioStream,
(unsigned long long)commandBuffer, (unsigned long long)contents);
}
- vk->vkCmdNextSubpass(unboxed_commandBuffer, contents);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdNextSubpass(unboxed_commandBuffer, contents);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdNextSubpass(&m_pool, snapshotApiCallInfo, packet,
@@ -8309,7 +8676,9 @@
fprintf(stderr, "stream %p: call vkCmdEndRenderPass 0x%llx \n", ioStream,
(unsigned long long)commandBuffer);
}
- vk->vkCmdEndRenderPass(unboxed_commandBuffer);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndRenderPass(unboxed_commandBuffer);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdEndRenderPass(&m_pool, snapshotApiCallInfo, packet,
@@ -8332,6 +8701,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
memcpy((uint32_t*)&commandBufferCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pCommandBuffers,
@@ -8353,8 +8723,10 @@
(unsigned long long)commandBufferCount,
(unsigned long long)pCommandBuffers);
}
- m_state->on_vkCmdExecuteCommands(&m_pool, snapshotApiCallInfo, commandBuffer,
- commandBufferCount, pCommandBuffers);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdExecuteCommands(&m_pool, snapshotApiCallInfo, commandBuffer,
+ commandBufferCount, pCommandBuffers);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdExecuteCommands(&m_pool, snapshotApiCallInfo, packet,
@@ -8381,7 +8753,7 @@
fprintf(stderr, "stream %p: call vkEnumerateInstanceVersion 0x%llx \n",
ioStream, (unsigned long long)pApiVersion);
}
- VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
+ VkResult vkEnumerateInstanceVersion_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
vkEnumerateInstanceVersion_VkResult_return = m_state->on_vkEnumerateInstanceVersion(
&m_pool, snapshotApiCallInfo, pApiVersion);
if ((vkEnumerateInstanceVersion_VkResult_return) == VK_ERROR_DEVICE_LOST)
@@ -8413,6 +8785,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
memcpy((uint32_t*)&bindInfoCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pBindInfos,
@@ -8433,9 +8806,11 @@
ioStream, (unsigned long long)device, (unsigned long long)bindInfoCount,
(unsigned long long)pBindInfos);
}
- VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
- vkBindBufferMemory2_VkResult_return = m_state->on_vkBindBufferMemory2(
- &m_pool, snapshotApiCallInfo, device, bindInfoCount, pBindInfos);
+ VkResult vkBindBufferMemory2_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkBindBufferMemory2_VkResult_return = m_state->on_vkBindBufferMemory2(
+ &m_pool, snapshotApiCallInfo, device, bindInfoCount, pBindInfos);
+ }
if ((vkBindBufferMemory2_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkBindBufferMemory2_VkResult_return, opcode, context);
@@ -8463,6 +8838,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
memcpy((uint32_t*)&bindInfoCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pBindInfos,
@@ -8483,9 +8859,11 @@
ioStream, (unsigned long long)device, (unsigned long long)bindInfoCount,
(unsigned long long)pBindInfos);
}
- VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
- vkBindImageMemory2_VkResult_return = m_state->on_vkBindImageMemory2(
- &m_pool, snapshotApiCallInfo, device, bindInfoCount, pBindInfos);
+ VkResult vkBindImageMemory2_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkBindImageMemory2_VkResult_return = m_state->on_vkBindImageMemory2(
+ &m_pool, snapshotApiCallInfo, device, bindInfoCount, pBindInfos);
+ }
if ((vkBindImageMemory2_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkBindImageMemory2_VkResult_return, opcode, context);
@@ -8539,8 +8917,11 @@
(unsigned long long)remoteDeviceIndex,
(unsigned long long)pPeerMemoryFeatures);
}
- vk->vkGetDeviceGroupPeerMemoryFeatures(unboxed_device, heapIndex, localDeviceIndex,
- remoteDeviceIndex, pPeerMemoryFeatures);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetDeviceGroupPeerMemoryFeatures(unboxed_device, heapIndex,
+ localDeviceIndex, remoteDeviceIndex,
+ pPeerMemoryFeatures);
+ }
vkStream->unsetHandleMapping();
vkStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures,
sizeof(VkPeerMemoryFeatureFlags));
@@ -8575,7 +8956,9 @@
fprintf(stderr, "stream %p: call vkCmdSetDeviceMask 0x%llx 0x%llx \n", ioStream,
(unsigned long long)commandBuffer, (unsigned long long)deviceMask);
}
- vk->vkCmdSetDeviceMask(unboxed_commandBuffer, deviceMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDeviceMask(unboxed_commandBuffer, deviceMask);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetDeviceMask(&m_pool, snapshotApiCallInfo, packet,
@@ -8626,8 +9009,10 @@
(unsigned long long)baseGroupZ, (unsigned long long)groupCountX,
(unsigned long long)groupCountY, (unsigned long long)groupCountZ);
}
- vk->vkCmdDispatchBase(unboxed_commandBuffer, baseGroupX, baseGroupY, baseGroupZ,
- groupCountX, groupCountY, groupCountZ);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDispatchBase(unboxed_commandBuffer, baseGroupX, baseGroupY, baseGroupZ,
+ groupCountX, groupCountY, groupCountZ);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdDispatchBase(
@@ -8650,6 +9035,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkInstance*)&instance = (VkInstance)(VkInstance)((VkInstance)(*&cgen_var_0));
+ auto vk = dispatch_VkInstance(instance);
// Begin manual dispatchable handle unboxing for pPhysicalDeviceGroupCount;
vkReadStream->unsetHandleMapping();
// WARNING PTR CHECK
@@ -8698,11 +9084,14 @@
(unsigned long long)pPhysicalDeviceGroupCount,
(unsigned long long)pPhysicalDeviceGroupProperties);
}
- VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
- vkEnumeratePhysicalDeviceGroups_VkResult_return =
- m_state->on_vkEnumeratePhysicalDeviceGroups(&m_pool, snapshotApiCallInfo,
- instance, pPhysicalDeviceGroupCount,
- pPhysicalDeviceGroupProperties);
+ VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkEnumeratePhysicalDeviceGroups_VkResult_return =
+ m_state->on_vkEnumeratePhysicalDeviceGroups(
+ &m_pool, snapshotApiCallInfo, instance, pPhysicalDeviceGroupCount,
+ pPhysicalDeviceGroupProperties);
+ }
if ((vkEnumeratePhysicalDeviceGroups_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkEnumeratePhysicalDeviceGroups_VkResult_return,
@@ -8761,6 +9150,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pInfo, sizeof(const VkImageMemoryRequirementsInfo2));
reservedunmarshal_VkImageMemoryRequirementsInfo2(
vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
@@ -8785,8 +9175,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pInfo,
(unsigned long long)pMemoryRequirements);
}
- m_state->on_vkGetImageMemoryRequirements2(&m_pool, snapshotApiCallInfo, device,
- pInfo, pMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetImageMemoryRequirements2(&m_pool, snapshotApiCallInfo, device,
+ pInfo, pMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
if (pMemoryRequirements) {
transform_fromhost_VkMemoryRequirements2(
@@ -8816,6 +9208,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pInfo, sizeof(const VkBufferMemoryRequirementsInfo2));
reservedunmarshal_VkBufferMemoryRequirementsInfo2(
vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
@@ -8841,8 +9234,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pInfo,
(unsigned long long)pMemoryRequirements);
}
- m_state->on_vkGetBufferMemoryRequirements2(&m_pool, snapshotApiCallInfo, device,
- pInfo, pMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetBufferMemoryRequirements2(&m_pool, snapshotApiCallInfo, device,
+ pInfo, pMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
if (pMemoryRequirements) {
transform_fromhost_VkMemoryRequirements2(
@@ -8933,9 +9328,11 @@
(unsigned long long)pSparseMemoryRequirementCount,
(unsigned long long)pSparseMemoryRequirements);
}
- vk->vkGetImageSparseMemoryRequirements2(unboxed_device, pInfo,
- pSparseMemoryRequirementCount,
- pSparseMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetImageSparseMemoryRequirements2(unboxed_device, pInfo,
+ pSparseMemoryRequirementCount,
+ pSparseMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
// WARNING PTR CHECK
uint64_t cgen_var_3 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
@@ -8988,6 +9385,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
// Begin manual dispatchable handle unboxing for pFeatures;
vkReadStream->unsetHandleMapping();
vkReadStream->alloc((void**)&pFeatures, sizeof(VkPhysicalDeviceFeatures2));
@@ -9003,8 +9401,10 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)pFeatures);
}
- m_state->on_vkGetPhysicalDeviceFeatures2(&m_pool, snapshotApiCallInfo,
- physicalDevice, pFeatures);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceFeatures2(&m_pool, snapshotApiCallInfo,
+ physicalDevice, pFeatures);
+ }
vkStream->unsetHandleMapping();
if (pFeatures) {
transform_fromhost_VkPhysicalDeviceFeatures2(
@@ -9033,6 +9433,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
// Begin manual dispatchable handle unboxing for pProperties;
vkReadStream->unsetHandleMapping();
vkReadStream->alloc((void**)&pProperties, sizeof(VkPhysicalDeviceProperties2));
@@ -9049,8 +9450,10 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)pProperties);
}
- m_state->on_vkGetPhysicalDeviceProperties2(&m_pool, snapshotApiCallInfo,
- physicalDevice, pProperties);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceProperties2(&m_pool, snapshotApiCallInfo,
+ physicalDevice, pProperties);
+ }
vkStream->unsetHandleMapping();
if (pProperties) {
transform_fromhost_VkPhysicalDeviceProperties2(
@@ -9081,6 +9484,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
memcpy((VkFormat*)&format, *readStreamPtrPtr, sizeof(VkFormat));
*readStreamPtrPtr += sizeof(VkFormat);
// Begin manual dispatchable handle unboxing for pFormatProperties;
@@ -9100,8 +9504,10 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)format, (unsigned long long)pFormatProperties);
}
- m_state->on_vkGetPhysicalDeviceFormatProperties2(
- &m_pool, snapshotApiCallInfo, physicalDevice, format, pFormatProperties);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceFormatProperties2(
+ &m_pool, snapshotApiCallInfo, physicalDevice, format, pFormatProperties);
+ }
vkStream->unsetHandleMapping();
if (pFormatProperties) {
transform_fromhost_VkFormatProperties2(
@@ -9132,6 +9538,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
vkReadStream->alloc((void**)&pImageFormatInfo,
sizeof(const VkPhysicalDeviceImageFormatInfo2));
reservedunmarshal_VkPhysicalDeviceImageFormatInfo2(
@@ -9160,11 +9567,14 @@
(unsigned long long)pImageFormatInfo,
(unsigned long long)pImageFormatProperties);
}
- VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
- vkGetPhysicalDeviceImageFormatProperties2_VkResult_return =
- m_state->on_vkGetPhysicalDeviceImageFormatProperties2(
- &m_pool, snapshotApiCallInfo, physicalDevice, pImageFormatInfo,
- pImageFormatProperties);
+ VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetPhysicalDeviceImageFormatProperties2_VkResult_return =
+ m_state->on_vkGetPhysicalDeviceImageFormatProperties2(
+ &m_pool, snapshotApiCallInfo, physicalDevice, pImageFormatInfo,
+ pImageFormatProperties);
+ }
if ((vkGetPhysicalDeviceImageFormatProperties2_VkResult_return) ==
VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
@@ -9204,6 +9614,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
// Begin manual dispatchable handle unboxing for pQueueFamilyPropertyCount;
vkReadStream->unsetHandleMapping();
// WARNING PTR CHECK
@@ -9249,9 +9660,11 @@
(unsigned long long)pQueueFamilyPropertyCount,
(unsigned long long)pQueueFamilyProperties);
}
- m_state->on_vkGetPhysicalDeviceQueueFamilyProperties2(
- &m_pool, snapshotApiCallInfo, physicalDevice, pQueueFamilyPropertyCount,
- pQueueFamilyProperties);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceQueueFamilyProperties2(
+ &m_pool, snapshotApiCallInfo, physicalDevice, pQueueFamilyPropertyCount,
+ pQueueFamilyProperties);
+ }
vkStream->unsetHandleMapping();
// WARNING PTR CHECK
uint64_t cgen_var_3 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
@@ -9301,6 +9714,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
// Begin manual dispatchable handle unboxing for pMemoryProperties;
vkReadStream->unsetHandleMapping();
vkReadStream->alloc((void**)&pMemoryProperties,
@@ -9318,8 +9732,10 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)pMemoryProperties);
}
- m_state->on_vkGetPhysicalDeviceMemoryProperties2(&m_pool, snapshotApiCallInfo,
- physicalDevice, pMemoryProperties);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceMemoryProperties2(
+ &m_pool, snapshotApiCallInfo, physicalDevice, pMemoryProperties);
+ }
vkStream->unsetHandleMapping();
if (pMemoryProperties) {
transform_fromhost_VkPhysicalDeviceMemoryProperties2(
@@ -9407,8 +9823,10 @@
(unsigned long long)pFormatInfo, (unsigned long long)pPropertyCount,
(unsigned long long)pProperties);
}
- vk->vkGetPhysicalDeviceSparseImageFormatProperties2(
- unboxed_physicalDevice, pFormatInfo, pPropertyCount, pProperties);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetPhysicalDeviceSparseImageFormatProperties2(
+ unboxed_physicalDevice, pFormatInfo, pPropertyCount, pProperties);
+ }
vkStream->unsetHandleMapping();
// WARNING PTR CHECK
uint64_t cgen_var_3 = (uint64_t)(uintptr_t)pPropertyCount;
@@ -9474,7 +9892,9 @@
ioStream, (unsigned long long)device, (unsigned long long)commandPool,
(unsigned long long)flags);
}
- vk->vkTrimCommandPool(unboxed_device, commandPool, flags);
+ if (CC_LIKELY(vk)) {
+ vk->vkTrimCommandPool(unboxed_device, commandPool, flags);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkTrimCommandPool(&m_pool, snapshotApiCallInfo, packet,
@@ -9496,6 +9916,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pQueueInfo, sizeof(const VkDeviceQueueInfo2));
reservedunmarshal_VkDeviceQueueInfo2(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkDeviceQueueInfo2*)(pQueueInfo),
@@ -9515,8 +9936,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pQueueInfo,
(unsigned long long)pQueue);
}
- m_state->on_vkGetDeviceQueue2(&m_pool, snapshotApiCallInfo, device, pQueueInfo,
- pQueue);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetDeviceQueue2(&m_pool, snapshotApiCallInfo, device, pQueueInfo,
+ pQueue);
+ }
vkStream->unsetHandleMapping();
uint64_t cgen_var_2;
static_assert(8 == sizeof(VkQueue),
@@ -9545,6 +9968,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo,
sizeof(const VkSamplerYcbcrConversionCreateInfo));
reservedunmarshal_VkSamplerYcbcrConversionCreateInfo(
@@ -9584,11 +10008,14 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pYcbcrConversion);
}
- VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
- vkCreateSamplerYcbcrConversion_VkResult_return =
- m_state->on_vkCreateSamplerYcbcrConversion(&m_pool, snapshotApiCallInfo, device,
- pCreateInfo, pAllocator,
- pYcbcrConversion);
+ VkResult vkCreateSamplerYcbcrConversion_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateSamplerYcbcrConversion_VkResult_return =
+ m_state->on_vkCreateSamplerYcbcrConversion(&m_pool, snapshotApiCallInfo,
+ device, pCreateInfo, pAllocator,
+ pYcbcrConversion);
+ }
if ((vkCreateSamplerYcbcrConversion_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateSamplerYcbcrConversion_VkResult_return, opcode,
@@ -9629,6 +10056,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for ycbcrConversion;
VkSamplerYcbcrConversion boxed_ycbcrConversion_preserve;
uint64_t cgen_var_1;
@@ -9660,8 +10088,10 @@
ioStream, (unsigned long long)device, (unsigned long long)ycbcrConversion,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroySamplerYcbcrConversion(&m_pool, snapshotApiCallInfo, device,
- ycbcrConversion, pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroySamplerYcbcrConversion(
+ &m_pool, snapshotApiCallInfo, device, ycbcrConversion, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroySamplerYcbcrConversion(
@@ -9686,6 +10116,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo,
sizeof(const VkDescriptorUpdateTemplateCreateInfo));
reservedunmarshal_VkDescriptorUpdateTemplateCreateInfo(
@@ -9727,11 +10158,14 @@
(unsigned long long)pAllocator,
(unsigned long long)pDescriptorUpdateTemplate);
}
- VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
- vkCreateDescriptorUpdateTemplate_VkResult_return =
- m_state->on_vkCreateDescriptorUpdateTemplate(&m_pool, snapshotApiCallInfo,
- device, pCreateInfo, pAllocator,
- pDescriptorUpdateTemplate);
+ VkResult vkCreateDescriptorUpdateTemplate_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateDescriptorUpdateTemplate_VkResult_return =
+ m_state->on_vkCreateDescriptorUpdateTemplate(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator,
+ pDescriptorUpdateTemplate);
+ }
if ((vkCreateDescriptorUpdateTemplate_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateDescriptorUpdateTemplate_VkResult_return,
@@ -9773,6 +10207,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for
// descriptorUpdateTemplate;
VkDescriptorUpdateTemplate boxed_descriptorUpdateTemplate_preserve;
@@ -9807,8 +10242,10 @@
(unsigned long long)descriptorUpdateTemplate,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroyDescriptorUpdateTemplate(&m_pool, snapshotApiCallInfo, device,
- descriptorUpdateTemplate, pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyDescriptorUpdateTemplate(
+ &m_pool, snapshotApiCallInfo, device, descriptorUpdateTemplate, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyDescriptorUpdateTemplate(
@@ -9864,8 +10301,10 @@
(unsigned long long)descriptorUpdateTemplate,
(unsigned long long)pData);
}
- vk->vkUpdateDescriptorSetWithTemplate(unboxed_device, descriptorSet,
- descriptorUpdateTemplate, pData);
+ if (CC_LIKELY(vk)) {
+ vk->vkUpdateDescriptorSetWithTemplate(unboxed_device, descriptorSet,
+ descriptorUpdateTemplate, pData);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkUpdateDescriptorSetWithTemplate(
@@ -9924,8 +10363,10 @@
(unsigned long long)pExternalBufferInfo,
(unsigned long long)pExternalBufferProperties);
}
- vk->vkGetPhysicalDeviceExternalBufferProperties(
- unboxed_physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetPhysicalDeviceExternalBufferProperties(
+ unboxed_physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
+ }
vkStream->unsetHandleMapping();
if (pExternalBufferProperties) {
m_state->transformImpl_VkExternalBufferProperties_fromhost(
@@ -9990,8 +10431,10 @@
(unsigned long long)pExternalFenceInfo,
(unsigned long long)pExternalFenceProperties);
}
- vk->vkGetPhysicalDeviceExternalFenceProperties(
- unboxed_physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetPhysicalDeviceExternalFenceProperties(
+ unboxed_physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
+ }
vkStream->unsetHandleMapping();
if (pExternalFenceProperties) {
transform_fromhost_VkExternalFenceProperties(
@@ -10023,6 +10466,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
vkReadStream->alloc((void**)&pExternalSemaphoreInfo,
sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
reservedunmarshal_VkPhysicalDeviceExternalSemaphoreInfo(
@@ -10053,9 +10497,11 @@
(unsigned long long)pExternalSemaphoreInfo,
(unsigned long long)pExternalSemaphoreProperties);
}
- m_state->on_vkGetPhysicalDeviceExternalSemaphoreProperties(
- &m_pool, snapshotApiCallInfo, physicalDevice, pExternalSemaphoreInfo,
- pExternalSemaphoreProperties);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceExternalSemaphoreProperties(
+ &m_pool, snapshotApiCallInfo, physicalDevice, pExternalSemaphoreInfo,
+ pExternalSemaphoreProperties);
+ }
vkStream->unsetHandleMapping();
if (pExternalSemaphoreProperties) {
transform_fromhost_VkExternalSemaphoreProperties(
@@ -10115,7 +10561,9 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pSupport);
}
- vk->vkGetDescriptorSetLayoutSupport(unboxed_device, pCreateInfo, pSupport);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetDescriptorSetLayoutSupport(unboxed_device, pCreateInfo, pSupport);
+ }
vkStream->unsetHandleMapping();
if (pSupport) {
transform_fromhost_VkDescriptorSetLayoutSupport(
@@ -10180,8 +10628,10 @@
(unsigned long long)countBufferOffset, (unsigned long long)maxDrawCount,
(unsigned long long)stride);
}
- vk->vkCmdDrawIndirectCount(unboxed_commandBuffer, buffer, offset, countBuffer,
- countBufferOffset, maxDrawCount, stride);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDrawIndirectCount(unboxed_commandBuffer, buffer, offset, countBuffer,
+ countBufferOffset, maxDrawCount, stride);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdDrawIndirectCount(
@@ -10237,9 +10687,11 @@
(unsigned long long)countBufferOffset, (unsigned long long)maxDrawCount,
(unsigned long long)stride);
}
- vk->vkCmdDrawIndexedIndirectCount(unboxed_commandBuffer, buffer, offset,
- countBuffer, countBufferOffset, maxDrawCount,
- stride);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDrawIndexedIndirectCount(unboxed_commandBuffer, buffer, offset,
+ countBuffer, countBufferOffset, maxDrawCount,
+ stride);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdDrawIndexedIndirectCount(
@@ -10263,6 +10715,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkRenderPassCreateInfo2));
reservedunmarshal_VkRenderPassCreateInfo2(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkRenderPassCreateInfo2*)(pCreateInfo),
@@ -10299,9 +10752,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pRenderPass);
}
- VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
- vkCreateRenderPass2_VkResult_return = m_state->on_vkCreateRenderPass2(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pRenderPass);
+ VkResult vkCreateRenderPass2_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateRenderPass2_VkResult_return = m_state->on_vkCreateRenderPass2(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pRenderPass);
+ }
if ((vkCreateRenderPass2_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateRenderPass2_VkResult_return, opcode, context);
@@ -10340,6 +10795,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
vkReadStream->alloc((void**)&pRenderPassBegin, sizeof(const VkRenderPassBeginInfo));
reservedunmarshal_VkRenderPassBeginInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkRenderPassBeginInfo*)(pRenderPassBegin),
@@ -10362,8 +10818,10 @@
(unsigned long long)pRenderPassBegin,
(unsigned long long)pSubpassBeginInfo);
}
- m_state->on_vkCmdBeginRenderPass2(&m_pool, snapshotApiCallInfo, commandBuffer,
- pRenderPassBegin, pSubpassBeginInfo);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdBeginRenderPass2(&m_pool, snapshotApiCallInfo, commandBuffer,
+ pRenderPassBegin, pSubpassBeginInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBeginRenderPass2(&m_pool, snapshotApiCallInfo, packet,
@@ -10412,7 +10870,10 @@
(unsigned long long)pSubpassBeginInfo,
(unsigned long long)pSubpassEndInfo);
}
- vk->vkCmdNextSubpass2(unboxed_commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdNextSubpass2(unboxed_commandBuffer, pSubpassBeginInfo,
+ pSubpassEndInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdNextSubpass2(&m_pool, snapshotApiCallInfo, packet,
@@ -10451,7 +10912,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pSubpassEndInfo);
}
- vk->vkCmdEndRenderPass2(unboxed_commandBuffer, pSubpassEndInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndRenderPass2(unboxed_commandBuffer, pSubpassEndInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdEndRenderPass2(&m_pool, snapshotApiCallInfo, packet,
@@ -10493,7 +10956,9 @@
ioStream, (unsigned long long)device, (unsigned long long)queryPool,
(unsigned long long)firstQuery, (unsigned long long)queryCount);
}
- vk->vkResetQueryPool(unboxed_device, queryPool, firstQuery, queryCount);
+ if (CC_LIKELY(vk)) {
+ vk->vkResetQueryPool(unboxed_device, queryPool, firstQuery, queryCount);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkResetQueryPool(&m_pool, snapshotApiCallInfo, packet,
@@ -10535,9 +11000,11 @@
ioStream, (unsigned long long)device, (unsigned long long)semaphore,
(unsigned long long)pValue);
}
- VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
- vkGetSemaphoreCounterValue_VkResult_return =
- vk->vkGetSemaphoreCounterValue(unboxed_device, semaphore, pValue);
+ VkResult vkGetSemaphoreCounterValue_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetSemaphoreCounterValue_VkResult_return =
+ vk->vkGetSemaphoreCounterValue(unboxed_device, semaphore, pValue);
+ }
if ((vkGetSemaphoreCounterValue_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetSemaphoreCounterValue_VkResult_return, opcode,
@@ -10567,6 +11034,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pWaitInfo, sizeof(const VkSemaphoreWaitInfo));
reservedunmarshal_VkSemaphoreWaitInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkSemaphoreWaitInfo*)(pWaitInfo),
@@ -10584,9 +11052,11 @@
}
if (m_queueSubmitWithCommandsEnabled)
seqnoPtr->fetch_add(1, std::memory_order_seq_cst);
- VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
- vkWaitSemaphores_VkResult_return = m_state->on_vkWaitSemaphores(
- &m_pool, snapshotApiCallInfo, device, pWaitInfo, timeout);
+ VkResult vkWaitSemaphores_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkWaitSemaphores_VkResult_return = m_state->on_vkWaitSemaphores(
+ &m_pool, snapshotApiCallInfo, device, pWaitInfo, timeout);
+ }
if ((vkWaitSemaphores_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkWaitSemaphores_VkResult_return, opcode, context);
@@ -10611,6 +11081,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pSignalInfo, sizeof(const VkSemaphoreSignalInfo));
reservedunmarshal_VkSemaphoreSignalInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkSemaphoreSignalInfo*)(pSignalInfo),
@@ -10623,9 +11094,11 @@
fprintf(stderr, "stream %p: call vkSignalSemaphore 0x%llx 0x%llx \n", ioStream,
(unsigned long long)device, (unsigned long long)pSignalInfo);
}
- VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
- vkSignalSemaphore_VkResult_return = m_state->on_vkSignalSemaphore(
- &m_pool, snapshotApiCallInfo, device, pSignalInfo);
+ VkResult vkSignalSemaphore_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkSignalSemaphore_VkResult_return = m_state->on_vkSignalSemaphore(
+ &m_pool, snapshotApiCallInfo, device, pSignalInfo);
+ }
if ((vkSignalSemaphore_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkSignalSemaphore_VkResult_return, opcode, context);
@@ -10669,8 +11142,10 @@
}
VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return =
(VkDeviceAddress)0;
- vkGetBufferDeviceAddress_VkDeviceAddress_return =
- vk->vkGetBufferDeviceAddress(unboxed_device, pInfo);
+ if (CC_LIKELY(vk)) {
+ vkGetBufferDeviceAddress_VkDeviceAddress_return =
+ vk->vkGetBufferDeviceAddress(unboxed_device, pInfo);
+ }
vkStream->unsetHandleMapping();
vkStream->write(&vkGetBufferDeviceAddress_VkDeviceAddress_return,
sizeof(VkDeviceAddress));
@@ -10712,8 +11187,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pInfo);
}
uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
- vkGetBufferOpaqueCaptureAddress_uint64_t_return =
- vk->vkGetBufferOpaqueCaptureAddress(unboxed_device, pInfo);
+ if (CC_LIKELY(vk)) {
+ vkGetBufferOpaqueCaptureAddress_uint64_t_return =
+ vk->vkGetBufferOpaqueCaptureAddress(unboxed_device, pInfo);
+ }
vkStream->unsetHandleMapping();
vkStream->write(&vkGetBufferOpaqueCaptureAddress_uint64_t_return, sizeof(uint64_t));
vkStream->commitWrite();
@@ -10756,8 +11233,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pInfo);
}
uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
- vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return =
- vk->vkGetDeviceMemoryOpaqueCaptureAddress(unboxed_device, pInfo);
+ if (CC_LIKELY(vk)) {
+ vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return =
+ vk->vkGetDeviceMemoryOpaqueCaptureAddress(unboxed_device, pInfo);
+ }
vkStream->unsetHandleMapping();
vkStream->write(&vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return,
sizeof(uint64_t));
@@ -10831,10 +11310,13 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)pToolCount, (unsigned long long)pToolProperties);
}
- VkResult vkGetPhysicalDeviceToolProperties_VkResult_return = (VkResult)0;
- vkGetPhysicalDeviceToolProperties_VkResult_return =
- vk->vkGetPhysicalDeviceToolProperties(unboxed_physicalDevice, pToolCount,
- pToolProperties);
+ VkResult vkGetPhysicalDeviceToolProperties_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetPhysicalDeviceToolProperties_VkResult_return =
+ vk->vkGetPhysicalDeviceToolProperties(unboxed_physicalDevice, pToolCount,
+ pToolProperties);
+ }
if ((vkGetPhysicalDeviceToolProperties_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetPhysicalDeviceToolProperties_VkResult_return,
@@ -10933,9 +11415,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pPrivateDataSlot);
}
- VkResult vkCreatePrivateDataSlot_VkResult_return = (VkResult)0;
- vkCreatePrivateDataSlot_VkResult_return = vk->vkCreatePrivateDataSlot(
- unboxed_device, pCreateInfo, pAllocator, pPrivateDataSlot);
+ VkResult vkCreatePrivateDataSlot_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreatePrivateDataSlot_VkResult_return = vk->vkCreatePrivateDataSlot(
+ unboxed_device, pCreateInfo, pAllocator, pPrivateDataSlot);
+ }
if ((vkCreatePrivateDataSlot_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreatePrivateDataSlot_VkResult_return, opcode,
@@ -11008,7 +11492,9 @@
ioStream, (unsigned long long)device,
(unsigned long long)privateDataSlot, (unsigned long long)pAllocator);
}
- vk->vkDestroyPrivateDataSlot(unboxed_device, privateDataSlot, pAllocator);
+ if (CC_LIKELY(vk)) {
+ vk->vkDestroyPrivateDataSlot(unboxed_device, privateDataSlot, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyPrivateDataSlot(
@@ -11056,9 +11542,11 @@
(unsigned long long)objectHandle, (unsigned long long)privateDataSlot,
(unsigned long long)data);
}
- VkResult vkSetPrivateData_VkResult_return = (VkResult)0;
- vkSetPrivateData_VkResult_return = vk->vkSetPrivateData(
- unboxed_device, objectType, objectHandle, privateDataSlot, data);
+ VkResult vkSetPrivateData_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkSetPrivateData_VkResult_return = vk->vkSetPrivateData(
+ unboxed_device, objectType, objectHandle, privateDataSlot, data);
+ }
if ((vkSetPrivateData_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkSetPrivateData_VkResult_return, opcode, context);
@@ -11114,8 +11602,10 @@
(unsigned long long)objectHandle, (unsigned long long)privateDataSlot,
(unsigned long long)pData);
}
- vk->vkGetPrivateData(unboxed_device, objectType, objectHandle, privateDataSlot,
- pData);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetPrivateData(unboxed_device, objectType, objectHandle, privateDataSlot,
+ pData);
+ }
vkStream->unsetHandleMapping();
vkStream->write((uint64_t*)pData, sizeof(uint64_t));
vkStream->commitWrite();
@@ -11160,7 +11650,9 @@
ioStream, (unsigned long long)commandBuffer, (unsigned long long)event,
(unsigned long long)pDependencyInfo);
}
- vk->vkCmdSetEvent2(unboxed_commandBuffer, event, pDependencyInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetEvent2(unboxed_commandBuffer, event, pDependencyInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetEvent2(&m_pool, snapshotApiCallInfo, packet,
@@ -11199,7 +11691,9 @@
ioStream, (unsigned long long)commandBuffer, (unsigned long long)event,
(unsigned long long)stageMask);
}
- vk->vkCmdResetEvent2(unboxed_commandBuffer, event, stageMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResetEvent2(unboxed_commandBuffer, event, stageMask);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdResetEvent2(&m_pool, snapshotApiCallInfo, packet,
@@ -11259,7 +11753,10 @@
ioStream, (unsigned long long)commandBuffer, (unsigned long long)eventCount,
(unsigned long long)pEvents, (unsigned long long)pDependencyInfos);
}
- vk->vkCmdWaitEvents2(unboxed_commandBuffer, eventCount, pEvents, pDependencyInfos);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWaitEvents2(unboxed_commandBuffer, eventCount, pEvents,
+ pDependencyInfos);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdWaitEvents2(&m_pool, snapshotApiCallInfo, packet,
@@ -11282,6 +11779,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
vkReadStream->alloc((void**)&pDependencyInfo, sizeof(const VkDependencyInfo));
reservedunmarshal_VkDependencyInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkDependencyInfo*)(pDependencyInfo),
@@ -11295,8 +11793,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pDependencyInfo);
}
- m_state->on_vkCmdPipelineBarrier2(&m_pool, snapshotApiCallInfo, commandBuffer,
- pDependencyInfo);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdPipelineBarrier2(&m_pool, snapshotApiCallInfo, commandBuffer,
+ pDependencyInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdPipelineBarrier2(&m_pool, snapshotApiCallInfo, packet,
@@ -11340,7 +11840,9 @@
ioStream, (unsigned long long)commandBuffer, (unsigned long long)stage,
(unsigned long long)queryPool, (unsigned long long)query);
}
- vk->vkCmdWriteTimestamp2(unboxed_commandBuffer, stage, queryPool, query);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWriteTimestamp2(unboxed_commandBuffer, stage, queryPool, query);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdWriteTimestamp2(&m_pool, snapshotApiCallInfo, packet,
@@ -11363,6 +11865,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
memcpy((uint32_t*)&submitCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pSubmits,
@@ -11386,9 +11889,11 @@
ioStream, (unsigned long long)queue, (unsigned long long)submitCount,
(unsigned long long)pSubmits, (unsigned long long)fence);
}
- VkResult vkQueueSubmit2_VkResult_return = (VkResult)0;
- vkQueueSubmit2_VkResult_return = m_state->on_vkQueueSubmit2(
- &m_pool, snapshotApiCallInfo, queue, submitCount, pSubmits, fence);
+ VkResult vkQueueSubmit2_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkQueueSubmit2_VkResult_return = m_state->on_vkQueueSubmit2(
+ &m_pool, snapshotApiCallInfo, queue, submitCount, pSubmits, fence);
+ }
if ((vkQueueSubmit2_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkQueueSubmit2_VkResult_return, opcode, context);
@@ -11431,7 +11936,9 @@
fprintf(stderr, "stream %p: call vkCmdCopyBuffer2 0x%llx 0x%llx \n", ioStream,
(unsigned long long)commandBuffer, (unsigned long long)pCopyBufferInfo);
}
- vk->vkCmdCopyBuffer2(unboxed_commandBuffer, pCopyBufferInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdCopyBuffer2(unboxed_commandBuffer, pCopyBufferInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdCopyBuffer2(&m_pool, snapshotApiCallInfo, packet,
@@ -11454,6 +11961,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
vkReadStream->alloc((void**)&pCopyImageInfo, sizeof(const VkCopyImageInfo2));
reservedunmarshal_VkCopyImageInfo2(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkCopyImageInfo2*)(pCopyImageInfo),
@@ -11465,8 +11973,10 @@
fprintf(stderr, "stream %p: call vkCmdCopyImage2 0x%llx 0x%llx \n", ioStream,
(unsigned long long)commandBuffer, (unsigned long long)pCopyImageInfo);
}
- m_state->on_vkCmdCopyImage2(&m_pool, snapshotApiCallInfo, commandBuffer,
- pCopyImageInfo);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdCopyImage2(&m_pool, snapshotApiCallInfo, commandBuffer,
+ pCopyImageInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdCopyImage2(&m_pool, snapshotApiCallInfo, packet,
@@ -11488,6 +11998,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
vkReadStream->alloc((void**)&pCopyBufferToImageInfo,
sizeof(const VkCopyBufferToImageInfo2));
reservedunmarshal_VkCopyBufferToImageInfo2(
@@ -11502,8 +12013,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pCopyBufferToImageInfo);
}
- m_state->on_vkCmdCopyBufferToImage2(&m_pool, snapshotApiCallInfo, commandBuffer,
- pCopyBufferToImageInfo, context);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdCopyBufferToImage2(&m_pool, snapshotApiCallInfo, commandBuffer,
+ pCopyBufferToImageInfo, context);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdCopyBufferToImage2(&m_pool, snapshotApiCallInfo,
@@ -11526,6 +12039,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
vkReadStream->alloc((void**)&pCopyImageToBufferInfo,
sizeof(const VkCopyImageToBufferInfo2));
reservedunmarshal_VkCopyImageToBufferInfo2(
@@ -11540,8 +12054,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pCopyImageToBufferInfo);
}
- m_state->on_vkCmdCopyImageToBuffer2(&m_pool, snapshotApiCallInfo, commandBuffer,
- pCopyImageToBufferInfo);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdCopyImageToBuffer2(&m_pool, snapshotApiCallInfo, commandBuffer,
+ pCopyImageToBufferInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdCopyImageToBuffer2(&m_pool, snapshotApiCallInfo,
@@ -11578,7 +12094,9 @@
fprintf(stderr, "stream %p: call vkCmdBlitImage2 0x%llx 0x%llx \n", ioStream,
(unsigned long long)commandBuffer, (unsigned long long)pBlitImageInfo);
}
- vk->vkCmdBlitImage2(unboxed_commandBuffer, pBlitImageInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBlitImage2(unboxed_commandBuffer, pBlitImageInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBlitImage2(&m_pool, snapshotApiCallInfo, packet,
@@ -11616,7 +12134,9 @@
(unsigned long long)commandBuffer,
(unsigned long long)pResolveImageInfo);
}
- vk->vkCmdResolveImage2(unboxed_commandBuffer, pResolveImageInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResolveImage2(unboxed_commandBuffer, pResolveImageInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdResolveImage2(&m_pool, snapshotApiCallInfo, packet,
@@ -11654,7 +12174,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pRenderingInfo);
}
- vk->vkCmdBeginRendering(unboxed_commandBuffer, pRenderingInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBeginRendering(unboxed_commandBuffer, pRenderingInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBeginRendering(&m_pool, snapshotApiCallInfo, packet,
@@ -11683,7 +12205,9 @@
fprintf(stderr, "stream %p: call vkCmdEndRendering 0x%llx \n", ioStream,
(unsigned long long)commandBuffer);
}
- vk->vkCmdEndRendering(unboxed_commandBuffer);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndRendering(unboxed_commandBuffer);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdEndRendering(&m_pool, snapshotApiCallInfo, packet,
@@ -11714,7 +12238,9 @@
fprintf(stderr, "stream %p: call vkCmdSetCullMode 0x%llx 0x%llx \n", ioStream,
(unsigned long long)commandBuffer, (unsigned long long)cullMode);
}
- vk->vkCmdSetCullMode(unboxed_commandBuffer, cullMode);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetCullMode(unboxed_commandBuffer, cullMode);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetCullMode(&m_pool, snapshotApiCallInfo, packet,
@@ -11745,7 +12271,9 @@
fprintf(stderr, "stream %p: call vkCmdSetFrontFace 0x%llx 0x%llx \n", ioStream,
(unsigned long long)commandBuffer, (unsigned long long)frontFace);
}
- vk->vkCmdSetFrontFace(unboxed_commandBuffer, frontFace);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetFrontFace(unboxed_commandBuffer, frontFace);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetFrontFace(&m_pool, snapshotApiCallInfo, packet,
@@ -11778,7 +12306,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)primitiveTopology);
}
- vk->vkCmdSetPrimitiveTopology(unboxed_commandBuffer, primitiveTopology);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetPrimitiveTopology(unboxed_commandBuffer, primitiveTopology);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetPrimitiveTopology(&m_pool, snapshotApiCallInfo,
@@ -11824,7 +12354,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)viewportCount, (unsigned long long)pViewports);
}
- vk->vkCmdSetViewportWithCount(unboxed_commandBuffer, viewportCount, pViewports);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetViewportWithCount(unboxed_commandBuffer, viewportCount, pViewports);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetViewportWithCount(&m_pool, snapshotApiCallInfo,
@@ -11869,7 +12401,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)scissorCount, (unsigned long long)pScissors);
}
- vk->vkCmdSetScissorWithCount(unboxed_commandBuffer, scissorCount, pScissors);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetScissorWithCount(unboxed_commandBuffer, scissorCount, pScissors);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetScissorWithCount(&m_pool, snapshotApiCallInfo,
@@ -11959,8 +12493,10 @@
(unsigned long long)pBuffers, (unsigned long long)pOffsets,
(unsigned long long)pSizes, (unsigned long long)pStrides);
}
- vk->vkCmdBindVertexBuffers2(unboxed_commandBuffer, firstBinding, bindingCount,
- pBuffers, pOffsets, pSizes, pStrides);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBindVertexBuffers2(unboxed_commandBuffer, firstBinding, bindingCount,
+ pBuffers, pOffsets, pSizes, pStrides);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBindVertexBuffers2(
@@ -11993,7 +12529,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)depthTestEnable);
}
- vk->vkCmdSetDepthTestEnable(unboxed_commandBuffer, depthTestEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthTestEnable(unboxed_commandBuffer, depthTestEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetDepthTestEnable(&m_pool, snapshotApiCallInfo,
@@ -12026,7 +12564,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)depthWriteEnable);
}
- vk->vkCmdSetDepthWriteEnable(unboxed_commandBuffer, depthWriteEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthWriteEnable(unboxed_commandBuffer, depthWriteEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetDepthWriteEnable(&m_pool, snapshotApiCallInfo,
@@ -12059,7 +12599,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)depthCompareOp);
}
- vk->vkCmdSetDepthCompareOp(unboxed_commandBuffer, depthCompareOp);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthCompareOp(unboxed_commandBuffer, depthCompareOp);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetDepthCompareOp(&m_pool, snapshotApiCallInfo,
@@ -12093,7 +12635,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)depthBoundsTestEnable);
}
- vk->vkCmdSetDepthBoundsTestEnable(unboxed_commandBuffer, depthBoundsTestEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthBoundsTestEnable(unboxed_commandBuffer, depthBoundsTestEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetDepthBoundsTestEnable(
@@ -12126,7 +12670,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)stencilTestEnable);
}
- vk->vkCmdSetStencilTestEnable(unboxed_commandBuffer, stencilTestEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilTestEnable(unboxed_commandBuffer, stencilTestEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetStencilTestEnable(&m_pool, snapshotApiCallInfo,
@@ -12176,8 +12722,10 @@
(unsigned long long)passOp, (unsigned long long)depthFailOp,
(unsigned long long)compareOp);
}
- vk->vkCmdSetStencilOp(unboxed_commandBuffer, faceMask, failOp, passOp, depthFailOp,
- compareOp);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilOp(unboxed_commandBuffer, faceMask, failOp, passOp,
+ depthFailOp, compareOp);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetStencilOp(&m_pool, snapshotApiCallInfo, packet,
@@ -12211,7 +12759,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)rasterizerDiscardEnable);
}
- vk->vkCmdSetRasterizerDiscardEnable(unboxed_commandBuffer, rasterizerDiscardEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetRasterizerDiscardEnable(unboxed_commandBuffer,
+ rasterizerDiscardEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetRasterizerDiscardEnable(
@@ -12244,7 +12795,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)depthBiasEnable);
}
- vk->vkCmdSetDepthBiasEnable(unboxed_commandBuffer, depthBiasEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthBiasEnable(unboxed_commandBuffer, depthBiasEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetDepthBiasEnable(&m_pool, snapshotApiCallInfo,
@@ -12278,7 +12831,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)primitiveRestartEnable);
}
- vk->vkCmdSetPrimitiveRestartEnable(unboxed_commandBuffer, primitiveRestartEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetPrimitiveRestartEnable(unboxed_commandBuffer,
+ primitiveRestartEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetPrimitiveRestartEnable(
@@ -12329,7 +12885,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pInfo,
(unsigned long long)pMemoryRequirements);
}
- vk->vkGetDeviceBufferMemoryRequirements(unboxed_device, pInfo, pMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetDeviceBufferMemoryRequirements(unboxed_device, pInfo,
+ pMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
if (pMemoryRequirements) {
transform_fromhost_VkMemoryRequirements2(
@@ -12387,7 +12946,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pInfo,
(unsigned long long)pMemoryRequirements);
}
- vk->vkGetDeviceImageMemoryRequirements(unboxed_device, pInfo, pMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetDeviceImageMemoryRequirements(unboxed_device, pInfo,
+ pMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
if (pMemoryRequirements) {
transform_fromhost_VkMemoryRequirements2(
@@ -12477,9 +13039,11 @@
(unsigned long long)pSparseMemoryRequirementCount,
(unsigned long long)pSparseMemoryRequirements);
}
- vk->vkGetDeviceImageSparseMemoryRequirements(unboxed_device, pInfo,
- pSparseMemoryRequirementCount,
- pSparseMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetDeviceImageSparseMemoryRequirements(unboxed_device, pInfo,
+ pSparseMemoryRequirementCount,
+ pSparseMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
// WARNING PTR CHECK
uint64_t cgen_var_3 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
@@ -12574,9 +13138,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pSwapchain);
}
- VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
- vkCreateSwapchainKHR_VkResult_return =
- vk->vkCreateSwapchainKHR(unboxed_device, pCreateInfo, pAllocator, pSwapchain);
+ VkResult vkCreateSwapchainKHR_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateSwapchainKHR_VkResult_return = vk->vkCreateSwapchainKHR(
+ unboxed_device, pCreateInfo, pAllocator, pSwapchain);
+ }
if ((vkCreateSwapchainKHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateSwapchainKHR_VkResult_return, opcode, context);
@@ -12647,7 +13213,9 @@
ioStream, (unsigned long long)device, (unsigned long long)swapchain,
(unsigned long long)pAllocator);
}
- vk->vkDestroySwapchainKHR(unboxed_device, swapchain, pAllocator);
+ if (CC_LIKELY(vk)) {
+ vk->vkDestroySwapchainKHR(unboxed_device, swapchain, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroySwapchainKHR(
@@ -12721,9 +13289,11 @@
(unsigned long long)pSwapchainImageCount,
(unsigned long long)pSwapchainImages);
}
- VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
- vkGetSwapchainImagesKHR_VkResult_return = vk->vkGetSwapchainImagesKHR(
- unboxed_device, swapchain, pSwapchainImageCount, pSwapchainImages);
+ VkResult vkGetSwapchainImagesKHR_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetSwapchainImagesKHR_VkResult_return = vk->vkGetSwapchainImagesKHR(
+ unboxed_device, swapchain, pSwapchainImageCount, pSwapchainImages);
+ }
if ((vkGetSwapchainImagesKHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetSwapchainImagesKHR_VkResult_return, opcode,
@@ -12806,9 +13376,11 @@
(unsigned long long)timeout, (unsigned long long)semaphore,
(unsigned long long)fence, (unsigned long long)pImageIndex);
}
- VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
- vkAcquireNextImageKHR_VkResult_return = vk->vkAcquireNextImageKHR(
- unboxed_device, swapchain, timeout, semaphore, fence, pImageIndex);
+ VkResult vkAcquireNextImageKHR_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkAcquireNextImageKHR_VkResult_return = vk->vkAcquireNextImageKHR(
+ unboxed_device, swapchain, timeout, semaphore, fence, pImageIndex);
+ }
if ((vkAcquireNextImageKHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkAcquireNextImageKHR_VkResult_return, opcode,
@@ -12838,6 +13410,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
vkReadStream->alloc((void**)&pPresentInfo, sizeof(const VkPresentInfoKHR));
reservedunmarshal_VkPresentInfoKHR(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkPresentInfoKHR*)(pPresentInfo),
@@ -12849,9 +13422,11 @@
fprintf(stderr, "stream %p: call vkQueuePresentKHR 0x%llx 0x%llx \n", ioStream,
(unsigned long long)queue, (unsigned long long)pPresentInfo);
}
- VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
- vkQueuePresentKHR_VkResult_return = m_state->on_vkQueuePresentKHR(
- &m_pool, snapshotApiCallInfo, queue, pPresentInfo);
+ VkResult vkQueuePresentKHR_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkQueuePresentKHR_VkResult_return = m_state->on_vkQueuePresentKHR(
+ &m_pool, snapshotApiCallInfo, queue, pPresentInfo);
+ }
if ((vkQueuePresentKHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkQueuePresentKHR_VkResult_return, opcode, context);
@@ -12901,10 +13476,13 @@
ioStream, (unsigned long long)device,
(unsigned long long)pDeviceGroupPresentCapabilities);
}
- VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
- vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return =
- vk->vkGetDeviceGroupPresentCapabilitiesKHR(unboxed_device,
- pDeviceGroupPresentCapabilities);
+ VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return =
+ vk->vkGetDeviceGroupPresentCapabilitiesKHR(unboxed_device,
+ pDeviceGroupPresentCapabilities);
+ }
if ((vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return) ==
VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
@@ -12971,9 +13549,12 @@
ioStream, (unsigned long long)device, (unsigned long long)surface,
(unsigned long long)pModes);
}
- VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
- vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return =
- vk->vkGetDeviceGroupSurfacePresentModesKHR(unboxed_device, surface, pModes);
+ VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return =
+ vk->vkGetDeviceGroupSurfacePresentModesKHR(unboxed_device, surface, pModes);
+ }
if ((vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return) ==
VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
@@ -13061,10 +13642,13 @@
(unsigned long long)surface, (unsigned long long)pRectCount,
(unsigned long long)pRects);
}
- VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
- vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return =
- vk->vkGetPhysicalDevicePresentRectanglesKHR(unboxed_physicalDevice, surface,
- pRectCount, pRects);
+ VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return =
+ vk->vkGetPhysicalDevicePresentRectanglesKHR(unboxed_physicalDevice, surface,
+ pRectCount, pRects);
+ }
if ((vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return) ==
VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
@@ -13142,9 +13726,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pAcquireInfo,
(unsigned long long)pImageIndex);
}
- VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
- vkAcquireNextImage2KHR_VkResult_return =
- vk->vkAcquireNextImage2KHR(unboxed_device, pAcquireInfo, pImageIndex);
+ VkResult vkAcquireNextImage2KHR_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkAcquireNextImage2KHR_VkResult_return =
+ vk->vkAcquireNextImage2KHR(unboxed_device, pAcquireInfo, pImageIndex);
+ }
if ((vkAcquireNextImage2KHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkAcquireNextImage2KHR_VkResult_return, opcode,
@@ -13191,7 +13777,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pRenderingInfo);
}
- vk->vkCmdBeginRenderingKHR(unboxed_commandBuffer, pRenderingInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBeginRenderingKHR(unboxed_commandBuffer, pRenderingInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBeginRenderingKHR(&m_pool, snapshotApiCallInfo,
@@ -13220,7 +13808,9 @@
fprintf(stderr, "stream %p: call vkCmdEndRenderingKHR 0x%llx \n", ioStream,
(unsigned long long)commandBuffer);
}
- vk->vkCmdEndRenderingKHR(unboxed_commandBuffer);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndRenderingKHR(unboxed_commandBuffer);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdEndRenderingKHR(&m_pool, snapshotApiCallInfo, packet,
@@ -13244,6 +13834,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
// Begin manual dispatchable handle unboxing for pFeatures;
vkReadStream->unsetHandleMapping();
vkReadStream->alloc((void**)&pFeatures, sizeof(VkPhysicalDeviceFeatures2));
@@ -13260,8 +13851,10 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)pFeatures);
}
- m_state->on_vkGetPhysicalDeviceFeatures2KHR(&m_pool, snapshotApiCallInfo,
- physicalDevice, pFeatures);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceFeatures2KHR(&m_pool, snapshotApiCallInfo,
+ physicalDevice, pFeatures);
+ }
vkStream->unsetHandleMapping();
if (pFeatures) {
transform_fromhost_VkPhysicalDeviceFeatures2(
@@ -13290,6 +13883,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
// Begin manual dispatchable handle unboxing for pProperties;
vkReadStream->unsetHandleMapping();
vkReadStream->alloc((void**)&pProperties, sizeof(VkPhysicalDeviceProperties2));
@@ -13306,8 +13900,10 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)pProperties);
}
- m_state->on_vkGetPhysicalDeviceProperties2KHR(&m_pool, snapshotApiCallInfo,
- physicalDevice, pProperties);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceProperties2KHR(&m_pool, snapshotApiCallInfo,
+ physicalDevice, pProperties);
+ }
vkStream->unsetHandleMapping();
if (pProperties) {
transform_fromhost_VkPhysicalDeviceProperties2(
@@ -13338,6 +13934,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
memcpy((VkFormat*)&format, *readStreamPtrPtr, sizeof(VkFormat));
*readStreamPtrPtr += sizeof(VkFormat);
// Begin manual dispatchable handle unboxing for pFormatProperties;
@@ -13357,8 +13954,10 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)format, (unsigned long long)pFormatProperties);
}
- m_state->on_vkGetPhysicalDeviceFormatProperties2KHR(
- &m_pool, snapshotApiCallInfo, physicalDevice, format, pFormatProperties);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceFormatProperties2KHR(
+ &m_pool, snapshotApiCallInfo, physicalDevice, format, pFormatProperties);
+ }
vkStream->unsetHandleMapping();
if (pFormatProperties) {
transform_fromhost_VkFormatProperties2(
@@ -13389,6 +13988,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
vkReadStream->alloc((void**)&pImageFormatInfo,
sizeof(const VkPhysicalDeviceImageFormatInfo2));
reservedunmarshal_VkPhysicalDeviceImageFormatInfo2(
@@ -13417,11 +14017,14 @@
(unsigned long long)pImageFormatInfo,
(unsigned long long)pImageFormatProperties);
}
- VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
- vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return =
- m_state->on_vkGetPhysicalDeviceImageFormatProperties2KHR(
- &m_pool, snapshotApiCallInfo, physicalDevice, pImageFormatInfo,
- pImageFormatProperties);
+ VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return =
+ m_state->on_vkGetPhysicalDeviceImageFormatProperties2KHR(
+ &m_pool, snapshotApiCallInfo, physicalDevice, pImageFormatInfo,
+ pImageFormatProperties);
+ }
if ((vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return) ==
VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
@@ -13509,8 +14112,10 @@
(unsigned long long)pQueueFamilyPropertyCount,
(unsigned long long)pQueueFamilyProperties);
}
- vk->vkGetPhysicalDeviceQueueFamilyProperties2KHR(
- unboxed_physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetPhysicalDeviceQueueFamilyProperties2KHR(
+ unboxed_physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
+ }
vkStream->unsetHandleMapping();
// WARNING PTR CHECK
uint64_t cgen_var_3 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
@@ -13560,6 +14165,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
// Begin manual dispatchable handle unboxing for pMemoryProperties;
vkReadStream->unsetHandleMapping();
vkReadStream->alloc((void**)&pMemoryProperties,
@@ -13578,8 +14184,10 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)pMemoryProperties);
}
- m_state->on_vkGetPhysicalDeviceMemoryProperties2KHR(
- &m_pool, snapshotApiCallInfo, physicalDevice, pMemoryProperties);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceMemoryProperties2KHR(
+ &m_pool, snapshotApiCallInfo, physicalDevice, pMemoryProperties);
+ }
vkStream->unsetHandleMapping();
if (pMemoryProperties) {
transform_fromhost_VkPhysicalDeviceMemoryProperties2(
@@ -13668,8 +14276,10 @@
(unsigned long long)pFormatInfo, (unsigned long long)pPropertyCount,
(unsigned long long)pProperties);
}
- vk->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
- unboxed_physicalDevice, pFormatInfo, pPropertyCount, pProperties);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
+ unboxed_physicalDevice, pFormatInfo, pPropertyCount, pProperties);
+ }
vkStream->unsetHandleMapping();
// WARNING PTR CHECK
uint64_t cgen_var_3 = (uint64_t)(uintptr_t)pPropertyCount;
@@ -13737,7 +14347,9 @@
ioStream, (unsigned long long)device, (unsigned long long)commandPool,
(unsigned long long)flags);
}
- vk->vkTrimCommandPoolKHR(unboxed_device, commandPool, flags);
+ if (CC_LIKELY(vk)) {
+ vk->vkTrimCommandPoolKHR(unboxed_device, commandPool, flags);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkTrimCommandPoolKHR(&m_pool, snapshotApiCallInfo, packet,
@@ -13798,8 +14410,10 @@
(unsigned long long)pExternalBufferInfo,
(unsigned long long)pExternalBufferProperties);
}
- vk->vkGetPhysicalDeviceExternalBufferPropertiesKHR(
- unboxed_physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetPhysicalDeviceExternalBufferPropertiesKHR(
+ unboxed_physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
+ }
vkStream->unsetHandleMapping();
if (pExternalBufferProperties) {
m_state->transformImpl_VkExternalBufferProperties_fromhost(
@@ -13836,6 +14450,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkPhysicalDevice*)&physicalDevice =
(VkPhysicalDevice)(VkPhysicalDevice)((VkPhysicalDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkPhysicalDevice(physicalDevice);
vkReadStream->alloc((void**)&pExternalSemaphoreInfo,
sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
reservedunmarshal_VkPhysicalDeviceExternalSemaphoreInfo(
@@ -13866,9 +14481,11 @@
(unsigned long long)pExternalSemaphoreInfo,
(unsigned long long)pExternalSemaphoreProperties);
}
- m_state->on_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
- &m_pool, snapshotApiCallInfo, physicalDevice, pExternalSemaphoreInfo,
- pExternalSemaphoreProperties);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
+ &m_pool, snapshotApiCallInfo, physicalDevice, pExternalSemaphoreInfo,
+ pExternalSemaphoreProperties);
+ }
vkStream->unsetHandleMapping();
if (pExternalSemaphoreProperties) {
transform_fromhost_VkExternalSemaphoreProperties(
@@ -13900,6 +14517,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pImportSemaphoreFdInfo,
sizeof(const VkImportSemaphoreFdInfoKHR));
reservedunmarshal_VkImportSemaphoreFdInfoKHR(
@@ -13914,9 +14532,11 @@
ioStream, (unsigned long long)device,
(unsigned long long)pImportSemaphoreFdInfo);
}
- VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
- vkImportSemaphoreFdKHR_VkResult_return = m_state->on_vkImportSemaphoreFdKHR(
- &m_pool, snapshotApiCallInfo, device, pImportSemaphoreFdInfo);
+ VkResult vkImportSemaphoreFdKHR_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkImportSemaphoreFdKHR_VkResult_return = m_state->on_vkImportSemaphoreFdKHR(
+ &m_pool, snapshotApiCallInfo, device, pImportSemaphoreFdInfo);
+ }
if ((vkImportSemaphoreFdKHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkImportSemaphoreFdKHR_VkResult_return, opcode,
@@ -13945,6 +14565,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pGetFdInfo, sizeof(const VkSemaphoreGetFdInfoKHR));
reservedunmarshal_VkSemaphoreGetFdInfoKHR(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkSemaphoreGetFdInfoKHR*)(pGetFdInfo),
@@ -13963,9 +14584,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pGetFdInfo,
(unsigned long long)pFd);
}
- VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
- vkGetSemaphoreFdKHR_VkResult_return = m_state->on_vkGetSemaphoreFdKHR(
- &m_pool, snapshotApiCallInfo, device, pGetFdInfo, pFd);
+ VkResult vkGetSemaphoreFdKHR_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetSemaphoreFdKHR_VkResult_return = m_state->on_vkGetSemaphoreFdKHR(
+ &m_pool, snapshotApiCallInfo, device, pGetFdInfo, pFd);
+ }
if ((vkGetSemaphoreFdKHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetSemaphoreFdKHR_VkResult_return, opcode, context);
@@ -13997,6 +14620,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo,
sizeof(const VkDescriptorUpdateTemplateCreateInfo));
reservedunmarshal_VkDescriptorUpdateTemplateCreateInfo(
@@ -14038,11 +14662,14 @@
(unsigned long long)pAllocator,
(unsigned long long)pDescriptorUpdateTemplate);
}
- VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
- vkCreateDescriptorUpdateTemplateKHR_VkResult_return =
- m_state->on_vkCreateDescriptorUpdateTemplateKHR(&m_pool, snapshotApiCallInfo,
- device, pCreateInfo, pAllocator,
- pDescriptorUpdateTemplate);
+ VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateDescriptorUpdateTemplateKHR_VkResult_return =
+ m_state->on_vkCreateDescriptorUpdateTemplateKHR(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator,
+ pDescriptorUpdateTemplate);
+ }
if ((vkCreateDescriptorUpdateTemplateKHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateDescriptorUpdateTemplateKHR_VkResult_return,
@@ -14084,6 +14711,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for
// descriptorUpdateTemplate;
VkDescriptorUpdateTemplate boxed_descriptorUpdateTemplate_preserve;
@@ -14118,8 +14746,10 @@
(unsigned long long)descriptorUpdateTemplate,
(unsigned long long)pAllocator);
}
- m_state->on_vkDestroyDescriptorUpdateTemplateKHR(
- &m_pool, snapshotApiCallInfo, device, descriptorUpdateTemplate, pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroyDescriptorUpdateTemplateKHR(
+ &m_pool, snapshotApiCallInfo, device, descriptorUpdateTemplate, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyDescriptorUpdateTemplateKHR(
@@ -14175,8 +14805,10 @@
(unsigned long long)descriptorUpdateTemplate,
(unsigned long long)pData);
}
- vk->vkUpdateDescriptorSetWithTemplateKHR(unboxed_device, descriptorSet,
- descriptorUpdateTemplate, pData);
+ if (CC_LIKELY(vk)) {
+ vk->vkUpdateDescriptorSetWithTemplateKHR(unboxed_device, descriptorSet,
+ descriptorUpdateTemplate, pData);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkUpdateDescriptorSetWithTemplateKHR(
@@ -14202,6 +14834,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkRenderPassCreateInfo2));
reservedunmarshal_VkRenderPassCreateInfo2(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkRenderPassCreateInfo2*)(pCreateInfo),
@@ -14238,9 +14871,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pRenderPass);
}
- VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
- vkCreateRenderPass2KHR_VkResult_return = m_state->on_vkCreateRenderPass2KHR(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pRenderPass);
+ VkResult vkCreateRenderPass2KHR_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateRenderPass2KHR_VkResult_return = m_state->on_vkCreateRenderPass2KHR(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pRenderPass);
+ }
if ((vkCreateRenderPass2KHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateRenderPass2KHR_VkResult_return, opcode,
@@ -14280,6 +14915,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
vkReadStream->alloc((void**)&pRenderPassBegin, sizeof(const VkRenderPassBeginInfo));
reservedunmarshal_VkRenderPassBeginInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkRenderPassBeginInfo*)(pRenderPassBegin),
@@ -14303,8 +14939,11 @@
(unsigned long long)pRenderPassBegin,
(unsigned long long)pSubpassBeginInfo);
}
- m_state->on_vkCmdBeginRenderPass2KHR(&m_pool, snapshotApiCallInfo, commandBuffer,
- pRenderPassBegin, pSubpassBeginInfo);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdBeginRenderPass2KHR(&m_pool, snapshotApiCallInfo,
+ commandBuffer, pRenderPassBegin,
+ pSubpassBeginInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBeginRenderPass2KHR(
@@ -14353,7 +14992,10 @@
(unsigned long long)pSubpassBeginInfo,
(unsigned long long)pSubpassEndInfo);
}
- vk->vkCmdNextSubpass2KHR(unboxed_commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdNextSubpass2KHR(unboxed_commandBuffer, pSubpassBeginInfo,
+ pSubpassEndInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdNextSubpass2KHR(&m_pool, snapshotApiCallInfo, packet,
@@ -14392,7 +15034,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pSubpassEndInfo);
}
- vk->vkCmdEndRenderPass2KHR(unboxed_commandBuffer, pSubpassEndInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndRenderPass2KHR(unboxed_commandBuffer, pSubpassEndInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdEndRenderPass2KHR(&m_pool, snapshotApiCallInfo,
@@ -14449,8 +15093,10 @@
(unsigned long long)pExternalFenceInfo,
(unsigned long long)pExternalFenceProperties);
}
- vk->vkGetPhysicalDeviceExternalFencePropertiesKHR(
- unboxed_physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetPhysicalDeviceExternalFencePropertiesKHR(
+ unboxed_physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
+ }
vkStream->unsetHandleMapping();
if (pExternalFenceProperties) {
transform_fromhost_VkExternalFenceProperties(
@@ -14498,9 +15144,11 @@
fprintf(stderr, "stream %p: call vkImportFenceFdKHR 0x%llx 0x%llx \n", ioStream,
(unsigned long long)device, (unsigned long long)pImportFenceFdInfo);
}
- VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
- vkImportFenceFdKHR_VkResult_return =
- vk->vkImportFenceFdKHR(unboxed_device, pImportFenceFdInfo);
+ VkResult vkImportFenceFdKHR_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkImportFenceFdKHR_VkResult_return =
+ vk->vkImportFenceFdKHR(unboxed_device, pImportFenceFdInfo);
+ }
if ((vkImportFenceFdKHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkImportFenceFdKHR_VkResult_return, opcode, context);
@@ -14549,9 +15197,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pGetFdInfo,
(unsigned long long)pFd);
}
- VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
- vkGetFenceFdKHR_VkResult_return =
- vk->vkGetFenceFdKHR(unboxed_device, pGetFdInfo, pFd);
+ VkResult vkGetFenceFdKHR_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetFenceFdKHR_VkResult_return =
+ vk->vkGetFenceFdKHR(unboxed_device, pGetFdInfo, pFd);
+ }
if ((vkGetFenceFdKHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetFenceFdKHR_VkResult_return, opcode, context);
@@ -14582,6 +15232,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pInfo, sizeof(const VkImageMemoryRequirementsInfo2));
reservedunmarshal_VkImageMemoryRequirementsInfo2(
vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
@@ -14607,8 +15258,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pInfo,
(unsigned long long)pMemoryRequirements);
}
- m_state->on_vkGetImageMemoryRequirements2KHR(&m_pool, snapshotApiCallInfo, device,
- pInfo, pMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetImageMemoryRequirements2KHR(
+ &m_pool, snapshotApiCallInfo, device, pInfo, pMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
if (pMemoryRequirements) {
transform_fromhost_VkMemoryRequirements2(
@@ -14638,6 +15291,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pInfo, sizeof(const VkBufferMemoryRequirementsInfo2));
reservedunmarshal_VkBufferMemoryRequirementsInfo2(
vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
@@ -14663,8 +15317,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pInfo,
(unsigned long long)pMemoryRequirements);
}
- m_state->on_vkGetBufferMemoryRequirements2KHR(&m_pool, snapshotApiCallInfo, device,
- pInfo, pMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetBufferMemoryRequirements2KHR(
+ &m_pool, snapshotApiCallInfo, device, pInfo, pMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
if (pMemoryRequirements) {
transform_fromhost_VkMemoryRequirements2(
@@ -14755,9 +15411,11 @@
(unsigned long long)pSparseMemoryRequirementCount,
(unsigned long long)pSparseMemoryRequirements);
}
- vk->vkGetImageSparseMemoryRequirements2KHR(unboxed_device, pInfo,
- pSparseMemoryRequirementCount,
- pSparseMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetImageSparseMemoryRequirements2KHR(unboxed_device, pInfo,
+ pSparseMemoryRequirementCount,
+ pSparseMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
// WARNING PTR CHECK
uint64_t cgen_var_3 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
@@ -14813,6 +15471,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo,
sizeof(const VkSamplerYcbcrConversionCreateInfo));
reservedunmarshal_VkSamplerYcbcrConversionCreateInfo(
@@ -14852,11 +15511,14 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pYcbcrConversion);
}
- VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
- vkCreateSamplerYcbcrConversionKHR_VkResult_return =
- m_state->on_vkCreateSamplerYcbcrConversionKHR(&m_pool, snapshotApiCallInfo,
- device, pCreateInfo, pAllocator,
- pYcbcrConversion);
+ VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateSamplerYcbcrConversionKHR_VkResult_return =
+ m_state->on_vkCreateSamplerYcbcrConversionKHR(&m_pool, snapshotApiCallInfo,
+ device, pCreateInfo,
+ pAllocator, pYcbcrConversion);
+ }
if ((vkCreateSamplerYcbcrConversionKHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateSamplerYcbcrConversionKHR_VkResult_return,
@@ -14898,6 +15560,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for ycbcrConversion;
VkSamplerYcbcrConversion boxed_ycbcrConversion_preserve;
uint64_t cgen_var_1;
@@ -14929,8 +15592,10 @@
ioStream, (unsigned long long)device,
(unsigned long long)ycbcrConversion, (unsigned long long)pAllocator);
}
- m_state->on_vkDestroySamplerYcbcrConversionKHR(&m_pool, snapshotApiCallInfo, device,
- ycbcrConversion, pAllocator);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkDestroySamplerYcbcrConversionKHR(
+ &m_pool, snapshotApiCallInfo, device, ycbcrConversion, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroySamplerYcbcrConversionKHR(
@@ -14956,6 +15621,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
memcpy((uint32_t*)&bindInfoCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pBindInfos,
@@ -14977,9 +15643,11 @@
ioStream, (unsigned long long)device, (unsigned long long)bindInfoCount,
(unsigned long long)pBindInfos);
}
- VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
- vkBindBufferMemory2KHR_VkResult_return = m_state->on_vkBindBufferMemory2KHR(
- &m_pool, snapshotApiCallInfo, device, bindInfoCount, pBindInfos);
+ VkResult vkBindBufferMemory2KHR_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkBindBufferMemory2KHR_VkResult_return = m_state->on_vkBindBufferMemory2KHR(
+ &m_pool, snapshotApiCallInfo, device, bindInfoCount, pBindInfos);
+ }
if ((vkBindBufferMemory2KHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkBindBufferMemory2KHR_VkResult_return, opcode,
@@ -15008,6 +15676,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
memcpy((uint32_t*)&bindInfoCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pBindInfos,
@@ -15028,9 +15697,11 @@
ioStream, (unsigned long long)device, (unsigned long long)bindInfoCount,
(unsigned long long)pBindInfos);
}
- VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
- vkBindImageMemory2KHR_VkResult_return = m_state->on_vkBindImageMemory2KHR(
- &m_pool, snapshotApiCallInfo, device, bindInfoCount, pBindInfos);
+ VkResult vkBindImageMemory2KHR_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkBindImageMemory2KHR_VkResult_return = m_state->on_vkBindImageMemory2KHR(
+ &m_pool, snapshotApiCallInfo, device, bindInfoCount, pBindInfos);
+ }
if ((vkBindImageMemory2KHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkBindImageMemory2KHR_VkResult_return, opcode,
@@ -15090,7 +15761,9 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pSupport);
}
- vk->vkGetDescriptorSetLayoutSupportKHR(unboxed_device, pCreateInfo, pSupport);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetDescriptorSetLayoutSupportKHR(unboxed_device, pCreateInfo, pSupport);
+ }
vkStream->unsetHandleMapping();
if (pSupport) {
transform_fromhost_VkDescriptorSetLayoutSupport(
@@ -15138,8 +15811,10 @@
}
VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return =
(VkDeviceAddress)0;
- vkGetBufferDeviceAddressKHR_VkDeviceAddress_return =
- vk->vkGetBufferDeviceAddressKHR(unboxed_device, pInfo);
+ if (CC_LIKELY(vk)) {
+ vkGetBufferDeviceAddressKHR_VkDeviceAddress_return =
+ vk->vkGetBufferDeviceAddressKHR(unboxed_device, pInfo);
+ }
vkStream->unsetHandleMapping();
vkStream->write(&vkGetBufferDeviceAddressKHR_VkDeviceAddress_return,
sizeof(VkDeviceAddress));
@@ -15181,8 +15856,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pInfo);
}
uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
- vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return =
- vk->vkGetBufferOpaqueCaptureAddressKHR(unboxed_device, pInfo);
+ if (CC_LIKELY(vk)) {
+ vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return =
+ vk->vkGetBufferOpaqueCaptureAddressKHR(unboxed_device, pInfo);
+ }
vkStream->unsetHandleMapping();
vkStream->write(&vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return,
sizeof(uint64_t));
@@ -15226,8 +15903,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pInfo);
}
uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
- vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return =
- vk->vkGetDeviceMemoryOpaqueCaptureAddressKHR(unboxed_device, pInfo);
+ if (CC_LIKELY(vk)) {
+ vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return =
+ vk->vkGetDeviceMemoryOpaqueCaptureAddressKHR(unboxed_device, pInfo);
+ }
vkStream->unsetHandleMapping();
vkStream->write(&vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return,
sizeof(uint64_t));
@@ -15310,10 +15989,13 @@
ioStream, (unsigned long long)device, (unsigned long long)pPipelineInfo,
(unsigned long long)pExecutableCount, (unsigned long long)pProperties);
}
- VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
- vkGetPipelineExecutablePropertiesKHR_VkResult_return =
- vk->vkGetPipelineExecutablePropertiesKHR(unboxed_device, pPipelineInfo,
- pExecutableCount, pProperties);
+ VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetPipelineExecutablePropertiesKHR_VkResult_return =
+ vk->vkGetPipelineExecutablePropertiesKHR(unboxed_device, pPipelineInfo,
+ pExecutableCount, pProperties);
+ }
if ((vkGetPipelineExecutablePropertiesKHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetPipelineExecutablePropertiesKHR_VkResult_return,
@@ -15426,10 +16108,13 @@
(unsigned long long)pExecutableInfo,
(unsigned long long)pStatisticCount, (unsigned long long)pStatistics);
}
- VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
- vkGetPipelineExecutableStatisticsKHR_VkResult_return =
- vk->vkGetPipelineExecutableStatisticsKHR(unboxed_device, pExecutableInfo,
- pStatisticCount, pStatistics);
+ VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetPipelineExecutableStatisticsKHR_VkResult_return =
+ vk->vkGetPipelineExecutableStatisticsKHR(unboxed_device, pExecutableInfo,
+ pStatisticCount, pStatistics);
+ }
if ((vkGetPipelineExecutableStatisticsKHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetPipelineExecutableStatisticsKHR_VkResult_return,
@@ -15551,11 +16236,13 @@
(unsigned long long)pInternalRepresentations);
}
VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return =
- (VkResult)0;
- vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return =
- vk->vkGetPipelineExecutableInternalRepresentationsKHR(
- unboxed_device, pExecutableInfo, pInternalRepresentationCount,
- pInternalRepresentations);
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return =
+ vk->vkGetPipelineExecutableInternalRepresentationsKHR(
+ unboxed_device, pExecutableInfo, pInternalRepresentationCount,
+ pInternalRepresentations);
+ }
if ((vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return) ==
VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
@@ -15640,7 +16327,9 @@
ioStream, (unsigned long long)commandBuffer, (unsigned long long)event,
(unsigned long long)pDependencyInfo);
}
- vk->vkCmdSetEvent2KHR(unboxed_commandBuffer, event, pDependencyInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetEvent2KHR(unboxed_commandBuffer, event, pDependencyInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetEvent2KHR(&m_pool, snapshotApiCallInfo, packet,
@@ -15679,7 +16368,9 @@
ioStream, (unsigned long long)commandBuffer, (unsigned long long)event,
(unsigned long long)stageMask);
}
- vk->vkCmdResetEvent2KHR(unboxed_commandBuffer, event, stageMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResetEvent2KHR(unboxed_commandBuffer, event, stageMask);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdResetEvent2KHR(&m_pool, snapshotApiCallInfo, packet,
@@ -15740,8 +16431,10 @@
(unsigned long long)eventCount, (unsigned long long)pEvents,
(unsigned long long)pDependencyInfos);
}
- vk->vkCmdWaitEvents2KHR(unboxed_commandBuffer, eventCount, pEvents,
- pDependencyInfos);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWaitEvents2KHR(unboxed_commandBuffer, eventCount, pEvents,
+ pDependencyInfos);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdWaitEvents2KHR(&m_pool, snapshotApiCallInfo, packet,
@@ -15780,7 +16473,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pDependencyInfo);
}
- vk->vkCmdPipelineBarrier2KHR(unboxed_commandBuffer, pDependencyInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdPipelineBarrier2KHR(unboxed_commandBuffer, pDependencyInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdPipelineBarrier2KHR(&m_pool, snapshotApiCallInfo,
@@ -15825,7 +16520,9 @@
ioStream, (unsigned long long)commandBuffer, (unsigned long long)stage,
(unsigned long long)queryPool, (unsigned long long)query);
}
- vk->vkCmdWriteTimestamp2KHR(unboxed_commandBuffer, stage, queryPool, query);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWriteTimestamp2KHR(unboxed_commandBuffer, stage, queryPool, query);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdWriteTimestamp2KHR(&m_pool, snapshotApiCallInfo,
@@ -15876,9 +16573,11 @@
ioStream, (unsigned long long)queue, (unsigned long long)submitCount,
(unsigned long long)pSubmits, (unsigned long long)fence);
}
- VkResult vkQueueSubmit2KHR_VkResult_return = (VkResult)0;
- vkQueueSubmit2KHR_VkResult_return =
- vk->vkQueueSubmit2KHR(unboxed_queue, submitCount, pSubmits, fence);
+ VkResult vkQueueSubmit2KHR_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkQueueSubmit2KHR_VkResult_return =
+ vk->vkQueueSubmit2KHR(unboxed_queue, submitCount, pSubmits, fence);
+ }
if ((vkQueueSubmit2KHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkQueueSubmit2KHR_VkResult_return, opcode, context);
@@ -15931,8 +16630,10 @@
(unsigned long long)dstBuffer, (unsigned long long)dstOffset,
(unsigned long long)marker);
}
- vk->vkCmdWriteBufferMarker2AMD(unboxed_commandBuffer, stage, dstBuffer, dstOffset,
- marker);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWriteBufferMarker2AMD(unboxed_commandBuffer, stage, dstBuffer,
+ dstOffset, marker);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdWriteBufferMarker2AMD(
@@ -15999,8 +16700,10 @@
(unsigned long long)pCheckpointDataCount,
(unsigned long long)pCheckpointData);
}
- vk->vkGetQueueCheckpointData2NV(unboxed_queue, pCheckpointDataCount,
- pCheckpointData);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetQueueCheckpointData2NV(unboxed_queue, pCheckpointDataCount,
+ pCheckpointData);
+ }
vkStream->unsetHandleMapping();
// WARNING PTR CHECK
uint64_t cgen_var_3 = (uint64_t)(uintptr_t)pCheckpointDataCount;
@@ -16068,7 +16771,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pCopyBufferInfo);
}
- vk->vkCmdCopyBuffer2KHR(unboxed_commandBuffer, pCopyBufferInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdCopyBuffer2KHR(unboxed_commandBuffer, pCopyBufferInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdCopyBuffer2KHR(&m_pool, snapshotApiCallInfo, packet,
@@ -16091,6 +16796,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
vkReadStream->alloc((void**)&pCopyImageInfo, sizeof(const VkCopyImageInfo2));
reservedunmarshal_VkCopyImageInfo2(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkCopyImageInfo2*)(pCopyImageInfo),
@@ -16102,8 +16808,10 @@
fprintf(stderr, "stream %p: call vkCmdCopyImage2KHR 0x%llx 0x%llx \n", ioStream,
(unsigned long long)commandBuffer, (unsigned long long)pCopyImageInfo);
}
- m_state->on_vkCmdCopyImage2KHR(&m_pool, snapshotApiCallInfo, commandBuffer,
- pCopyImageInfo);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdCopyImage2KHR(&m_pool, snapshotApiCallInfo, commandBuffer,
+ pCopyImageInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdCopyImage2KHR(&m_pool, snapshotApiCallInfo, packet,
@@ -16126,6 +16834,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
vkReadStream->alloc((void**)&pCopyBufferToImageInfo,
sizeof(const VkCopyBufferToImageInfo2));
reservedunmarshal_VkCopyBufferToImageInfo2(
@@ -16140,8 +16849,11 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pCopyBufferToImageInfo);
}
- m_state->on_vkCmdCopyBufferToImage2KHR(&m_pool, snapshotApiCallInfo, commandBuffer,
- pCopyBufferToImageInfo, context);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdCopyBufferToImage2KHR(&m_pool, snapshotApiCallInfo,
+ commandBuffer, pCopyBufferToImageInfo,
+ context);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdCopyBufferToImage2KHR(
@@ -16164,6 +16876,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
vkReadStream->alloc((void**)&pCopyImageToBufferInfo,
sizeof(const VkCopyImageToBufferInfo2));
reservedunmarshal_VkCopyImageToBufferInfo2(
@@ -16178,8 +16891,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pCopyImageToBufferInfo);
}
- m_state->on_vkCmdCopyImageToBuffer2KHR(&m_pool, snapshotApiCallInfo, commandBuffer,
- pCopyImageToBufferInfo);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCmdCopyImageToBuffer2KHR(&m_pool, snapshotApiCallInfo,
+ commandBuffer, pCopyImageToBufferInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdCopyImageToBuffer2KHR(
@@ -16216,7 +16931,9 @@
fprintf(stderr, "stream %p: call vkCmdBlitImage2KHR 0x%llx 0x%llx \n", ioStream,
(unsigned long long)commandBuffer, (unsigned long long)pBlitImageInfo);
}
- vk->vkCmdBlitImage2KHR(unboxed_commandBuffer, pBlitImageInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBlitImage2KHR(unboxed_commandBuffer, pBlitImageInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBlitImage2KHR(&m_pool, snapshotApiCallInfo, packet,
@@ -16255,7 +16972,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pResolveImageInfo);
}
- vk->vkCmdResolveImage2KHR(unboxed_commandBuffer, pResolveImageInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResolveImage2KHR(unboxed_commandBuffer, pResolveImageInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdResolveImage2KHR(&m_pool, snapshotApiCallInfo, packet,
@@ -16308,8 +17027,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pInfo,
(unsigned long long)pMemoryRequirements);
}
- vk->vkGetDeviceBufferMemoryRequirementsKHR(unboxed_device, pInfo,
- pMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetDeviceBufferMemoryRequirementsKHR(unboxed_device, pInfo,
+ pMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
if (pMemoryRequirements) {
transform_fromhost_VkMemoryRequirements2(
@@ -16367,8 +17088,10 @@
ioStream, (unsigned long long)device, (unsigned long long)pInfo,
(unsigned long long)pMemoryRequirements);
}
- vk->vkGetDeviceImageMemoryRequirementsKHR(unboxed_device, pInfo,
- pMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetDeviceImageMemoryRequirementsKHR(unboxed_device, pInfo,
+ pMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
if (pMemoryRequirements) {
transform_fromhost_VkMemoryRequirements2(
@@ -16458,9 +17181,11 @@
(unsigned long long)pSparseMemoryRequirementCount,
(unsigned long long)pSparseMemoryRequirements);
}
- vk->vkGetDeviceImageSparseMemoryRequirementsKHR(unboxed_device, pInfo,
- pSparseMemoryRequirementCount,
- pSparseMemoryRequirements);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetDeviceImageSparseMemoryRequirementsKHR(unboxed_device, pInfo,
+ pSparseMemoryRequirementCount,
+ pSparseMemoryRequirements);
+ }
vkStream->unsetHandleMapping();
// WARNING PTR CHECK
uint64_t cgen_var_3 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
@@ -16539,8 +17264,10 @@
(unsigned long long)offset, (unsigned long long)size,
(unsigned long long)indexType);
}
- vk->vkCmdBindIndexBuffer2KHR(unboxed_commandBuffer, buffer, offset, size,
- indexType);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBindIndexBuffer2KHR(unboxed_commandBuffer, buffer, offset, size,
+ indexType);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBindIndexBuffer2KHR(&m_pool, snapshotApiCallInfo,
@@ -16590,8 +17317,10 @@
ioStream, (unsigned long long)device,
(unsigned long long)pRenderingAreaInfo, (unsigned long long)pGranularity);
}
- vk->vkGetRenderingAreaGranularityKHR(unboxed_device, pRenderingAreaInfo,
- pGranularity);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetRenderingAreaGranularityKHR(unboxed_device, pRenderingAreaInfo,
+ pGranularity);
+ }
vkStream->unsetHandleMapping();
if (pGranularity) {
transform_fromhost_VkExtent2D(m_state, (VkExtent2D*)(pGranularity));
@@ -16648,7 +17377,9 @@
ioStream, (unsigned long long)device, (unsigned long long)pInfo,
(unsigned long long)pLayout);
}
- vk->vkGetDeviceImageSubresourceLayoutKHR(unboxed_device, pInfo, pLayout);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetDeviceImageSubresourceLayoutKHR(unboxed_device, pInfo, pLayout);
+ }
vkStream->unsetHandleMapping();
if (pLayout) {
transform_fromhost_VkSubresourceLayout2KHR(m_state,
@@ -16710,7 +17441,10 @@
ioStream, (unsigned long long)device, (unsigned long long)image,
(unsigned long long)pSubresource, (unsigned long long)pLayout);
}
- vk->vkGetImageSubresourceLayout2KHR(unboxed_device, image, pSubresource, pLayout);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetImageSubresourceLayout2KHR(unboxed_device, image, pSubresource,
+ pLayout);
+ }
vkStream->unsetHandleMapping();
if (pLayout) {
transform_fromhost_VkSubresourceLayout2KHR(m_state,
@@ -16757,8 +17491,10 @@
(unsigned long long)lineStippleFactor,
(unsigned long long)lineStipplePattern);
}
- vk->vkCmdSetLineStippleKHR(unboxed_commandBuffer, lineStippleFactor,
- lineStipplePattern);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetLineStippleKHR(unboxed_commandBuffer, lineStippleFactor,
+ lineStipplePattern);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetLineStippleKHR(
@@ -16784,6 +17520,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
memcpy((VkFormat*)&format, *readStreamPtrPtr, sizeof(VkFormat));
*readStreamPtrPtr += sizeof(VkFormat);
memcpy((VkImageUsageFlags*)&imageUsage, *readStreamPtrPtr,
@@ -16801,10 +17538,13 @@
ioStream, (unsigned long long)device, (unsigned long long)format,
(unsigned long long)imageUsage, (unsigned long long)grallocUsage);
}
- VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
- vkGetSwapchainGrallocUsageANDROID_VkResult_return =
- m_state->on_vkGetSwapchainGrallocUsageANDROID(
- &m_pool, snapshotApiCallInfo, device, format, imageUsage, grallocUsage);
+ VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetSwapchainGrallocUsageANDROID_VkResult_return =
+ m_state->on_vkGetSwapchainGrallocUsageANDROID(
+ &m_pool, snapshotApiCallInfo, device, format, imageUsage, grallocUsage);
+ }
if ((vkGetSwapchainGrallocUsageANDROID_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetSwapchainGrallocUsageANDROID_VkResult_return,
@@ -16838,6 +17578,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -16861,9 +17602,12 @@
(unsigned long long)nativeFenceFd, (unsigned long long)semaphore,
(unsigned long long)fence);
}
- VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
- vkAcquireImageANDROID_VkResult_return = m_state->on_vkAcquireImageANDROID(
- &m_pool, snapshotApiCallInfo, device, image, nativeFenceFd, semaphore, fence);
+ VkResult vkAcquireImageANDROID_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkAcquireImageANDROID_VkResult_return =
+ m_state->on_vkAcquireImageANDROID(&m_pool, snapshotApiCallInfo, device,
+ image, nativeFenceFd, semaphore, fence);
+ }
if ((vkAcquireImageANDROID_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkAcquireImageANDROID_VkResult_return, opcode,
@@ -16895,6 +17639,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
memcpy((uint32_t*)&waitSemaphoreCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
// WARNING PTR CHECK
@@ -16934,11 +17679,14 @@
(unsigned long long)pWaitSemaphores, (unsigned long long)image,
(unsigned long long)pNativeFenceFd);
}
- VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
- vkQueueSignalReleaseImageANDROID_VkResult_return =
- m_state->on_vkQueueSignalReleaseImageANDROID(
- &m_pool, snapshotApiCallInfo, queue, waitSemaphoreCount, pWaitSemaphores,
- image, pNativeFenceFd);
+ VkResult vkQueueSignalReleaseImageANDROID_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkQueueSignalReleaseImageANDROID_VkResult_return =
+ m_state->on_vkQueueSignalReleaseImageANDROID(
+ &m_pool, snapshotApiCallInfo, queue, waitSemaphoreCount,
+ pWaitSemaphores, image, pNativeFenceFd);
+ }
if ((vkQueueSignalReleaseImageANDROID_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkQueueSignalReleaseImageANDROID_VkResult_return,
@@ -16973,6 +17721,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
memcpy((VkFormat*)&format, *readStreamPtrPtr, sizeof(VkFormat));
*readStreamPtrPtr += sizeof(VkFormat);
memcpy((VkImageUsageFlags*)&imageUsage, *readStreamPtrPtr,
@@ -17000,11 +17749,14 @@
(unsigned long long)grallocConsumerUsage,
(unsigned long long)grallocProducerUsage);
}
- VkResult vkGetSwapchainGrallocUsage2ANDROID_VkResult_return = (VkResult)0;
- vkGetSwapchainGrallocUsage2ANDROID_VkResult_return =
- m_state->on_vkGetSwapchainGrallocUsage2ANDROID(
- &m_pool, snapshotApiCallInfo, device, format, imageUsage,
- swapchainImageUsage, grallocConsumerUsage, grallocProducerUsage);
+ VkResult vkGetSwapchainGrallocUsage2ANDROID_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetSwapchainGrallocUsage2ANDROID_VkResult_return =
+ m_state->on_vkGetSwapchainGrallocUsage2ANDROID(
+ &m_pool, snapshotApiCallInfo, device, format, imageUsage,
+ swapchainImageUsage, grallocConsumerUsage, grallocProducerUsage);
+ }
if ((vkGetSwapchainGrallocUsage2ANDROID_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetSwapchainGrallocUsage2ANDROID_VkResult_return,
@@ -17083,9 +17835,13 @@
ioStream, (unsigned long long)instance, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pCallback);
}
- VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
- vkCreateDebugReportCallbackEXT_VkResult_return = vk->vkCreateDebugReportCallbackEXT(
- unboxed_instance, pCreateInfo, pAllocator, pCallback);
+ VkResult vkCreateDebugReportCallbackEXT_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateDebugReportCallbackEXT_VkResult_return =
+ vk->vkCreateDebugReportCallbackEXT(unboxed_instance, pCreateInfo,
+ pAllocator, pCallback);
+ }
if ((vkCreateDebugReportCallbackEXT_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateDebugReportCallbackEXT_VkResult_return, opcode,
@@ -17161,7 +17917,9 @@
ioStream, (unsigned long long)instance, (unsigned long long)callback,
(unsigned long long)pAllocator);
}
- vk->vkDestroyDebugReportCallbackEXT(unboxed_instance, callback, pAllocator);
+ if (CC_LIKELY(vk)) {
+ vk->vkDestroyDebugReportCallbackEXT(unboxed_instance, callback, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyDebugReportCallbackEXT(
@@ -17218,8 +17976,10 @@
(unsigned long long)location, (unsigned long long)messageCode,
(unsigned long long)pLayerPrefix, (unsigned long long)pMessage);
}
- vk->vkDebugReportMessageEXT(unboxed_instance, flags, objectType, object, location,
- messageCode, pLayerPrefix, pMessage);
+ if (CC_LIKELY(vk)) {
+ vk->vkDebugReportMessageEXT(unboxed_instance, flags, objectType, object,
+ location, messageCode, pLayerPrefix, pMessage);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDebugReportMessageEXT(
@@ -17291,8 +18051,11 @@
(unsigned long long)pBuffers, (unsigned long long)pOffsets,
(unsigned long long)pSizes);
}
- vk->vkCmdBindTransformFeedbackBuffersEXT(unboxed_commandBuffer, firstBinding,
- bindingCount, pBuffers, pOffsets, pSizes);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBindTransformFeedbackBuffersEXT(unboxed_commandBuffer, firstBinding,
+ bindingCount, pBuffers, pOffsets,
+ pSizes);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBindTransformFeedbackBuffersEXT(
@@ -17365,9 +18128,11 @@
(unsigned long long)pCounterBuffers,
(unsigned long long)pCounterBufferOffsets);
}
- vk->vkCmdBeginTransformFeedbackEXT(unboxed_commandBuffer, firstCounterBuffer,
- counterBufferCount, pCounterBuffers,
- pCounterBufferOffsets);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBeginTransformFeedbackEXT(unboxed_commandBuffer, firstCounterBuffer,
+ counterBufferCount, pCounterBuffers,
+ pCounterBufferOffsets);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBeginTransformFeedbackEXT(
@@ -17441,9 +18206,11 @@
(unsigned long long)pCounterBuffers,
(unsigned long long)pCounterBufferOffsets);
}
- vk->vkCmdEndTransformFeedbackEXT(unboxed_commandBuffer, firstCounterBuffer,
- counterBufferCount, pCounterBuffers,
- pCounterBufferOffsets);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndTransformFeedbackEXT(unboxed_commandBuffer, firstCounterBuffer,
+ counterBufferCount, pCounterBuffers,
+ pCounterBufferOffsets);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdEndTransformFeedbackEXT(
@@ -17493,8 +18260,10 @@
(unsigned long long)queryPool, (unsigned long long)query,
(unsigned long long)flags, (unsigned long long)index);
}
- vk->vkCmdBeginQueryIndexedEXT(unboxed_commandBuffer, queryPool, query, flags,
- index);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBeginQueryIndexedEXT(unboxed_commandBuffer, queryPool, query, flags,
+ index);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBeginQueryIndexedEXT(&m_pool, snapshotApiCallInfo,
@@ -17538,7 +18307,9 @@
ioStream, (unsigned long long)commandBuffer, (unsigned long long)queryPool,
(unsigned long long)query, (unsigned long long)index);
}
- vk->vkCmdEndQueryIndexedEXT(unboxed_commandBuffer, queryPool, query, index);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndQueryIndexedEXT(unboxed_commandBuffer, queryPool, query, index);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdEndQueryIndexedEXT(&m_pool, snapshotApiCallInfo,
@@ -17594,9 +18365,11 @@
(unsigned long long)counterBufferOffset,
(unsigned long long)counterOffset, (unsigned long long)vertexStride);
}
- vk->vkCmdDrawIndirectByteCountEXT(unboxed_commandBuffer, instanceCount,
- firstInstance, counterBuffer, counterBufferOffset,
- counterOffset, vertexStride);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDrawIndirectByteCountEXT(
+ unboxed_commandBuffer, instanceCount, firstInstance, counterBuffer,
+ counterBufferOffset, counterOffset, vertexStride);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdDrawIndirectByteCountEXT(
@@ -17637,9 +18410,11 @@
fprintf(stderr, "stream %p: call vkSetDebugUtilsObjectNameEXT 0x%llx 0x%llx \n",
ioStream, (unsigned long long)device, (unsigned long long)pNameInfo);
}
- VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
- vkSetDebugUtilsObjectNameEXT_VkResult_return =
- vk->vkSetDebugUtilsObjectNameEXT(unboxed_device, pNameInfo);
+ VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkSetDebugUtilsObjectNameEXT_VkResult_return =
+ vk->vkSetDebugUtilsObjectNameEXT(unboxed_device, pNameInfo);
+ }
if ((vkSetDebugUtilsObjectNameEXT_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkSetDebugUtilsObjectNameEXT_VkResult_return, opcode,
@@ -17682,9 +18457,11 @@
fprintf(stderr, "stream %p: call vkSetDebugUtilsObjectTagEXT 0x%llx 0x%llx \n",
ioStream, (unsigned long long)device, (unsigned long long)pTagInfo);
}
- VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
- vkSetDebugUtilsObjectTagEXT_VkResult_return =
- vk->vkSetDebugUtilsObjectTagEXT(unboxed_device, pTagInfo);
+ VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkSetDebugUtilsObjectTagEXT_VkResult_return =
+ vk->vkSetDebugUtilsObjectTagEXT(unboxed_device, pTagInfo);
+ }
if ((vkSetDebugUtilsObjectTagEXT_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkSetDebugUtilsObjectTagEXT_VkResult_return, opcode,
@@ -17728,7 +18505,9 @@
"stream %p: call vkQueueBeginDebugUtilsLabelEXT 0x%llx 0x%llx \n",
ioStream, (unsigned long long)queue, (unsigned long long)pLabelInfo);
}
- vk->vkQueueBeginDebugUtilsLabelEXT(unboxed_queue, pLabelInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkQueueBeginDebugUtilsLabelEXT(unboxed_queue, pLabelInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkQueueBeginDebugUtilsLabelEXT(
@@ -17755,7 +18534,9 @@
fprintf(stderr, "stream %p: call vkQueueEndDebugUtilsLabelEXT 0x%llx \n",
ioStream, (unsigned long long)queue);
}
- vk->vkQueueEndDebugUtilsLabelEXT(unboxed_queue);
+ if (CC_LIKELY(vk)) {
+ vk->vkQueueEndDebugUtilsLabelEXT(unboxed_queue);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkQueueEndDebugUtilsLabelEXT(&m_pool, snapshotApiCallInfo,
@@ -17792,7 +18573,9 @@
"stream %p: call vkQueueInsertDebugUtilsLabelEXT 0x%llx 0x%llx \n",
ioStream, (unsigned long long)queue, (unsigned long long)pLabelInfo);
}
- vk->vkQueueInsertDebugUtilsLabelEXT(unboxed_queue, pLabelInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkQueueInsertDebugUtilsLabelEXT(unboxed_queue, pLabelInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkQueueInsertDebugUtilsLabelEXT(
@@ -17830,7 +18613,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pLabelInfo);
}
- vk->vkCmdBeginDebugUtilsLabelEXT(unboxed_commandBuffer, pLabelInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBeginDebugUtilsLabelEXT(unboxed_commandBuffer, pLabelInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBeginDebugUtilsLabelEXT(
@@ -17858,7 +18643,9 @@
fprintf(stderr, "stream %p: call vkCmdEndDebugUtilsLabelEXT 0x%llx \n",
ioStream, (unsigned long long)commandBuffer);
}
- vk->vkCmdEndDebugUtilsLabelEXT(unboxed_commandBuffer);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndDebugUtilsLabelEXT(unboxed_commandBuffer);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdEndDebugUtilsLabelEXT(
@@ -17897,7 +18684,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pLabelInfo);
}
- vk->vkCmdInsertDebugUtilsLabelEXT(unboxed_commandBuffer, pLabelInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdInsertDebugUtilsLabelEXT(unboxed_commandBuffer, pLabelInfo);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdInsertDebugUtilsLabelEXT(
@@ -17962,9 +18751,13 @@
ioStream, (unsigned long long)instance, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pMessenger);
}
- VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
- vkCreateDebugUtilsMessengerEXT_VkResult_return = vk->vkCreateDebugUtilsMessengerEXT(
- unboxed_instance, pCreateInfo, pAllocator, pMessenger);
+ VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateDebugUtilsMessengerEXT_VkResult_return =
+ vk->vkCreateDebugUtilsMessengerEXT(unboxed_instance, pCreateInfo,
+ pAllocator, pMessenger);
+ }
if ((vkCreateDebugUtilsMessengerEXT_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateDebugUtilsMessengerEXT_VkResult_return, opcode,
@@ -18040,7 +18833,9 @@
ioStream, (unsigned long long)instance, (unsigned long long)messenger,
(unsigned long long)pAllocator);
}
- vk->vkDestroyDebugUtilsMessengerEXT(unboxed_instance, messenger, pAllocator);
+ if (CC_LIKELY(vk)) {
+ vk->vkDestroyDebugUtilsMessengerEXT(unboxed_instance, messenger, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyDebugUtilsMessengerEXT(
@@ -18091,8 +18886,10 @@
(unsigned long long)messageSeverity, (unsigned long long)messageTypes,
(unsigned long long)pCallbackData);
}
- vk->vkSubmitDebugUtilsMessageEXT(unboxed_instance, messageSeverity, messageTypes,
- pCallbackData);
+ if (CC_LIKELY(vk)) {
+ vk->vkSubmitDebugUtilsMessageEXT(unboxed_instance, messageSeverity,
+ messageTypes, pCallbackData);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkSubmitDebugUtilsMessageEXT(
@@ -18142,10 +18939,13 @@
ioStream, (unsigned long long)device, (unsigned long long)image,
(unsigned long long)pProperties);
}
- VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
- vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return =
- vk->vkGetImageDrmFormatModifierPropertiesEXT(unboxed_device, image,
- pProperties);
+ VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return =
+ vk->vkGetImageDrmFormatModifierPropertiesEXT(unboxed_device, image,
+ pProperties);
+ }
if ((vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return) ==
VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
@@ -18216,10 +19016,13 @@
(unsigned long long)pHostPointer,
(unsigned long long)pMemoryHostPointerProperties);
}
- VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
- vkGetMemoryHostPointerPropertiesEXT_VkResult_return =
- vk->vkGetMemoryHostPointerPropertiesEXT(
- unboxed_device, handleType, pHostPointer, pMemoryHostPointerProperties);
+ VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetMemoryHostPointerPropertiesEXT_VkResult_return =
+ vk->vkGetMemoryHostPointerPropertiesEXT(
+ unboxed_device, handleType, pHostPointer, pMemoryHostPointerProperties);
+ }
if ((vkGetMemoryHostPointerPropertiesEXT_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetMemoryHostPointerPropertiesEXT_VkResult_return,
@@ -18305,10 +19108,13 @@
ioStream, (unsigned long long)physicalDevice,
(unsigned long long)pToolCount, (unsigned long long)pToolProperties);
}
- VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = (VkResult)0;
- vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return =
- vk->vkGetPhysicalDeviceToolPropertiesEXT(unboxed_physicalDevice, pToolCount,
- pToolProperties);
+ VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return =
+ vk->vkGetPhysicalDeviceToolPropertiesEXT(unboxed_physicalDevice, pToolCount,
+ pToolProperties);
+ }
if ((vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return,
@@ -18382,8 +19188,10 @@
(unsigned long long)lineStippleFactor,
(unsigned long long)lineStipplePattern);
}
- vk->vkCmdSetLineStippleEXT(unboxed_commandBuffer, lineStippleFactor,
- lineStipplePattern);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetLineStippleEXT(unboxed_commandBuffer, lineStippleFactor,
+ lineStipplePattern);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetLineStippleEXT(
@@ -18418,7 +19226,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)cullMode);
}
- vk->vkCmdSetCullModeEXT(unboxed_commandBuffer, cullMode);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetCullModeEXT(unboxed_commandBuffer, cullMode);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetCullModeEXT(&m_pool, snapshotApiCallInfo, packet,
@@ -18450,7 +19260,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)frontFace);
}
- vk->vkCmdSetFrontFaceEXT(unboxed_commandBuffer, frontFace);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetFrontFaceEXT(unboxed_commandBuffer, frontFace);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetFrontFaceEXT(&m_pool, snapshotApiCallInfo, packet,
@@ -18483,7 +19295,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)primitiveTopology);
}
- vk->vkCmdSetPrimitiveTopologyEXT(unboxed_commandBuffer, primitiveTopology);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetPrimitiveTopologyEXT(unboxed_commandBuffer, primitiveTopology);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetPrimitiveTopologyEXT(
@@ -18529,7 +19343,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)viewportCount, (unsigned long long)pViewports);
}
- vk->vkCmdSetViewportWithCountEXT(unboxed_commandBuffer, viewportCount, pViewports);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetViewportWithCountEXT(unboxed_commandBuffer, viewportCount,
+ pViewports);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetViewportWithCountEXT(
@@ -18574,7 +19391,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)scissorCount, (unsigned long long)pScissors);
}
- vk->vkCmdSetScissorWithCountEXT(unboxed_commandBuffer, scissorCount, pScissors);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetScissorWithCountEXT(unboxed_commandBuffer, scissorCount, pScissors);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetScissorWithCountEXT(
@@ -18664,8 +19483,11 @@
(unsigned long long)pBuffers, (unsigned long long)pOffsets,
(unsigned long long)pSizes, (unsigned long long)pStrides);
}
- vk->vkCmdBindVertexBuffers2EXT(unboxed_commandBuffer, firstBinding, bindingCount,
- pBuffers, pOffsets, pSizes, pStrides);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBindVertexBuffers2EXT(unboxed_commandBuffer, firstBinding,
+ bindingCount, pBuffers, pOffsets, pSizes,
+ pStrides);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdBindVertexBuffers2EXT(
@@ -18698,7 +19520,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)depthTestEnable);
}
- vk->vkCmdSetDepthTestEnableEXT(unboxed_commandBuffer, depthTestEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthTestEnableEXT(unboxed_commandBuffer, depthTestEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetDepthTestEnableEXT(&m_pool, snapshotApiCallInfo,
@@ -18731,7 +19555,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)depthWriteEnable);
}
- vk->vkCmdSetDepthWriteEnableEXT(unboxed_commandBuffer, depthWriteEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthWriteEnableEXT(unboxed_commandBuffer, depthWriteEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetDepthWriteEnableEXT(
@@ -18764,7 +19590,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)depthCompareOp);
}
- vk->vkCmdSetDepthCompareOpEXT(unboxed_commandBuffer, depthCompareOp);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthCompareOpEXT(unboxed_commandBuffer, depthCompareOp);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetDepthCompareOpEXT(&m_pool, snapshotApiCallInfo,
@@ -18798,7 +19626,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)depthBoundsTestEnable);
}
- vk->vkCmdSetDepthBoundsTestEnableEXT(unboxed_commandBuffer, depthBoundsTestEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthBoundsTestEnableEXT(unboxed_commandBuffer,
+ depthBoundsTestEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetDepthBoundsTestEnableEXT(
@@ -18831,7 +19662,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)stencilTestEnable);
}
- vk->vkCmdSetStencilTestEnableEXT(unboxed_commandBuffer, stencilTestEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilTestEnableEXT(unboxed_commandBuffer, stencilTestEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetStencilTestEnableEXT(
@@ -18881,8 +19714,10 @@
(unsigned long long)passOp, (unsigned long long)depthFailOp,
(unsigned long long)compareOp);
}
- vk->vkCmdSetStencilOpEXT(unboxed_commandBuffer, faceMask, failOp, passOp,
- depthFailOp, compareOp);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilOpEXT(unboxed_commandBuffer, faceMask, failOp, passOp,
+ depthFailOp, compareOp);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetStencilOpEXT(
@@ -18923,9 +19758,11 @@
ioStream, (unsigned long long)device,
(unsigned long long)pCopyMemoryToImageInfo);
}
- VkResult vkCopyMemoryToImageEXT_VkResult_return = (VkResult)0;
- vkCopyMemoryToImageEXT_VkResult_return =
- vk->vkCopyMemoryToImageEXT(unboxed_device, pCopyMemoryToImageInfo);
+ VkResult vkCopyMemoryToImageEXT_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCopyMemoryToImageEXT_VkResult_return =
+ vk->vkCopyMemoryToImageEXT(unboxed_device, pCopyMemoryToImageInfo);
+ }
if ((vkCopyMemoryToImageEXT_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCopyMemoryToImageEXT_VkResult_return, opcode,
@@ -18970,9 +19807,11 @@
ioStream, (unsigned long long)device,
(unsigned long long)pCopyImageToMemoryInfo);
}
- VkResult vkCopyImageToMemoryEXT_VkResult_return = (VkResult)0;
- vkCopyImageToMemoryEXT_VkResult_return =
- vk->vkCopyImageToMemoryEXT(unboxed_device, pCopyImageToMemoryInfo);
+ VkResult vkCopyImageToMemoryEXT_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCopyImageToMemoryEXT_VkResult_return =
+ vk->vkCopyImageToMemoryEXT(unboxed_device, pCopyImageToMemoryInfo);
+ }
if ((vkCopyImageToMemoryEXT_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCopyImageToMemoryEXT_VkResult_return, opcode,
@@ -19017,9 +19856,11 @@
ioStream, (unsigned long long)device,
(unsigned long long)pCopyImageToImageInfo);
}
- VkResult vkCopyImageToImageEXT_VkResult_return = (VkResult)0;
- vkCopyImageToImageEXT_VkResult_return =
- vk->vkCopyImageToImageEXT(unboxed_device, pCopyImageToImageInfo);
+ VkResult vkCopyImageToImageEXT_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCopyImageToImageEXT_VkResult_return =
+ vk->vkCopyImageToImageEXT(unboxed_device, pCopyImageToImageInfo);
+ }
if ((vkCopyImageToImageEXT_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCopyImageToImageEXT_VkResult_return, opcode,
@@ -19073,9 +19914,11 @@
ioStream, (unsigned long long)device,
(unsigned long long)transitionCount, (unsigned long long)pTransitions);
}
- VkResult vkTransitionImageLayoutEXT_VkResult_return = (VkResult)0;
- vkTransitionImageLayoutEXT_VkResult_return =
- vk->vkTransitionImageLayoutEXT(unboxed_device, transitionCount, pTransitions);
+ VkResult vkTransitionImageLayoutEXT_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkTransitionImageLayoutEXT_VkResult_return = vk->vkTransitionImageLayoutEXT(
+ unboxed_device, transitionCount, pTransitions);
+ }
if ((vkTransitionImageLayoutEXT_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkTransitionImageLayoutEXT_VkResult_return, opcode,
@@ -19138,7 +19981,10 @@
ioStream, (unsigned long long)device, (unsigned long long)image,
(unsigned long long)pSubresource, (unsigned long long)pLayout);
}
- vk->vkGetImageSubresourceLayout2EXT(unboxed_device, image, pSubresource, pLayout);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetImageSubresourceLayout2EXT(unboxed_device, image, pSubresource,
+ pLayout);
+ }
vkStream->unsetHandleMapping();
if (pLayout) {
transform_fromhost_VkSubresourceLayout2KHR(m_state,
@@ -19185,9 +20031,11 @@
fprintf(stderr, "stream %p: call vkReleaseSwapchainImagesEXT 0x%llx 0x%llx \n",
ioStream, (unsigned long long)device, (unsigned long long)pReleaseInfo);
}
- VkResult vkReleaseSwapchainImagesEXT_VkResult_return = (VkResult)0;
- vkReleaseSwapchainImagesEXT_VkResult_return =
- vk->vkReleaseSwapchainImagesEXT(unboxed_device, pReleaseInfo);
+ VkResult vkReleaseSwapchainImagesEXT_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkReleaseSwapchainImagesEXT_VkResult_return =
+ vk->vkReleaseSwapchainImagesEXT(unboxed_device, pReleaseInfo);
+ }
if ((vkReleaseSwapchainImagesEXT_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkReleaseSwapchainImagesEXT_VkResult_return, opcode,
@@ -19260,9 +20108,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pAllocator, (unsigned long long)pPrivateDataSlot);
}
- VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
- vkCreatePrivateDataSlotEXT_VkResult_return = vk->vkCreatePrivateDataSlotEXT(
- unboxed_device, pCreateInfo, pAllocator, pPrivateDataSlot);
+ VkResult vkCreatePrivateDataSlotEXT_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreatePrivateDataSlotEXT_VkResult_return = vk->vkCreatePrivateDataSlotEXT(
+ unboxed_device, pCreateInfo, pAllocator, pPrivateDataSlot);
+ }
if ((vkCreatePrivateDataSlotEXT_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreatePrivateDataSlotEXT_VkResult_return, opcode,
@@ -19324,7 +20174,9 @@
ioStream, (unsigned long long)device,
(unsigned long long)privateDataSlot, (unsigned long long)pAllocator);
}
- vk->vkDestroyPrivateDataSlotEXT(unboxed_device, privateDataSlot, pAllocator);
+ if (CC_LIKELY(vk)) {
+ vk->vkDestroyPrivateDataSlotEXT(unboxed_device, privateDataSlot, pAllocator);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkDestroyPrivateDataSlotEXT(&m_pool, snapshotApiCallInfo,
@@ -19371,9 +20223,11 @@
(unsigned long long)objectHandle, (unsigned long long)privateDataSlot,
(unsigned long long)data);
}
- VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
- vkSetPrivateDataEXT_VkResult_return = vk->vkSetPrivateDataEXT(
- unboxed_device, objectType, objectHandle, privateDataSlot, data);
+ VkResult vkSetPrivateDataEXT_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkSetPrivateDataEXT_VkResult_return = vk->vkSetPrivateDataEXT(
+ unboxed_device, objectType, objectHandle, privateDataSlot, data);
+ }
if ((vkSetPrivateDataEXT_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkSetPrivateDataEXT_VkResult_return, opcode, context);
@@ -19429,8 +20283,10 @@
(unsigned long long)objectHandle, (unsigned long long)privateDataSlot,
(unsigned long long)pData);
}
- vk->vkGetPrivateDataEXT(unboxed_device, objectType, objectHandle, privateDataSlot,
- pData);
+ if (CC_LIKELY(vk)) {
+ vk->vkGetPrivateDataEXT(unboxed_device, objectType, objectHandle,
+ privateDataSlot, pData);
+ }
vkStream->unsetHandleMapping();
vkStream->write((uint64_t*)pData, sizeof(uint64_t));
vkStream->commitWrite();
@@ -19468,7 +20324,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)patchControlPoints);
}
- vk->vkCmdSetPatchControlPointsEXT(unboxed_commandBuffer, patchControlPoints);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetPatchControlPointsEXT(unboxed_commandBuffer, patchControlPoints);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetPatchControlPointsEXT(
@@ -19502,8 +20360,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)rasterizerDiscardEnable);
}
- vk->vkCmdSetRasterizerDiscardEnableEXT(unboxed_commandBuffer,
- rasterizerDiscardEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetRasterizerDiscardEnableEXT(unboxed_commandBuffer,
+ rasterizerDiscardEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetRasterizerDiscardEnableEXT(
@@ -19536,7 +20396,9 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)depthBiasEnable);
}
- vk->vkCmdSetDepthBiasEnableEXT(unboxed_commandBuffer, depthBiasEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthBiasEnableEXT(unboxed_commandBuffer, depthBiasEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetDepthBiasEnableEXT(&m_pool, snapshotApiCallInfo,
@@ -19568,7 +20430,9 @@
fprintf(stderr, "stream %p: call vkCmdSetLogicOpEXT 0x%llx 0x%llx \n", ioStream,
(unsigned long long)commandBuffer, (unsigned long long)logicOp);
}
- vk->vkCmdSetLogicOpEXT(unboxed_commandBuffer, logicOp);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetLogicOpEXT(unboxed_commandBuffer, logicOp);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetLogicOpEXT(&m_pool, snapshotApiCallInfo, packet,
@@ -19601,8 +20465,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)primitiveRestartEnable);
}
- vk->vkCmdSetPrimitiveRestartEnableEXT(unboxed_commandBuffer,
- primitiveRestartEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetPrimitiveRestartEnableEXT(unboxed_commandBuffer,
+ primitiveRestartEnable);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetPrimitiveRestartEnableEXT(
@@ -19645,8 +20511,10 @@
(unsigned long long)attachmentCount,
(unsigned long long)pColorWriteEnables);
}
- vk->vkCmdSetColorWriteEnableEXT(unboxed_commandBuffer, attachmentCount,
- pColorWriteEnables);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetColorWriteEnableEXT(unboxed_commandBuffer, attachmentCount,
+ pColorWriteEnables);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetColorWriteEnableEXT(
@@ -19671,6 +20539,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -19694,10 +20563,13 @@
ioStream, (unsigned long long)device, (unsigned long long)memory,
(unsigned long long)pAddress);
}
- VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
- vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return =
- m_state->on_vkMapMemoryIntoAddressSpaceGOOGLE(&m_pool, snapshotApiCallInfo,
- device, memory, pAddress);
+ VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return =
+ m_state->on_vkMapMemoryIntoAddressSpaceGOOGLE(&m_pool, snapshotApiCallInfo,
+ device, memory, pAddress);
+ }
if ((vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return,
@@ -19743,6 +20615,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -19865,11 +20738,13 @@
(unsigned long long)pImageInfos, (unsigned long long)pBufferInfos,
(unsigned long long)pBufferViews);
}
- m_state->on_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
- &m_pool, snapshotApiCallInfo, device, descriptorSet, descriptorUpdateTemplate,
- imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices,
- pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos,
- pBufferViews);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
+ &m_pool, snapshotApiCallInfo, device, descriptorSet,
+ descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount,
+ pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices,
+ pImageInfos, pBufferInfos, pBufferViews);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
@@ -19894,6 +20769,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
vkReadStream->alloc((void**)&pBeginInfo, sizeof(const VkCommandBufferBeginInfo));
reservedunmarshal_VkCommandBufferBeginInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkCommandBufferBeginInfo*)(pBeginInfo),
@@ -19908,8 +20784,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pBeginInfo);
}
- m_state->on_vkBeginCommandBufferAsyncGOOGLE(&m_pool, snapshotApiCallInfo,
- commandBuffer, pBeginInfo, context);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkBeginCommandBufferAsyncGOOGLE(&m_pool, snapshotApiCallInfo,
+ commandBuffer, pBeginInfo, context);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkBeginCommandBufferAsyncGOOGLE(
@@ -19930,12 +20808,15 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
if (m_logCalls) {
fprintf(stderr, "stream %p: call vkEndCommandBufferAsyncGOOGLE 0x%llx \n",
ioStream, (unsigned long long)commandBuffer);
}
- m_state->on_vkEndCommandBufferAsyncGOOGLE(&m_pool, snapshotApiCallInfo,
- commandBuffer, context);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkEndCommandBufferAsyncGOOGLE(&m_pool, snapshotApiCallInfo,
+ commandBuffer, context);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkEndCommandBufferAsyncGOOGLE(
@@ -19957,6 +20838,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
memcpy((VkCommandBufferResetFlags*)&flags, *readStreamPtrPtr,
sizeof(VkCommandBufferResetFlags));
*readStreamPtrPtr += sizeof(VkCommandBufferResetFlags);
@@ -19965,8 +20847,10 @@
"stream %p: call vkResetCommandBufferAsyncGOOGLE 0x%llx 0x%llx \n",
ioStream, (unsigned long long)commandBuffer, (unsigned long long)flags);
}
- m_state->on_vkResetCommandBufferAsyncGOOGLE(&m_pool, snapshotApiCallInfo,
- commandBuffer, flags);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkResetCommandBufferAsyncGOOGLE(&m_pool, snapshotApiCallInfo,
+ commandBuffer, flags);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkResetCommandBufferAsyncGOOGLE(
@@ -19989,6 +20873,7 @@
*readStreamPtrPtr += 1 * 8;
*(VkCommandBuffer*)&commandBuffer =
(VkCommandBuffer)(VkCommandBuffer)((VkCommandBuffer)(*&cgen_var_0));
+ auto vk = dispatch_VkCommandBuffer(commandBuffer);
memcpy((uint32_t*)&needHostSync, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&sequenceNumber, *readStreamPtrPtr, sizeof(uint32_t));
@@ -19999,8 +20884,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)needHostSync, (unsigned long long)sequenceNumber);
}
- m_state->on_vkCommandBufferHostSyncGOOGLE(
- &m_pool, snapshotApiCallInfo, commandBuffer, needHostSync, sequenceNumber);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCommandBufferHostSyncGOOGLE(
+ &m_pool, snapshotApiCallInfo, commandBuffer, needHostSync, sequenceNumber);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCommandBufferHostSyncGOOGLE(
@@ -20025,6 +20912,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkImageCreateInfo));
reservedunmarshal_VkImageCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkImageCreateInfo*)(pCreateInfo),
@@ -20072,11 +20960,14 @@
(unsigned long long)pAllocator, (unsigned long long)pImage,
(unsigned long long)pMemoryRequirements);
}
- VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
- vkCreateImageWithRequirementsGOOGLE_VkResult_return =
- m_state->on_vkCreateImageWithRequirementsGOOGLE(&m_pool, snapshotApiCallInfo,
- device, pCreateInfo, pAllocator,
- pImage, pMemoryRequirements);
+ VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateImageWithRequirementsGOOGLE_VkResult_return =
+ m_state->on_vkCreateImageWithRequirementsGOOGLE(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pImage,
+ pMemoryRequirements);
+ }
if ((vkCreateImageWithRequirementsGOOGLE_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateImageWithRequirementsGOOGLE_VkResult_return,
@@ -20124,6 +21015,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkBufferCreateInfo));
reservedunmarshal_VkBufferCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkBufferCreateInfo*)(pCreateInfo),
@@ -20171,11 +21063,14 @@
(unsigned long long)pAllocator, (unsigned long long)pBuffer,
(unsigned long long)pMemoryRequirements);
}
- VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
- vkCreateBufferWithRequirementsGOOGLE_VkResult_return =
- m_state->on_vkCreateBufferWithRequirementsGOOGLE(
- &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pBuffer,
- pMemoryRequirements);
+ VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateBufferWithRequirementsGOOGLE_VkResult_return =
+ m_state->on_vkCreateBufferWithRequirementsGOOGLE(
+ &m_pool, snapshotApiCallInfo, device, pCreateInfo, pAllocator, pBuffer,
+ pMemoryRequirements);
+ }
if ((vkCreateBufferWithRequirementsGOOGLE_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateBufferWithRequirementsGOOGLE_VkResult_return,
@@ -20223,6 +21118,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -20269,10 +21165,14 @@
(unsigned long long)pAddress, (unsigned long long)pSize,
(unsigned long long)pHostmemId);
}
- VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
- vkGetMemoryHostAddressInfoGOOGLE_VkResult_return =
- m_state->on_vkGetMemoryHostAddressInfoGOOGLE(
- &m_pool, snapshotApiCallInfo, device, memory, pAddress, pSize, pHostmemId);
+ VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetMemoryHostAddressInfoGOOGLE_VkResult_return =
+ m_state->on_vkGetMemoryHostAddressInfoGOOGLE(&m_pool, snapshotApiCallInfo,
+ device, memory, pAddress,
+ pSize, pHostmemId);
+ }
if ((vkGetMemoryHostAddressInfoGOOGLE_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetMemoryHostAddressInfoGOOGLE_VkResult_return,
@@ -20321,6 +21221,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
// Begin manual non dispatchable handle destroy unboxing for memory;
VkDeviceMemory boxed_memory_preserve;
uint64_t cgen_var_1;
@@ -20350,9 +21251,11 @@
ioStream, (unsigned long long)device, (unsigned long long)memory,
(unsigned long long)pAllocator);
}
- VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
- vkFreeMemorySyncGOOGLE_VkResult_return = m_state->on_vkFreeMemorySyncGOOGLE(
- &m_pool, snapshotApiCallInfo, device, memory, pAllocator);
+ VkResult vkFreeMemorySyncGOOGLE_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkFreeMemorySyncGOOGLE_VkResult_return = m_state->on_vkFreeMemorySyncGOOGLE(
+ &m_pool, snapshotApiCallInfo, device, memory, pAllocator);
+ }
if ((vkFreeMemorySyncGOOGLE_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkFreeMemorySyncGOOGLE_VkResult_return, opcode,
@@ -20383,6 +21286,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
memcpy((uint32_t*)&needHostSync, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&sequenceNumber, *readStreamPtrPtr, sizeof(uint32_t));
@@ -20392,8 +21296,10 @@
ioStream, (unsigned long long)queue, (unsigned long long)needHostSync,
(unsigned long long)sequenceNumber);
}
- m_state->on_vkQueueHostSyncGOOGLE(&m_pool, snapshotApiCallInfo, queue, needHostSync,
- sequenceNumber);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkQueueHostSyncGOOGLE(&m_pool, snapshotApiCallInfo, queue,
+ needHostSync, sequenceNumber);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkQueueHostSyncGOOGLE(&m_pool, snapshotApiCallInfo, packet,
@@ -20417,6 +21323,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
memcpy((uint32_t*)&submitCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pSubmits,
@@ -20441,8 +21348,10 @@
ioStream, (unsigned long long)queue, (unsigned long long)submitCount,
(unsigned long long)pSubmits, (unsigned long long)fence);
}
- m_state->on_vkQueueSubmitAsyncGOOGLE(&m_pool, snapshotApiCallInfo, queue,
- submitCount, pSubmits, fence);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkQueueSubmitAsyncGOOGLE(&m_pool, snapshotApiCallInfo, queue,
+ submitCount, pSubmits, fence);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkQueueSubmitAsyncGOOGLE(&m_pool, snapshotApiCallInfo,
@@ -20463,11 +21372,14 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
if (m_logCalls) {
fprintf(stderr, "stream %p: call vkQueueWaitIdleAsyncGOOGLE 0x%llx \n",
ioStream, (unsigned long long)queue);
}
- m_state->on_vkQueueWaitIdleAsyncGOOGLE(&m_pool, snapshotApiCallInfo, queue);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkQueueWaitIdleAsyncGOOGLE(&m_pool, snapshotApiCallInfo, queue);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkQueueWaitIdleAsyncGOOGLE(&m_pool, snapshotApiCallInfo,
@@ -20490,6 +21402,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
memcpy((uint32_t*)&bindInfoCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pBindInfo,
@@ -20516,8 +21429,10 @@
ioStream, (unsigned long long)queue, (unsigned long long)bindInfoCount,
(unsigned long long)pBindInfo, (unsigned long long)fence);
}
- m_state->on_vkQueueBindSparseAsyncGOOGLE(&m_pool, snapshotApiCallInfo, queue,
- bindInfoCount, pBindInfo, fence);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkQueueBindSparseAsyncGOOGLE(&m_pool, snapshotApiCallInfo, queue,
+ bindInfoCount, pBindInfo, fence);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkQueueBindSparseAsyncGOOGLE(
@@ -20541,6 +21456,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
memcpy((VkFormat*)&format, *readStreamPtrPtr, sizeof(VkFormat));
*readStreamPtrPtr += sizeof(VkFormat);
// Begin manual dispatchable handle unboxing for pOffset;
@@ -20560,8 +21476,10 @@
ioStream, (unsigned long long)device, (unsigned long long)format,
(unsigned long long)pOffset, (unsigned long long)pRowPitchAlignment);
}
- m_state->on_vkGetLinearImageLayoutGOOGLE(&m_pool, snapshotApiCallInfo, device,
- format, pOffset, pRowPitchAlignment);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetLinearImageLayoutGOOGLE(&m_pool, snapshotApiCallInfo, device,
+ format, pOffset, pRowPitchAlignment);
+ }
vkStream->unsetHandleMapping();
vkStream->write((VkDeviceSize*)pOffset, sizeof(VkDeviceSize));
vkStream->write((VkDeviceSize*)pRowPitchAlignment, sizeof(VkDeviceSize));
@@ -20588,6 +21506,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
vkReadStream->alloc((void**)&pCreateInfo, sizeof(const VkImageCreateInfo));
reservedunmarshal_VkImageCreateInfo(vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
(VkImageCreateInfo*)(pCreateInfo),
@@ -20613,8 +21532,11 @@
ioStream, (unsigned long long)device, (unsigned long long)pCreateInfo,
(unsigned long long)pOffset, (unsigned long long)pRowPitchAlignment);
}
- m_state->on_vkGetLinearImageLayout2GOOGLE(&m_pool, snapshotApiCallInfo, device,
- pCreateInfo, pOffset, pRowPitchAlignment);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkGetLinearImageLayout2GOOGLE(&m_pool, snapshotApiCallInfo, device,
+ pCreateInfo, pOffset,
+ pRowPitchAlignment);
+ }
vkStream->unsetHandleMapping();
vkStream->write((VkDeviceSize*)pOffset, sizeof(VkDeviceSize));
vkStream->write((VkDeviceSize*)pRowPitchAlignment, sizeof(VkDeviceSize));
@@ -20641,6 +21563,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
// No unbox for commandBuffer
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
@@ -20661,8 +21584,10 @@
}
if (m_queueSubmitWithCommandsEnabled)
seqnoPtr->fetch_add(1, std::memory_order_seq_cst);
- m_state->on_vkQueueFlushCommandsGOOGLE(&m_pool, snapshotApiCallInfo, queue,
- commandBuffer, dataSize, pData, context);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkQueueFlushCommandsGOOGLE(&m_pool, snapshotApiCallInfo, queue,
+ commandBuffer, dataSize, pData, context);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkQueueFlushCommandsGOOGLE(&m_pool, snapshotApiCallInfo,
@@ -20691,6 +21616,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
memcpy((uint32_t*)&descriptorPoolCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pDescriptorPools,
@@ -20775,11 +21701,14 @@
(unsigned long long)pendingDescriptorWriteCount,
(unsigned long long)pPendingDescriptorWrites);
}
- m_state->on_vkQueueCommitDescriptorSetUpdatesGOOGLE(
- &m_pool, snapshotApiCallInfo, queue, descriptorPoolCount, pDescriptorPools,
- descriptorSetCount, pSetLayouts, pDescriptorSetPoolIds, pDescriptorSetWhichPool,
- pDescriptorSetPendingAllocation, pDescriptorWriteStartingIndices,
- pendingDescriptorWriteCount, pPendingDescriptorWrites);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkQueueCommitDescriptorSetUpdatesGOOGLE(
+ &m_pool, snapshotApiCallInfo, queue, descriptorPoolCount, pDescriptorPools,
+ descriptorSetCount, pSetLayouts, pDescriptorSetPoolIds,
+ pDescriptorSetWhichPool, pDescriptorSetPendingAllocation,
+ pDescriptorWriteStartingIndices, pendingDescriptorWriteCount,
+ pPendingDescriptorWrites);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkQueueCommitDescriptorSetUpdatesGOOGLE(
@@ -20806,6 +21735,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -20836,8 +21766,11 @@
(unsigned long long)descriptorPool, (unsigned long long)pPoolIdCount,
(unsigned long long)pPoolIds);
}
- m_state->on_vkCollectDescriptorPoolIdsGOOGLE(
- &m_pool, snapshotApiCallInfo, device, descriptorPool, pPoolIdCount, pPoolIds);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkCollectDescriptorPoolIdsGOOGLE(&m_pool, snapshotApiCallInfo,
+ device, descriptorPool,
+ pPoolIdCount, pPoolIds);
+ }
vkStream->unsetHandleMapping();
vkStream->write((uint32_t*)pPoolIdCount, sizeof(uint32_t));
// WARNING PTR CHECK
@@ -20869,6 +21802,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
memcpy((uint32_t*)&waitSemaphoreCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
// WARNING PTR CHECK
@@ -20902,9 +21836,11 @@
(unsigned long long)waitSemaphoreCount,
(unsigned long long)pWaitSemaphores, (unsigned long long)image);
}
- m_state->on_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(
- &m_pool, snapshotApiCallInfo, queue, waitSemaphoreCount, pWaitSemaphores,
- image);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(
+ &m_pool, snapshotApiCallInfo, queue, waitSemaphoreCount, pWaitSemaphores,
+ image);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(
@@ -20929,6 +21865,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
// No unbox for commandBuffer
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
@@ -20952,9 +21889,11 @@
(unsigned long long)deviceMemory, (unsigned long long)dataOffset,
(unsigned long long)dataSize);
}
- m_state->on_vkQueueFlushCommandsFromAuxMemoryGOOGLE(
- &m_pool, snapshotApiCallInfo, queue, commandBuffer, deviceMemory, dataOffset,
- dataSize, context);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkQueueFlushCommandsFromAuxMemoryGOOGLE(
+ &m_pool, snapshotApiCallInfo, queue, commandBuffer, deviceMemory,
+ dataOffset, dataSize, context);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkQueueFlushCommandsFromAuxMemoryGOOGLE(
@@ -20976,6 +21915,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -20985,9 +21925,11 @@
fprintf(stderr, "stream %p: call vkGetBlobGOOGLE 0x%llx 0x%llx \n", ioStream,
(unsigned long long)device, (unsigned long long)memory);
}
- VkResult vkGetBlobGOOGLE_VkResult_return = (VkResult)0;
- vkGetBlobGOOGLE_VkResult_return =
- m_state->on_vkGetBlobGOOGLE(&m_pool, snapshotApiCallInfo, device, memory);
+ VkResult vkGetBlobGOOGLE_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetBlobGOOGLE_VkResult_return =
+ m_state->on_vkGetBlobGOOGLE(&m_pool, snapshotApiCallInfo, device, memory);
+ }
if ((vkGetBlobGOOGLE_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetBlobGOOGLE_VkResult_return, opcode, context);
@@ -21026,6 +21968,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -21163,11 +22106,14 @@
(unsigned long long)pBufferViews,
(unsigned long long)pInlineUniformBlockData);
}
- m_state->on_vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
- &m_pool, snapshotApiCallInfo, device, descriptorSet, descriptorUpdateTemplate,
- imageInfoCount, bufferInfoCount, bufferViewCount, inlineUniformBlockCount,
- pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices,
- pImageInfos, pBufferInfos, pBufferViews, pInlineUniformBlockData);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
+ &m_pool, snapshotApiCallInfo, device, descriptorSet,
+ descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount,
+ inlineUniformBlockCount, pImageInfoEntryIndices, pBufferInfoEntryIndices,
+ pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews,
+ pInlineUniformBlockData);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
@@ -21194,6 +22140,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkQueue*)&queue = (VkQueue)(VkQueue)((VkQueue)(*&cgen_var_0));
+ auto vk = dispatch_VkQueue(queue);
memcpy((uint32_t*)&submitCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
vkReadStream->alloc((void**)&pSubmits,
@@ -21219,8 +22166,10 @@
ioStream, (unsigned long long)queue, (unsigned long long)submitCount,
(unsigned long long)pSubmits, (unsigned long long)fence);
}
- m_state->on_vkQueueSubmitAsync2GOOGLE(&m_pool, snapshotApiCallInfo, queue,
- submitCount, pSubmits, fence);
+ if (CC_LIKELY(vk)) {
+ m_state->on_vkQueueSubmitAsync2GOOGLE(&m_pool, snapshotApiCallInfo, queue,
+ submitCount, pSubmits, fence);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkQueueSubmitAsync2GOOGLE(&m_pool, snapshotApiCallInfo,
@@ -21243,6 +22192,7 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ auto vk = dispatch_VkDevice(device);
uint64_t cgen_var_1;
memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
@@ -21255,9 +22205,11 @@
ioStream, (unsigned long long)device, (unsigned long long)semaphore,
(unsigned long long)syncId);
}
- VkResult vkGetSemaphoreGOOGLE_VkResult_return = (VkResult)0;
- vkGetSemaphoreGOOGLE_VkResult_return = m_state->on_vkGetSemaphoreGOOGLE(
- &m_pool, snapshotApiCallInfo, device, semaphore, syncId);
+ VkResult vkGetSemaphoreGOOGLE_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetSemaphoreGOOGLE_VkResult_return = m_state->on_vkGetSemaphoreGOOGLE(
+ &m_pool, snapshotApiCallInfo, device, semaphore, syncId);
+ }
if ((vkGetSemaphoreGOOGLE_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkGetSemaphoreGOOGLE_VkResult_return, opcode, context);
@@ -21352,9 +22304,11 @@
(unsigned long long)width, (unsigned long long)height,
(unsigned long long)depth);
}
- vk->vkCmdTraceRaysKHR(unboxed_commandBuffer, pRaygenShaderBindingTable,
- pMissShaderBindingTable, pHitShaderBindingTable,
- pCallableShaderBindingTable, width, height, depth);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdTraceRaysKHR(unboxed_commandBuffer, pRaygenShaderBindingTable,
+ pMissShaderBindingTable, pHitShaderBindingTable,
+ pCallableShaderBindingTable, width, height, depth);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdTraceRaysKHR(
@@ -21446,10 +22400,14 @@
(unsigned long long)pCreateInfos, (unsigned long long)pAllocator,
(unsigned long long)pPipelines);
}
- VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
- vkCreateRayTracingPipelinesKHR_VkResult_return = vk->vkCreateRayTracingPipelinesKHR(
- unboxed_device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos,
- pAllocator, pPipelines);
+ VkResult vkCreateRayTracingPipelinesKHR_VkResult_return =
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkCreateRayTracingPipelinesKHR_VkResult_return =
+ vk->vkCreateRayTracingPipelinesKHR(unboxed_device, deferredOperation,
+ pipelineCache, createInfoCount,
+ pCreateInfos, pAllocator, pPipelines);
+ }
if ((vkCreateRayTracingPipelinesKHR_VkResult_return) == VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
m_state->on_CheckOutOfMemory(vkCreateRayTracingPipelinesKHR_VkResult_return, opcode,
@@ -21518,10 +22476,12 @@
(unsigned long long)dataSize, (unsigned long long)pData);
}
VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return =
- (VkResult)0;
- vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return =
- vk->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
- unboxed_device, pipeline, firstGroup, groupCount, dataSize, pData);
+ VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return =
+ vk->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
+ unboxed_device, pipeline, firstGroup, groupCount, dataSize, pData);
+ }
if ((vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return) ==
VK_ERROR_DEVICE_LOST)
m_state->on_DeviceLost();
@@ -21614,9 +22574,11 @@
(unsigned long long)pCallableShaderBindingTable,
(unsigned long long)indirectDeviceAddress);
}
- vk->vkCmdTraceRaysIndirectKHR(unboxed_commandBuffer, pRaygenShaderBindingTable,
- pMissShaderBindingTable, pHitShaderBindingTable,
- pCallableShaderBindingTable, indirectDeviceAddress);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdTraceRaysIndirectKHR(
+ unboxed_commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable,
+ pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdTraceRaysIndirectKHR(
@@ -21662,9 +22624,11 @@
}
VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return =
(VkDeviceSize)0;
- vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return =
- vk->vkGetRayTracingShaderGroupStackSizeKHR(unboxed_device, pipeline, group,
- groupShader);
+ if (CC_LIKELY(vk)) {
+ vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return =
+ vk->vkGetRayTracingShaderGroupStackSizeKHR(unboxed_device, pipeline, group,
+ groupShader);
+ }
vkStream->unsetHandleMapping();
vkStream->write(&vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return,
sizeof(VkDeviceSize));
@@ -21703,8 +22667,10 @@
ioStream, (unsigned long long)commandBuffer,
(unsigned long long)pipelineStackSize);
}
- vk->vkCmdSetRayTracingPipelineStackSizeKHR(unboxed_commandBuffer,
- pipelineStackSize);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetRayTracingPipelineStackSizeKHR(unboxed_commandBuffer,
+ pipelineStackSize);
+ }
vkStream->unsetHandleMapping();
if (m_snapshotsEnabled) {
m_state->snapshot()->vkCmdSetRayTracingPipelineStackSizeKHR(
diff --git a/host/vulkan/VkDecoderGlobalState.cpp b/host/vulkan/VkDecoderGlobalState.cpp
index 2ea424a..69ce78a 100644
--- a/host/vulkan/VkDecoderGlobalState.cpp
+++ b/host/vulkan/VkDecoderGlobalState.cpp
@@ -201,12 +201,6 @@
static std::atomic<uint64_t> sNextHostBlobId{1};
-// b/319729462
-// On snapshot load, thread local data is not available, thus we use a
-// fake context ID. We will eventually need to fix it once we start using
-// snapshot with virtio.
-static uint32_t kTemporaryContextIdForSnapshotLoading = 1;
-
class VkDecoderGlobalState::Impl {
public:
Impl(VkEmulation* emulation)
@@ -876,6 +870,17 @@
return VK_SUCCESS;
}
+ VkResult on_vkEnumerateInstanceExtensionProperties(android::base::BumpPool* pool,
+ VkSnapshotApiCallInfo*, const char* pLayerName,
+ uint32_t* pPropertyCount,
+ VkExtensionProperties* pProperties) {
+#if defined(__linux__)
+ // TODO(b/401005629) always lock before the call on linux
+ std::lock_guard<std::mutex> lock(mMutex);
+#endif
+ return m_vk->vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties);
+ }
+
VkResult on_vkCreateInstance(android::base::BumpPool* pool, VkSnapshotApiCallInfo*,
const VkInstanceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) {
@@ -1263,6 +1268,11 @@
// information to mark as unsupported (see b/329845987).
protectedMemoryFeatures->protectedMemory = VK_FALSE;
}
+ VkPhysicalDeviceVulkan11Features* vk11Features =
+ vk_find_struct<VkPhysicalDeviceVulkan11Features>(pFeatures);
+ if (vk11Features != nullptr) {
+ vk11Features->protectedMemory = VK_FALSE;
+ }
VkPhysicalDevicePrivateDataFeatures* privateDataFeatures =
vk_find_struct<VkPhysicalDevicePrivateDataFeatures>(pFeatures);
@@ -1574,7 +1584,6 @@
VkPhysicalDevice boxed_physicalDevice, uint32_t* pQueueFamilyPropertyCount,
VkQueueFamilyProperties* pQueueFamilyProperties) {
auto physicalDevice = unbox_VkPhysicalDevice(boxed_physicalDevice);
- auto vk = dispatch_VkPhysicalDevice(boxed_physicalDevice);
std::lock_guard<std::mutex> lock(mMutex);
@@ -1642,7 +1651,6 @@
VkPhysicalDevice boxed_physicalDevice,
VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
auto physicalDevice = unbox_VkPhysicalDevice(boxed_physicalDevice);
- auto vk = dispatch_VkPhysicalDevice(boxed_physicalDevice);
std::lock_guard<std::mutex> lock(mMutex);
@@ -1771,7 +1779,11 @@
uint32_t supportedFenceHandleTypes = 0;
uint32_t supportedBinarySemaphoreHandleTypes = 0;
// Run the underlying API call, filtering extensions.
- VkDeviceCreateInfo createInfoFiltered = *pCreateInfo;
+
+ VkDeviceCreateInfo createInfoFiltered;
+ deepcopy_VkDeviceCreateInfo(pool, VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, pCreateInfo,
+ &createInfoFiltered);
+
// According to the spec, it seems that the application can use compressed texture formats
// without enabling the feature when creating the VkDevice, as long as
// vkGetPhysicalDeviceFormatProperties and vkGetPhysicalDeviceImageFormatProperties reports
@@ -1810,11 +1822,43 @@
}
}
+ VkPhysicalDeviceRobustness2FeaturesEXT modifiedRobustness2features;
+ const auto r2features = m_vkEmulation->getRobustness2Features();
+ if (r2features && vk_find_struct<VkPhysicalDeviceRobustness2FeaturesEXT>(
+ &createInfoFiltered) == nullptr) {
+ VERBOSE("Force-enabling VK_EXT_robustness2 on device creation.");
+ updatedDeviceExtensions.push_back(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME);
+ modifiedRobustness2features = *r2features;
+ modifiedRobustness2features.pNext = const_cast<void*>(createInfoFiltered.pNext);
+ createInfoFiltered.pNext = &modifiedRobustness2features;
+ }
+
if (VkPhysicalDeviceFeatures2* features2 =
vk_find_struct<VkPhysicalDeviceFeatures2>(&createInfoFiltered)) {
featuresToFilter.emplace_back(&features2->features);
}
+ {
+ // Protected memory is not supported on emulators. Override feature
+ // information to mark as unsupported (see b/329845987).
+ VkPhysicalDeviceProtectedMemoryFeatures* protectedMemoryFeatures =
+ vk_find_struct<VkPhysicalDeviceProtectedMemoryFeatures>(&createInfoFiltered);
+ if (protectedMemoryFeatures != nullptr) {
+ protectedMemoryFeatures->protectedMemory = VK_FALSE;
+ }
+
+ VkPhysicalDeviceVulkan11Features* vk11Features =
+ vk_find_struct<VkPhysicalDeviceVulkan11Features>(&createInfoFiltered);
+ if (vk11Features != nullptr) {
+ vk11Features->protectedMemory = VK_FALSE;
+ }
+
+ for (uint32_t i = 0; i < createInfoFiltered.queueCreateInfoCount; i++) {
+ (const_cast<VkDeviceQueueCreateInfo*>(createInfoFiltered.pQueueCreateInfos))[i]
+ .flags &= ~VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT;
+ }
+ }
+
VkPhysicalDeviceDiagnosticsConfigFeaturesNV deviceDiagnosticsConfigFeatures = {
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,
.diagnosticsConfig = VK_TRUE,
@@ -2173,7 +2217,7 @@
// queue. See b/328436383.
if (pQueueInfo->flags & VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT) {
*pQueue = VK_NULL_HANDLE;
- INFO("%s: Cannot get protected Vulkan device queue", __func__);
+ WARN("%s: Cannot get protected Vulkan device queue", __func__);
return;
}
uint32_t queueFamilyIndex = pQueueInfo->queueFamilyIndex;
@@ -2567,9 +2611,6 @@
VkSnapshotApiCallInfo* snapshotInfo,
VkDevice boxed_device,
const VkBindImageMemoryInfo* bimi) {
- auto device = unbox_VkDevice(boxed_device);
- auto vk = dispatch_VkDevice(boxed_device);
-
auto original_underlying_image = bimi->image;
auto original_boxed_image = unboxed_to_boxed_non_dispatchable_VkImage(original_underlying_image);
@@ -3904,8 +3945,6 @@
std::unique_ptr<bool[]> descriptorWritesNeedDeepCopy(new bool[descriptorWriteCount]);
for (uint32_t i = 0; i < descriptorWriteCount; i++) {
const VkWriteDescriptorSet& descriptorWrite = pDescriptorWrites[i];
- auto descriptorSetInfo =
- android::base::find(mDescriptorSetInfo, descriptorWrite.dstSet);
descriptorWritesNeedDeepCopy[i] = false;
if (!vk_util::vk_descriptor_type_has_image_view(descriptorWrite.descriptorType)) {
continue;
@@ -5037,11 +5076,9 @@
VkResult on_vkAllocateMemory(android::base::BumpPool* pool, VkSnapshotApiCallInfo*,
VkDevice boxed_device, const VkMemoryAllocateInfo* pAllocateInfo,
const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) {
+ if (!pAllocateInfo) return VK_ERROR_INITIALIZATION_FAILED;
auto device = unbox_VkDevice(boxed_device);
auto vk = dispatch_VkDevice(boxed_device);
- auto* tInfo = RenderThreadInfoVk::get();
-
- if (!pAllocateInfo) return VK_ERROR_INITIALIZATION_FAILED;
VkMemoryAllocateInfo localAllocInfo = vk_make_orphan_copy(*pAllocateInfo);
vk_struct_chain_iterator structChainIter = vk_make_chain_iterator(&localAllocInfo);
@@ -5276,7 +5313,7 @@
return VK_ERROR_OUT_OF_DEVICE_MEMORY;
}
- importInfoMetalHandle.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT;
+ importInfoMetalHandle.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT;
importInfoMetalHandle.handle = bufferMetalMemoryHandle;
vk_append_struct(&structChainIter, &importInfoMetalHandle);
@@ -5456,7 +5493,7 @@
#if defined(__APPLE__)
if (m_vkEmulation->supportsMoltenVk()) {
// Using a different handle type when in MoltenVK mode
- handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT;
+ handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT;
} else {
handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT;
}
@@ -6083,8 +6120,20 @@
VkCommandPool* pCommandPool) {
auto device = unbox_VkDevice(boxed_device);
auto vk = dispatch_VkDevice(boxed_device);
+ if (!pCreateInfo) {
+ WARN("%s: Invalid parameter.", __func__);
+ return VK_ERROR_OUT_OF_HOST_MEMORY;
+ }
- VkResult result = vk->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
+ VkCommandPoolCreateInfo localCI = *pCreateInfo;
+ if (localCI.flags & VK_COMMAND_POOL_CREATE_PROTECTED_BIT) {
+ // Protected memory is not supported on emulators. Override feature
+ // information to mark as unsupported (see b/329845987).
+ localCI.flags &= ~VK_COMMAND_POOL_CREATE_PROTECTED_BIT;
+ VERBOSE("Changed VK_COMMAND_POOL_CREATE_PROTECTED_BIT, new flags = %d", localCI.flags);
+ }
+
+ VkResult result = vk->vkCreateCommandPool(device, &localCI, pAllocator, pCommandPool);
if (result != VK_SUCCESS) {
return result;
}
@@ -8042,100 +8091,63 @@
return res;
}
- if (hasDeviceExtension(properties, VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME)) {
- res.push_back(VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME);
- }
-
- if (hasDeviceExtension(properties, VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME)) {
- res.push_back(VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME);
- }
-
- if (hasDeviceExtension(properties, VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME)) {
- res.push_back(VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME);
- }
-
- if (hasDeviceExtension(properties, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME)) {
- res.push_back(VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME);
- }
-
- if (hasDeviceExtension(properties, VK_KHR_SWAPCHAIN_EXTENSION_NAME)) {
- res.push_back(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
- }
-
-#ifdef _WIN32
- if (hasDeviceExtension(properties, VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME)) {
- res.push_back(VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME);
- }
-
- if (hasDeviceExtension(properties, VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME)) {
- res.push_back(VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME);
- }
-#elif defined(__QNX__)
- // Note: VK_QNX_external_memory_screen_buffer is not supported in API translation,
- // decoding, etc. However, push name to indicate external memory support to guest
- if (hasDeviceExtension(properties, VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME)) {
- res.push_back(VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME);
- // EXT_queue_family_foreign is a pre-requisite for QNX_external_memory_screen_buffer
- if (hasDeviceExtension(properties, VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME)) {
- res.push_back(VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME);
- }
- }
-
- if (hasDeviceExtension(properties, VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME)) {
- res.push_back(VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME);
- }
-#elif __unix__
- if (hasDeviceExtension(properties, VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME)) {
- res.push_back(VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME);
- }
-
- if (hasDeviceExtension(properties, VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME)) {
- res.push_back(VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME);
- }
-#elif defined(__APPLE__)
- if (m_vkEmulation->supportsMoltenVk()) {
- if (hasDeviceExtension(properties, VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME)) {
- res.push_back(VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME);
- }
- if (hasDeviceExtension(properties, VK_EXT_METAL_OBJECTS_EXTENSION_NAME)) {
- res.push_back(VK_EXT_METAL_OBJECTS_EXTENSION_NAME);
- }
- if (hasDeviceExtension(properties, VK_EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME)) {
- res.push_back(VK_EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME);
- }
- } else {
- // Non-MoltenVK path, use memory_fd
- if (hasDeviceExtension(properties, VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME)) {
- res.push_back(VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME);
- }
- }
-#endif
-
-#ifdef __linux__
- // A dma-buf is a Linux kernel construct, commonly used with open-source DRM drivers.
- // See https://docs.kernel.org/driver-api/dma-buf.html for details.
- if (m_vkEmulation->supportsDmaBuf() &&
- hasDeviceExtension(properties, VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME)) {
- res.push_back(VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME);
- }
-
- if (hasDeviceExtension(properties, VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME)) {
- // Mesa Vulkan Wayland WSI needs vkGetImageDrmFormatModifierPropertiesEXT. On some Intel
- // GPUs, this extension is exposed by the driver only if
- // VK_EXT_image_drm_format_modifier extension is requested via
- // VkDeviceCreateInfo::ppEnabledExtensionNames. vkcube-wayland does not request it,
- // which makes the host attempt to call a null function pointer unless we force-enable
- // it regardless of the client's wishes.
- res.push_back(VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME);
- }
-
-#endif
-
- if (hasDeviceExtension(properties, VK_EXT_PRIVATE_DATA_EXTENSION_NAME)) {
- //TODO(b/378686769): Enable private data extension where available to
+ std::vector<const char*> hostAlwaysDeviceExtensions = {
+ VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME,
+ VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME,
+ VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME,
+ VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME,
+ VK_KHR_SWAPCHAIN_EXTENSION_NAME,
+ // TODO(b/378686769): Enable private data extension where available to
// mitigate the issues with duplicated vulkan handles. This should be
// removed once the issue is properly resolved.
- res.push_back(VK_EXT_PRIVATE_DATA_EXTENSION_NAME);
+ VK_EXT_PRIVATE_DATA_EXTENSION_NAME,
+ // It is not uncommon for a guest app flow to expect to use
+ // VK_EXT_IMAGE_DRM_FORMAT_MODIFIER without actually enabling it in the
+ // ppEnabledExtensionNames. Mesa WSI (in Linux) does this, because it has certain
+ // assumptions about the Vulkan loader architecture it is using. However, depending on
+ // the host's Vulkan loader architecture, this could in NULL function pointer access
+ // (i.e. on vkGetImageDrmFormatModifierPropertiesEXT()). So just enable it if it's
+ // available.
+ VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME,
+#ifdef _WIN32
+ VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME,
+ VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME,
+#elif defined(__QNX__)
+ VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME,
+ // EXT_queue_family_foreign is an extension dependency of
+ // VK_QNX_external_memory_screen_buffer
+ VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME,
+ VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME,
+#elif __unix__
+ VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME,
+ VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME,
+#endif
+ };
+
+#if defined(__APPLE__)
+ if (m_vkEmulation->supportsMoltenVk()) {
+ hostAlwaysDeviceExtensions.push_back(VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME);
+ hostAlwaysDeviceExtensions.push_back(VK_EXT_METAL_OBJECTS_EXTENSION_NAME);
+ hostAlwaysDeviceExtensions.push_back(VK_EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME);
+ } else {
+ // Non-MoltenVK path, use memory_fd
+ hostAlwaysDeviceExtensions.push_back(VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME);
+ }
+#endif
+
+#if defined(__linux__)
+ // A dma-buf is a Linux kernel construct, commonly used with open-source DRM drivers.
+ // See https://docs.kernel.org/driver-api/dma-buf.html for details.
+ if (m_vkEmulation->supportsDmaBuf()) {
+ hostAlwaysDeviceExtensions.push_back(VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME);
+ }
+#endif
+
+ // Enable all the device extensions that should always be enabled on the host (if available)
+ for (auto extName : hostAlwaysDeviceExtensions) {
+ if (hasDeviceExtension(properties, extName)) {
+ res.push_back(extName);
+ }
}
return res;
@@ -8493,7 +8505,6 @@
void extractInstanceAndDependenciesLocked(VkInstance instance, InstanceObjects& objects) REQUIRES(mMutex) {
auto instanceInfoIt = mInstanceInfo.find(instance);
if (instanceInfoIt == mInstanceInfo.end()) return;
- auto& instanceInfo = instanceInfoIt->second;
objects.instance = mInstanceInfo.extract(instanceInfoIt);
@@ -9128,6 +9139,13 @@
return mImpl->on_vkEnumerateInstanceVersion(pool, snapshotInfo, pApiVersion);
}
+VkResult VkDecoderGlobalState::on_vkEnumerateInstanceExtensionProperties(
+ android::base::BumpPool* pool, VkSnapshotApiCallInfo* snapshotInfo, const char* pLayerName,
+ uint32_t* pPropertyCount, VkExtensionProperties* pProperties) {
+ return mImpl->on_vkEnumerateInstanceExtensionProperties(pool, snapshotInfo, pLayerName,
+ pPropertyCount, pProperties);
+}
+
VkResult VkDecoderGlobalState::on_vkCreateInstance(android::base::BumpPool* pool,
VkSnapshotApiCallInfo* snapshotInfo,
const VkInstanceCreateInfo* pCreateInfo,
diff --git a/host/vulkan/VkDecoderGlobalState.h b/host/vulkan/VkDecoderGlobalState.h
index 20ced41..6f6646b 100644
--- a/host/vulkan/VkDecoderGlobalState.h
+++ b/host/vulkan/VkDecoderGlobalState.h
@@ -97,6 +97,11 @@
VkResult on_vkEnumerateInstanceVersion(android::base::BumpPool* pool,
VkSnapshotApiCallInfo* snapshotInfo,
uint32_t* pApiVersion);
+ VkResult on_vkEnumerateInstanceExtensionProperties(android::base::BumpPool* pool,
+ VkSnapshotApiCallInfo* snapshotInfo,
+ const char* pLayerName,
+ uint32_t* pPropertyCount,
+ VkExtensionProperties* pProperties);
// Fast way to get dispatch tables associated with a Vulkan object.
// VkInstance
diff --git a/host/vulkan/VkDecoderSnapshotUtils.cpp b/host/vulkan/VkDecoderSnapshotUtils.cpp
index 7d75cfe..bb0de1e 100644
--- a/host/vulkan/VkDecoderSnapshotUtils.cpp
+++ b/host/vulkan/VkDecoderSnapshotUtils.cpp
@@ -655,7 +655,10 @@
_RUN_AND_CHECK(dispatch->vkMapMemory(stateBlock->device, stagingMemory, 0, VK_WHOLE_SIZE,
VkMemoryMapFlags{}, &mapped));
size_t bufferSize = stream->getBe64();
- assert(bufferSize == bufferInfo->size);
+ if (bufferSize != bufferInfo->size) {
+ GFXSTREAM_ABORT(emugl::FatalError(emugl::ABORT_REASON_OTHER))
+ << "Failed to read buffer on snapshot load";
+ }
stream->read(mapped, bufferInfo->size);
VkBufferCopy bufferCopy = {
@@ -669,7 +672,7 @@
};
if (dispatch->vkBeginCommandBuffer(commandBuffer, &beginInfo) != VK_SUCCESS) {
GFXSTREAM_ABORT(emugl::FatalError(emugl::ABORT_REASON_OTHER))
- << "Failed to start command buffer on snapshot save";
+ << "Failed to start command buffer on snapshot load";
}
dispatch->vkCmdCopyBuffer(commandBuffer, stagingBuffer, buffer, 1, &bufferCopy);
VkBufferMemoryBarrier barrier{.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
diff --git a/host/vulkan/VkEmulatedPhysicalDeviceQueue.cpp b/host/vulkan/VkEmulatedPhysicalDeviceQueue.cpp
index 6c7ee69..fd89a3b 100644
--- a/host/vulkan/VkEmulatedPhysicalDeviceQueue.cpp
+++ b/host/vulkan/VkEmulatedPhysicalDeviceQueue.cpp
@@ -36,6 +36,9 @@
if (qfp.queueFlags & VK_QUEUE_GRAPHICS_BIT) {
qfp.queueCount = 2;
}
+
+ // TODO(b/329845987) Protected memory is not supported yet on emulators.
+ qfp.queueFlags &= ~VK_QUEUE_PROTECTED_BIT;
}
}
}
diff --git a/host/vulkan/VkReconstruction.cpp b/host/vulkan/VkReconstruction.cpp
index 345e162..4a24ea9 100644
--- a/host/vulkan/VkReconstruction.cpp
+++ b/host/vulkan/VkReconstruction.cpp
@@ -125,7 +125,7 @@
savedApis.insert(apiRef);
#if DEBUG_RECONSTRUCTION
DEBUG_RECON("adding handle 0x%lx API 0x%lx op code %d", handle.first, apiRef,
- apiItem->opCode);
+ GetOpcode(*apiItem));
#endif
nextApis.push_back(apiRef);
}
@@ -167,7 +167,7 @@
for (auto apiHandle : uniqApiRefsByTopoOrder[i]) {
auto item = mApiCallManager.get(apiHandle);
// 4 bytes for opcode, and 4 bytes for saveBufferRaw's size field
- DEBUG_RECON("saving api handle 0x%lx op code %d", apiHandle, GetOpcode(item));
+ DEBUG_RECON("saving api handle 0x%lx op code %d", apiHandle, GetOpcode(*item));
memcpy(apiTracePtr, item->packet.data(), item->packet.size());
apiTracePtr += item->packet.size();
}
@@ -230,14 +230,17 @@
void VkReconstruction::destroyApiCallInfoIfUnused(VkSnapshotApiCallInfo* info) {
if (!info) return;
+ auto handle = info->handle;
+ auto currentInfo = mApiCallManager.get(handle);
+ if (!currentInfo) return;
- if (info->packet.empty()) {
- mApiCallManager.remove(info->handle);
+ if (currentInfo->packet.empty()) {
+ mApiCallManager.remove(handle);
return;
}
if (!info->extraCreatedHandles.empty()) {
- info->createdHandles.insert(info->createdHandles.end(), info->extraCreatedHandles.begin(),
+ currentInfo->createdHandles.insert(currentInfo->createdHandles.end(), info->extraCreatedHandles.begin(),
info->extraCreatedHandles.end());
info->extraCreatedHandles.clear();
}
@@ -249,7 +252,10 @@
void VkReconstruction::setApiTrace(VkSnapshotApiCallInfo* apiInfo, const uint8_t* packet,
size_t packetLenBytes) {
- apiInfo->packet.assign(packet, packet + packetLenBytes);
+ auto* info = mApiCallManager.get(apiInfo->handle);
+ if(info) {
+ info->packet.assign(packet, packet + packetLenBytes);
+ }
}
void VkReconstruction::dump() {
diff --git a/host/vulkan/VkSubDecoder.cpp b/host/vulkan/VkSubDecoder.cpp
index bc3e050..d218bbe 100644
--- a/host/vulkan/VkSubDecoder.cpp
+++ b/host/vulkan/VkSubDecoder.cpp
@@ -32,6 +32,8 @@
//
#define MAX_STACK_ITEMS 16
#define MAX_PACKET_LENGTH (400 * 1024 * 1024) // 400MB
+#define CC_LIKELY(exp) (__builtin_expect(!!(exp), true))
+#define CC_UNLIKELY(exp) (__builtin_expect(!!(exp), false))
size_t subDecode(VulkanMemReadingStream* readStream, VulkanDispatch* vk, void* boxed_dispatchHandle,
void* dispatchHandle, VkDeviceSize subDecodeDataSize, const void* pSubDecodeData,
const VkDecoderContext& context) {
@@ -72,9 +74,12 @@
transform_tohost_VkCommandBufferBeginInfo(
globalstate, (VkCommandBufferBeginInfo*)(pBeginInfo));
}
- VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
- vkBeginCommandBuffer_VkResult_return = this->on_vkBeginCommandBuffer(
- pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), pBeginInfo, context);
+ VkResult vkBeginCommandBuffer_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkBeginCommandBuffer_VkResult_return = this->on_vkBeginCommandBuffer(
+ pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), pBeginInfo,
+ context);
+ }
if ((vkBeginCommandBuffer_VkResult_return) == VK_ERROR_DEVICE_LOST)
this->on_DeviceLost();
this->on_CheckOutOfMemory(vkBeginCommandBuffer_VkResult_return, opcode, context);
@@ -83,9 +88,11 @@
case OP_vkEndCommandBuffer: {
GFXSTREAM_TRACE_EVENT(GFXSTREAM_TRACE_DECODER_CATEGORY,
"VkSubDecoder vkEndCommandBuffer");
- VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
- vkEndCommandBuffer_VkResult_return = this->on_vkEndCommandBuffer(
- pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), context);
+ VkResult vkEndCommandBuffer_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkEndCommandBuffer_VkResult_return = this->on_vkEndCommandBuffer(
+ pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), context);
+ }
if ((vkEndCommandBuffer_VkResult_return) == VK_ERROR_DEVICE_LOST)
this->on_DeviceLost();
this->on_CheckOutOfMemory(vkEndCommandBuffer_VkResult_return, opcode, context);
@@ -98,9 +105,11 @@
memcpy((VkCommandBufferResetFlags*)&flags, *readStreamPtrPtr,
sizeof(VkCommandBufferResetFlags));
*readStreamPtrPtr += sizeof(VkCommandBufferResetFlags);
- VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
- vkResetCommandBuffer_VkResult_return = this->on_vkResetCommandBuffer(
- pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), flags);
+ VkResult vkResetCommandBuffer_VkResult_return = VK_ERROR_OUT_OF_HOST_MEMORY;
+ if (CC_LIKELY(vk)) {
+ vkResetCommandBuffer_VkResult_return = this->on_vkResetCommandBuffer(
+ pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), flags);
+ }
if ((vkResetCommandBuffer_VkResult_return) == VK_ERROR_DEVICE_LOST)
this->on_DeviceLost();
this->on_CheckOutOfMemory(vkResetCommandBuffer_VkResult_return, opcode, context);
@@ -118,8 +127,11 @@
memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
*readStreamPtrPtr += 1 * 8;
*(VkPipeline*)&pipeline = (VkPipeline)unbox_VkPipeline((VkPipeline)(*&cgen_var_0));
- this->on_vkCmdBindPipeline(pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle),
- pipelineBindPoint, pipeline);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdBindPipeline(pool, nullptr,
+ (VkCommandBuffer)(boxed_dispatchHandle),
+ pipelineBindPoint, pipeline);
+ }
break;
}
case OP_vkCmdSetViewport: {
@@ -148,8 +160,10 @@
transform_tohost_VkViewport(globalstate, (VkViewport*)(pViewports + i));
}
}
- vk->vkCmdSetViewport((VkCommandBuffer)dispatchHandle, firstViewport, viewportCount,
- pViewports);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetViewport((VkCommandBuffer)dispatchHandle, firstViewport,
+ viewportCount, pViewports);
+ }
break;
}
case OP_vkCmdSetScissor: {
@@ -178,8 +192,10 @@
transform_tohost_VkRect2D(globalstate, (VkRect2D*)(pScissors + i));
}
}
- vk->vkCmdSetScissor((VkCommandBuffer)dispatchHandle, firstScissor, scissorCount,
- pScissors);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetScissor((VkCommandBuffer)dispatchHandle, firstScissor, scissorCount,
+ pScissors);
+ }
break;
}
case OP_vkCmdSetLineWidth: {
@@ -188,7 +204,9 @@
float lineWidth;
memcpy((float*)&lineWidth, *readStreamPtrPtr, sizeof(float));
*readStreamPtrPtr += sizeof(float);
- vk->vkCmdSetLineWidth((VkCommandBuffer)dispatchHandle, lineWidth);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetLineWidth((VkCommandBuffer)dispatchHandle, lineWidth);
+ }
break;
}
case OP_vkCmdSetDepthBias: {
@@ -203,8 +221,10 @@
*readStreamPtrPtr += sizeof(float);
memcpy((float*)&depthBiasSlopeFactor, *readStreamPtrPtr, sizeof(float));
*readStreamPtrPtr += sizeof(float);
- vk->vkCmdSetDepthBias((VkCommandBuffer)dispatchHandle, depthBiasConstantFactor,
- depthBiasClamp, depthBiasSlopeFactor);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthBias((VkCommandBuffer)dispatchHandle, depthBiasConstantFactor,
+ depthBiasClamp, depthBiasSlopeFactor);
+ }
break;
}
case OP_vkCmdSetBlendConstants: {
@@ -213,7 +233,9 @@
float blendConstants[4];
memcpy((float*)blendConstants, *readStreamPtrPtr, 4 * sizeof(const float));
*readStreamPtrPtr += 4 * sizeof(const float);
- vk->vkCmdSetBlendConstants((VkCommandBuffer)dispatchHandle, blendConstants);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetBlendConstants((VkCommandBuffer)dispatchHandle, blendConstants);
+ }
break;
}
case OP_vkCmdSetDepthBounds: {
@@ -225,8 +247,10 @@
*readStreamPtrPtr += sizeof(float);
memcpy((float*)&maxDepthBounds, *readStreamPtrPtr, sizeof(float));
*readStreamPtrPtr += sizeof(float);
- vk->vkCmdSetDepthBounds((VkCommandBuffer)dispatchHandle, minDepthBounds,
- maxDepthBounds);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthBounds((VkCommandBuffer)dispatchHandle, minDepthBounds,
+ maxDepthBounds);
+ }
break;
}
case OP_vkCmdSetStencilCompareMask: {
@@ -239,8 +263,10 @@
*readStreamPtrPtr += sizeof(VkStencilFaceFlags);
memcpy((uint32_t*)&compareMask, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdSetStencilCompareMask((VkCommandBuffer)dispatchHandle, faceMask,
- compareMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilCompareMask((VkCommandBuffer)dispatchHandle, faceMask,
+ compareMask);
+ }
break;
}
case OP_vkCmdSetStencilWriteMask: {
@@ -253,7 +279,10 @@
*readStreamPtrPtr += sizeof(VkStencilFaceFlags);
memcpy((uint32_t*)&writeMask, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdSetStencilWriteMask((VkCommandBuffer)dispatchHandle, faceMask, writeMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilWriteMask((VkCommandBuffer)dispatchHandle, faceMask,
+ writeMask);
+ }
break;
}
case OP_vkCmdSetStencilReference: {
@@ -266,7 +295,10 @@
*readStreamPtrPtr += sizeof(VkStencilFaceFlags);
memcpy((uint32_t*)&reference, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdSetStencilReference((VkCommandBuffer)dispatchHandle, faceMask, reference);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilReference((VkCommandBuffer)dispatchHandle, faceMask,
+ reference);
+ }
break;
}
case OP_vkCmdBindDescriptorSets: {
@@ -321,10 +353,12 @@
memcpy((uint32_t*)pDynamicOffsets, *readStreamPtrPtr,
((dynamicOffsetCount)) * sizeof(const uint32_t));
*readStreamPtrPtr += ((dynamicOffsetCount)) * sizeof(const uint32_t);
- this->on_vkCmdBindDescriptorSets(
- pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), pipelineBindPoint,
- layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount,
- pDynamicOffsets);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdBindDescriptorSets(
+ pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), pipelineBindPoint,
+ layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount,
+ pDynamicOffsets);
+ }
break;
}
case OP_vkCmdBindIndexBuffer: {
@@ -341,8 +375,10 @@
*readStreamPtrPtr += sizeof(VkDeviceSize);
memcpy((VkIndexType*)&indexType, *readStreamPtrPtr, sizeof(VkIndexType));
*readStreamPtrPtr += sizeof(VkIndexType);
- vk->vkCmdBindIndexBuffer((VkCommandBuffer)dispatchHandle, buffer, offset,
- indexType);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBindIndexBuffer((VkCommandBuffer)dispatchHandle, buffer, offset,
+ indexType);
+ }
break;
}
case OP_vkCmdBindVertexBuffers: {
@@ -382,8 +418,10 @@
memcpy((VkDeviceSize*)pOffsets, *readStreamPtrPtr,
((bindingCount)) * sizeof(const VkDeviceSize));
*readStreamPtrPtr += ((bindingCount)) * sizeof(const VkDeviceSize);
- vk->vkCmdBindVertexBuffers((VkCommandBuffer)dispatchHandle, firstBinding,
- bindingCount, pBuffers, pOffsets);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBindVertexBuffers((VkCommandBuffer)dispatchHandle, firstBinding,
+ bindingCount, pBuffers, pOffsets);
+ }
break;
}
case OP_vkCmdDraw: {
@@ -400,8 +438,10 @@
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&firstInstance, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdDraw((VkCommandBuffer)dispatchHandle, vertexCount, instanceCount,
- firstVertex, firstInstance);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDraw((VkCommandBuffer)dispatchHandle, vertexCount, instanceCount,
+ firstVertex, firstInstance);
+ }
break;
}
case OP_vkCmdDrawIndexed: {
@@ -422,8 +462,10 @@
*readStreamPtrPtr += sizeof(int32_t);
memcpy((uint32_t*)&firstInstance, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdDrawIndexed((VkCommandBuffer)dispatchHandle, indexCount, instanceCount,
- firstIndex, vertexOffset, firstInstance);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDrawIndexed((VkCommandBuffer)dispatchHandle, indexCount, instanceCount,
+ firstIndex, vertexOffset, firstInstance);
+ }
break;
}
case OP_vkCmdDrawIndirect: {
@@ -443,8 +485,10 @@
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&stride, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdDrawIndirect((VkCommandBuffer)dispatchHandle, buffer, offset, drawCount,
- stride);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDrawIndirect((VkCommandBuffer)dispatchHandle, buffer, offset,
+ drawCount, stride);
+ }
break;
}
case OP_vkCmdDrawIndexedIndirect: {
@@ -464,8 +508,10 @@
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&stride, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdDrawIndexedIndirect((VkCommandBuffer)dispatchHandle, buffer, offset,
- drawCount, stride);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDrawIndexedIndirect((VkCommandBuffer)dispatchHandle, buffer, offset,
+ drawCount, stride);
+ }
break;
}
case OP_vkCmdDispatch: {
@@ -480,8 +526,10 @@
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&groupCountZ, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdDispatch((VkCommandBuffer)dispatchHandle, groupCountX, groupCountY,
- groupCountZ);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDispatch((VkCommandBuffer)dispatchHandle, groupCountX, groupCountY,
+ groupCountZ);
+ }
break;
}
case OP_vkCmdDispatchIndirect: {
@@ -495,7 +543,9 @@
*(VkBuffer*)&buffer = (VkBuffer)unbox_VkBuffer((VkBuffer)(*&cgen_var_0));
memcpy((VkDeviceSize*)&offset, *readStreamPtrPtr, sizeof(VkDeviceSize));
*readStreamPtrPtr += sizeof(VkDeviceSize);
- vk->vkCmdDispatchIndirect((VkCommandBuffer)dispatchHandle, buffer, offset);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDispatchIndirect((VkCommandBuffer)dispatchHandle, buffer, offset);
+ }
break;
}
case OP_vkCmdCopyBuffer: {
@@ -531,8 +581,10 @@
transform_tohost_VkBufferCopy(globalstate, (VkBufferCopy*)(pRegions + i));
}
}
- vk->vkCmdCopyBuffer((VkCommandBuffer)dispatchHandle, srcBuffer, dstBuffer,
- regionCount, pRegions);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdCopyBuffer((VkCommandBuffer)dispatchHandle, srcBuffer, dstBuffer,
+ regionCount, pRegions);
+ }
break;
}
case OP_vkCmdCopyImage: {
@@ -574,9 +626,11 @@
transform_tohost_VkImageCopy(globalstate, (VkImageCopy*)(pRegions + i));
}
}
- this->on_vkCmdCopyImage(pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle),
- srcImage, srcImageLayout, dstImage, dstImageLayout,
- regionCount, pRegions);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdCopyImage(pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle),
+ srcImage, srcImageLayout, dstImage, dstImageLayout,
+ regionCount, pRegions);
+ }
break;
}
case OP_vkCmdBlitImage: {
@@ -621,8 +675,10 @@
transform_tohost_VkImageBlit(globalstate, (VkImageBlit*)(pRegions + i));
}
}
- vk->vkCmdBlitImage((VkCommandBuffer)dispatchHandle, srcImage, srcImageLayout,
- dstImage, dstImageLayout, regionCount, pRegions, filter);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBlitImage((VkCommandBuffer)dispatchHandle, srcImage, srcImageLayout,
+ dstImage, dstImageLayout, regionCount, pRegions, filter);
+ }
break;
}
case OP_vkCmdCopyBufferToImage: {
@@ -663,9 +719,11 @@
(VkBufferImageCopy*)(pRegions + i));
}
}
- this->on_vkCmdCopyBufferToImage(
- pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), srcBuffer, dstImage,
- dstImageLayout, regionCount, pRegions, context);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdCopyBufferToImage(
+ pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), srcBuffer, dstImage,
+ dstImageLayout, regionCount, pRegions, context);
+ }
break;
}
case OP_vkCmdCopyImageToBuffer: {
@@ -706,9 +764,11 @@
(VkBufferImageCopy*)(pRegions + i));
}
}
- this->on_vkCmdCopyImageToBuffer(pool, nullptr,
- (VkCommandBuffer)(boxed_dispatchHandle), srcImage,
- srcImageLayout, dstBuffer, regionCount, pRegions);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdCopyImageToBuffer(
+ pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), srcImage,
+ srcImageLayout, dstBuffer, regionCount, pRegions);
+ }
break;
}
case OP_vkCmdUpdateBuffer: {
@@ -734,8 +794,10 @@
}
memcpy((void*)pData, *readStreamPtrPtr, ((dataSize)) * sizeof(const uint8_t));
*readStreamPtrPtr += ((dataSize)) * sizeof(const uint8_t);
- vk->vkCmdUpdateBuffer((VkCommandBuffer)dispatchHandle, dstBuffer, dstOffset,
- dataSize, pData);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdUpdateBuffer((VkCommandBuffer)dispatchHandle, dstBuffer, dstOffset,
+ dataSize, pData);
+ }
break;
}
case OP_vkCmdFillBuffer: {
@@ -755,8 +817,10 @@
*readStreamPtrPtr += sizeof(VkDeviceSize);
memcpy((uint32_t*)&data, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdFillBuffer((VkCommandBuffer)dispatchHandle, dstBuffer, dstOffset, size,
- data);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdFillBuffer((VkCommandBuffer)dispatchHandle, dstBuffer, dstOffset, size,
+ data);
+ }
break;
}
case OP_vkCmdClearColorImage: {
@@ -800,8 +864,10 @@
globalstate, (VkImageSubresourceRange*)(pRanges + i));
}
}
- vk->vkCmdClearColorImage((VkCommandBuffer)dispatchHandle, image, imageLayout,
- pColor, rangeCount, pRanges);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdClearColorImage((VkCommandBuffer)dispatchHandle, image, imageLayout,
+ pColor, rangeCount, pRanges);
+ }
break;
}
case OP_vkCmdClearDepthStencilImage: {
@@ -847,8 +913,11 @@
globalstate, (VkImageSubresourceRange*)(pRanges + i));
}
}
- vk->vkCmdClearDepthStencilImage((VkCommandBuffer)dispatchHandle, image, imageLayout,
- pDepthStencil, rangeCount, pRanges);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdClearDepthStencilImage((VkCommandBuffer)dispatchHandle, image,
+ imageLayout, pDepthStencil, rangeCount,
+ pRanges);
+ }
break;
}
case OP_vkCmdClearAttachments: {
@@ -895,8 +964,10 @@
transform_tohost_VkClearRect(globalstate, (VkClearRect*)(pRects + i));
}
}
- vk->vkCmdClearAttachments((VkCommandBuffer)dispatchHandle, attachmentCount,
- pAttachments, rectCount, pRects);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdClearAttachments((VkCommandBuffer)dispatchHandle, attachmentCount,
+ pAttachments, rectCount, pRects);
+ }
break;
}
case OP_vkCmdResolveImage: {
@@ -940,8 +1011,10 @@
(VkImageResolve*)(pRegions + i));
}
}
- vk->vkCmdResolveImage((VkCommandBuffer)dispatchHandle, srcImage, srcImageLayout,
- dstImage, dstImageLayout, regionCount, pRegions);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResolveImage((VkCommandBuffer)dispatchHandle, srcImage, srcImageLayout,
+ dstImage, dstImageLayout, regionCount, pRegions);
+ }
break;
}
case OP_vkCmdSetEvent: {
@@ -956,7 +1029,9 @@
memcpy((VkPipelineStageFlags*)&stageMask, *readStreamPtrPtr,
sizeof(VkPipelineStageFlags));
*readStreamPtrPtr += sizeof(VkPipelineStageFlags);
- vk->vkCmdSetEvent((VkCommandBuffer)dispatchHandle, event, stageMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetEvent((VkCommandBuffer)dispatchHandle, event, stageMask);
+ }
break;
}
case OP_vkCmdResetEvent: {
@@ -971,7 +1046,9 @@
memcpy((VkPipelineStageFlags*)&stageMask, *readStreamPtrPtr,
sizeof(VkPipelineStageFlags));
*readStreamPtrPtr += sizeof(VkPipelineStageFlags);
- vk->vkCmdResetEvent((VkCommandBuffer)dispatchHandle, event, stageMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResetEvent((VkCommandBuffer)dispatchHandle, event, stageMask);
+ }
break;
}
case OP_vkCmdWaitEvents: {
@@ -1073,10 +1150,12 @@
globalstate, (VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
}
}
- vk->vkCmdWaitEvents((VkCommandBuffer)dispatchHandle, eventCount, pEvents,
- srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers,
- bufferMemoryBarrierCount, pBufferMemoryBarriers,
- imageMemoryBarrierCount, pImageMemoryBarriers);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWaitEvents(
+ (VkCommandBuffer)dispatchHandle, eventCount, pEvents, srcStageMask,
+ dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount,
+ pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
+ }
break;
}
case OP_vkCmdPipelineBarrier: {
@@ -1162,11 +1241,13 @@
globalstate, (VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
}
}
- this->on_vkCmdPipelineBarrier(
- pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), srcStageMask,
- dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers,
- bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount,
- pImageMemoryBarriers);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdPipelineBarrier(
+ pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), srcStageMask,
+ dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers,
+ bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount,
+ pImageMemoryBarriers);
+ }
break;
}
case OP_vkCmdBeginQuery: {
@@ -1185,7 +1266,9 @@
memcpy((VkQueryControlFlags*)&flags, *readStreamPtrPtr,
sizeof(VkQueryControlFlags));
*readStreamPtrPtr += sizeof(VkQueryControlFlags);
- vk->vkCmdBeginQuery((VkCommandBuffer)dispatchHandle, queryPool, query, flags);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBeginQuery((VkCommandBuffer)dispatchHandle, queryPool, query, flags);
+ }
break;
}
case OP_vkCmdEndQuery: {
@@ -1200,7 +1283,9 @@
(VkQueryPool)unbox_VkQueryPool((VkQueryPool)(*&cgen_var_0));
memcpy((uint32_t*)&query, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdEndQuery((VkCommandBuffer)dispatchHandle, queryPool, query);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndQuery((VkCommandBuffer)dispatchHandle, queryPool, query);
+ }
break;
}
case OP_vkCmdResetQueryPool: {
@@ -1218,8 +1303,10 @@
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&queryCount, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdResetQueryPool((VkCommandBuffer)dispatchHandle, queryPool, firstQuery,
- queryCount);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResetQueryPool((VkCommandBuffer)dispatchHandle, queryPool, firstQuery,
+ queryCount);
+ }
break;
}
case OP_vkCmdWriteTimestamp: {
@@ -1238,8 +1325,10 @@
(VkQueryPool)unbox_VkQueryPool((VkQueryPool)(*&cgen_var_0));
memcpy((uint32_t*)&query, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdWriteTimestamp((VkCommandBuffer)dispatchHandle, pipelineStage, queryPool,
- query);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWriteTimestamp((VkCommandBuffer)dispatchHandle, pipelineStage,
+ queryPool, query);
+ }
break;
}
case OP_vkCmdCopyQueryPoolResults: {
@@ -1271,9 +1360,11 @@
*readStreamPtrPtr += sizeof(VkDeviceSize);
memcpy((VkQueryResultFlags*)&flags, *readStreamPtrPtr, sizeof(VkQueryResultFlags));
*readStreamPtrPtr += sizeof(VkQueryResultFlags);
- this->on_vkCmdCopyQueryPoolResults(
- pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), queryPool, firstQuery,
- queryCount, dstBuffer, dstOffset, stride, flags);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdCopyQueryPoolResults(
+ pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), queryPool,
+ firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
+ }
break;
}
case OP_vkCmdPushConstants: {
@@ -1304,8 +1395,10 @@
}
memcpy((void*)pValues, *readStreamPtrPtr, ((size)) * sizeof(const uint8_t));
*readStreamPtrPtr += ((size)) * sizeof(const uint8_t);
- vk->vkCmdPushConstants((VkCommandBuffer)dispatchHandle, layout, stageFlags, offset,
- size, pValues);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdPushConstants((VkCommandBuffer)dispatchHandle, layout, stageFlags,
+ offset, size, pValues);
+ }
break;
}
case OP_vkCmdBeginRenderPass: {
@@ -1324,9 +1417,11 @@
transform_tohost_VkRenderPassBeginInfo(
globalstate, (VkRenderPassBeginInfo*)(pRenderPassBegin));
}
- this->on_vkCmdBeginRenderPass(pool, nullptr,
- (VkCommandBuffer)(boxed_dispatchHandle),
- pRenderPassBegin, contents);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdBeginRenderPass(pool, nullptr,
+ (VkCommandBuffer)(boxed_dispatchHandle),
+ pRenderPassBegin, contents);
+ }
break;
}
case OP_vkCmdNextSubpass: {
@@ -1335,13 +1430,17 @@
VkSubpassContents contents;
memcpy((VkSubpassContents*)&contents, *readStreamPtrPtr, sizeof(VkSubpassContents));
*readStreamPtrPtr += sizeof(VkSubpassContents);
- vk->vkCmdNextSubpass((VkCommandBuffer)dispatchHandle, contents);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdNextSubpass((VkCommandBuffer)dispatchHandle, contents);
+ }
break;
}
case OP_vkCmdEndRenderPass: {
GFXSTREAM_TRACE_EVENT(GFXSTREAM_TRACE_DECODER_CATEGORY,
"VkSubDecoder vkCmdEndRenderPass");
- vk->vkCmdEndRenderPass((VkCommandBuffer)dispatchHandle);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndRenderPass((VkCommandBuffer)dispatchHandle);
+ }
break;
}
case OP_vkCmdExecuteCommands: {
@@ -1369,9 +1468,11 @@
: VK_NULL_HANDLE;
}
}
- this->on_vkCmdExecuteCommands(pool, nullptr,
- (VkCommandBuffer)(boxed_dispatchHandle),
- commandBufferCount, pCommandBuffers);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdExecuteCommands(pool, nullptr,
+ (VkCommandBuffer)(boxed_dispatchHandle),
+ commandBufferCount, pCommandBuffers);
+ }
break;
}
#endif
@@ -1382,7 +1483,9 @@
uint32_t deviceMask;
memcpy((uint32_t*)&deviceMask, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdSetDeviceMask((VkCommandBuffer)dispatchHandle, deviceMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDeviceMask((VkCommandBuffer)dispatchHandle, deviceMask);
+ }
break;
}
case OP_vkCmdDispatchBase: {
@@ -1406,8 +1509,10 @@
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&groupCountZ, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdDispatchBase((VkCommandBuffer)dispatchHandle, baseGroupX, baseGroupY,
- baseGroupZ, groupCountX, groupCountY, groupCountZ);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDispatchBase((VkCommandBuffer)dispatchHandle, baseGroupX, baseGroupY,
+ baseGroupZ, groupCountX, groupCountY, groupCountZ);
+ }
break;
}
#endif
@@ -1437,8 +1542,11 @@
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&stride, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdDrawIndirectCount((VkCommandBuffer)dispatchHandle, buffer, offset,
- countBuffer, countBufferOffset, maxDrawCount, stride);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDrawIndirectCount((VkCommandBuffer)dispatchHandle, buffer, offset,
+ countBuffer, countBufferOffset, maxDrawCount,
+ stride);
+ }
break;
}
case OP_vkCmdDrawIndexedIndirectCount: {
@@ -1466,9 +1574,11 @@
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&stride, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdDrawIndexedIndirectCount((VkCommandBuffer)dispatchHandle, buffer, offset,
- countBuffer, countBufferOffset, maxDrawCount,
- stride);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDrawIndexedIndirectCount((VkCommandBuffer)dispatchHandle, buffer,
+ offset, countBuffer, countBufferOffset,
+ maxDrawCount, stride);
+ }
break;
}
case OP_vkCmdBeginRenderPass2: {
@@ -1494,9 +1604,11 @@
transform_tohost_VkSubpassBeginInfo(globalstate,
(VkSubpassBeginInfo*)(pSubpassBeginInfo));
}
- this->on_vkCmdBeginRenderPass2(pool, nullptr,
- (VkCommandBuffer)(boxed_dispatchHandle),
- pRenderPassBegin, pSubpassBeginInfo);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdBeginRenderPass2(pool, nullptr,
+ (VkCommandBuffer)(boxed_dispatchHandle),
+ pRenderPassBegin, pSubpassBeginInfo);
+ }
break;
}
case OP_vkCmdNextSubpass2: {
@@ -1522,8 +1634,10 @@
transform_tohost_VkSubpassEndInfo(globalstate,
(VkSubpassEndInfo*)(pSubpassEndInfo));
}
- vk->vkCmdNextSubpass2((VkCommandBuffer)dispatchHandle, pSubpassBeginInfo,
- pSubpassEndInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdNextSubpass2((VkCommandBuffer)dispatchHandle, pSubpassBeginInfo,
+ pSubpassEndInfo);
+ }
break;
}
case OP_vkCmdEndRenderPass2: {
@@ -1539,7 +1653,9 @@
transform_tohost_VkSubpassEndInfo(globalstate,
(VkSubpassEndInfo*)(pSubpassEndInfo));
}
- vk->vkCmdEndRenderPass2((VkCommandBuffer)dispatchHandle, pSubpassEndInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndRenderPass2((VkCommandBuffer)dispatchHandle, pSubpassEndInfo);
+ }
break;
}
#endif
@@ -1562,7 +1678,9 @@
transform_tohost_VkDependencyInfo(globalstate,
(VkDependencyInfo*)(pDependencyInfo));
}
- vk->vkCmdSetEvent2((VkCommandBuffer)dispatchHandle, event, pDependencyInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetEvent2((VkCommandBuffer)dispatchHandle, event, pDependencyInfo);
+ }
break;
}
case OP_vkCmdResetEvent2: {
@@ -1577,7 +1695,9 @@
memcpy((VkPipelineStageFlags2*)&stageMask, *readStreamPtrPtr,
sizeof(VkPipelineStageFlags2));
*readStreamPtrPtr += sizeof(VkPipelineStageFlags2);
- vk->vkCmdResetEvent2((VkCommandBuffer)dispatchHandle, event, stageMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResetEvent2((VkCommandBuffer)dispatchHandle, event, stageMask);
+ }
break;
}
case OP_vkCmdWaitEvents2: {
@@ -1622,8 +1742,10 @@
globalstate, (VkDependencyInfo*)(pDependencyInfos + i));
}
}
- vk->vkCmdWaitEvents2((VkCommandBuffer)dispatchHandle, eventCount, pEvents,
- pDependencyInfos);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWaitEvents2((VkCommandBuffer)dispatchHandle, eventCount, pEvents,
+ pDependencyInfos);
+ }
break;
}
case OP_vkCmdPipelineBarrier2: {
@@ -1639,8 +1761,10 @@
transform_tohost_VkDependencyInfo(globalstate,
(VkDependencyInfo*)(pDependencyInfo));
}
- this->on_vkCmdPipelineBarrier2(
- pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), pDependencyInfo);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdPipelineBarrier2(
+ pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), pDependencyInfo);
+ }
break;
}
case OP_vkCmdWriteTimestamp2: {
@@ -1659,7 +1783,10 @@
(VkQueryPool)unbox_VkQueryPool((VkQueryPool)(*&cgen_var_0));
memcpy((uint32_t*)&query, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdWriteTimestamp2((VkCommandBuffer)dispatchHandle, stage, queryPool, query);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWriteTimestamp2((VkCommandBuffer)dispatchHandle, stage, queryPool,
+ query);
+ }
break;
}
case OP_vkCmdCopyBuffer2: {
@@ -1675,7 +1802,9 @@
transform_tohost_VkCopyBufferInfo2(globalstate,
(VkCopyBufferInfo2*)(pCopyBufferInfo));
}
- vk->vkCmdCopyBuffer2((VkCommandBuffer)dispatchHandle, pCopyBufferInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdCopyBuffer2((VkCommandBuffer)dispatchHandle, pCopyBufferInfo);
+ }
break;
}
case OP_vkCmdCopyImage2: {
@@ -1691,8 +1820,10 @@
transform_tohost_VkCopyImageInfo2(globalstate,
(VkCopyImageInfo2*)(pCopyImageInfo));
}
- this->on_vkCmdCopyImage2(pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle),
- pCopyImageInfo);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdCopyImage2(pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle),
+ pCopyImageInfo);
+ }
break;
}
case OP_vkCmdCopyBufferToImage2: {
@@ -1708,9 +1839,11 @@
transform_tohost_VkCopyBufferToImageInfo2(
globalstate, (VkCopyBufferToImageInfo2*)(pCopyBufferToImageInfo));
}
- this->on_vkCmdCopyBufferToImage2(pool, nullptr,
- (VkCommandBuffer)(boxed_dispatchHandle),
- pCopyBufferToImageInfo, context);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdCopyBufferToImage2(pool, nullptr,
+ (VkCommandBuffer)(boxed_dispatchHandle),
+ pCopyBufferToImageInfo, context);
+ }
break;
}
case OP_vkCmdCopyImageToBuffer2: {
@@ -1726,8 +1859,11 @@
transform_tohost_VkCopyImageToBufferInfo2(
globalstate, (VkCopyImageToBufferInfo2*)(pCopyImageToBufferInfo));
}
- this->on_vkCmdCopyImageToBuffer2(
- pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), pCopyImageToBufferInfo);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdCopyImageToBuffer2(pool, nullptr,
+ (VkCommandBuffer)(boxed_dispatchHandle),
+ pCopyImageToBufferInfo);
+ }
break;
}
case OP_vkCmdBlitImage2: {
@@ -1743,7 +1879,9 @@
transform_tohost_VkBlitImageInfo2(globalstate,
(VkBlitImageInfo2*)(pBlitImageInfo));
}
- vk->vkCmdBlitImage2((VkCommandBuffer)dispatchHandle, pBlitImageInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBlitImage2((VkCommandBuffer)dispatchHandle, pBlitImageInfo);
+ }
break;
}
case OP_vkCmdResolveImage2: {
@@ -1759,7 +1897,9 @@
transform_tohost_VkResolveImageInfo2(globalstate,
(VkResolveImageInfo2*)(pResolveImageInfo));
}
- vk->vkCmdResolveImage2((VkCommandBuffer)dispatchHandle, pResolveImageInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResolveImage2((VkCommandBuffer)dispatchHandle, pResolveImageInfo);
+ }
break;
}
case OP_vkCmdBeginRendering: {
@@ -1775,13 +1915,17 @@
transform_tohost_VkRenderingInfo(globalstate,
(VkRenderingInfo*)(pRenderingInfo));
}
- vk->vkCmdBeginRendering((VkCommandBuffer)dispatchHandle, pRenderingInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBeginRendering((VkCommandBuffer)dispatchHandle, pRenderingInfo);
+ }
break;
}
case OP_vkCmdEndRendering: {
GFXSTREAM_TRACE_EVENT(GFXSTREAM_TRACE_DECODER_CATEGORY,
"VkSubDecoder vkCmdEndRendering");
- vk->vkCmdEndRendering((VkCommandBuffer)dispatchHandle);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndRendering((VkCommandBuffer)dispatchHandle);
+ }
break;
}
case OP_vkCmdSetCullMode: {
@@ -1790,7 +1934,9 @@
VkCullModeFlags cullMode;
memcpy((VkCullModeFlags*)&cullMode, *readStreamPtrPtr, sizeof(VkCullModeFlags));
*readStreamPtrPtr += sizeof(VkCullModeFlags);
- vk->vkCmdSetCullMode((VkCommandBuffer)dispatchHandle, cullMode);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetCullMode((VkCommandBuffer)dispatchHandle, cullMode);
+ }
break;
}
case OP_vkCmdSetFrontFace: {
@@ -1799,7 +1945,9 @@
VkFrontFace frontFace;
memcpy((VkFrontFace*)&frontFace, *readStreamPtrPtr, sizeof(VkFrontFace));
*readStreamPtrPtr += sizeof(VkFrontFace);
- vk->vkCmdSetFrontFace((VkCommandBuffer)dispatchHandle, frontFace);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetFrontFace((VkCommandBuffer)dispatchHandle, frontFace);
+ }
break;
}
case OP_vkCmdSetPrimitiveTopology: {
@@ -1809,7 +1957,10 @@
memcpy((VkPrimitiveTopology*)&primitiveTopology, *readStreamPtrPtr,
sizeof(VkPrimitiveTopology));
*readStreamPtrPtr += sizeof(VkPrimitiveTopology);
- vk->vkCmdSetPrimitiveTopology((VkCommandBuffer)dispatchHandle, primitiveTopology);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetPrimitiveTopology((VkCommandBuffer)dispatchHandle,
+ primitiveTopology);
+ }
break;
}
case OP_vkCmdSetViewportWithCount: {
@@ -1835,8 +1986,10 @@
transform_tohost_VkViewport(globalstate, (VkViewport*)(pViewports + i));
}
}
- vk->vkCmdSetViewportWithCount((VkCommandBuffer)dispatchHandle, viewportCount,
- pViewports);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetViewportWithCount((VkCommandBuffer)dispatchHandle, viewportCount,
+ pViewports);
+ }
break;
}
case OP_vkCmdSetScissorWithCount: {
@@ -1862,8 +2015,10 @@
transform_tohost_VkRect2D(globalstate, (VkRect2D*)(pScissors + i));
}
}
- vk->vkCmdSetScissorWithCount((VkCommandBuffer)dispatchHandle, scissorCount,
- pScissors);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetScissorWithCount((VkCommandBuffer)dispatchHandle, scissorCount,
+ pScissors);
+ }
break;
}
case OP_vkCmdBindVertexBuffers2: {
@@ -1945,8 +2100,10 @@
((bindingCount)) * sizeof(const VkDeviceSize));
*readStreamPtrPtr += ((bindingCount)) * sizeof(const VkDeviceSize);
}
- vk->vkCmdBindVertexBuffers2((VkCommandBuffer)dispatchHandle, firstBinding,
- bindingCount, pBuffers, pOffsets, pSizes, pStrides);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBindVertexBuffers2((VkCommandBuffer)dispatchHandle, firstBinding,
+ bindingCount, pBuffers, pOffsets, pSizes, pStrides);
+ }
break;
}
case OP_vkCmdSetDepthTestEnable: {
@@ -1955,7 +2112,9 @@
VkBool32 depthTestEnable;
memcpy((VkBool32*)&depthTestEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetDepthTestEnable((VkCommandBuffer)dispatchHandle, depthTestEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthTestEnable((VkCommandBuffer)dispatchHandle, depthTestEnable);
+ }
break;
}
case OP_vkCmdSetDepthWriteEnable: {
@@ -1964,7 +2123,9 @@
VkBool32 depthWriteEnable;
memcpy((VkBool32*)&depthWriteEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetDepthWriteEnable((VkCommandBuffer)dispatchHandle, depthWriteEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthWriteEnable((VkCommandBuffer)dispatchHandle, depthWriteEnable);
+ }
break;
}
case OP_vkCmdSetDepthCompareOp: {
@@ -1973,7 +2134,9 @@
VkCompareOp depthCompareOp;
memcpy((VkCompareOp*)&depthCompareOp, *readStreamPtrPtr, sizeof(VkCompareOp));
*readStreamPtrPtr += sizeof(VkCompareOp);
- vk->vkCmdSetDepthCompareOp((VkCommandBuffer)dispatchHandle, depthCompareOp);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthCompareOp((VkCommandBuffer)dispatchHandle, depthCompareOp);
+ }
break;
}
case OP_vkCmdSetDepthBoundsTestEnable: {
@@ -1982,8 +2145,10 @@
VkBool32 depthBoundsTestEnable;
memcpy((VkBool32*)&depthBoundsTestEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetDepthBoundsTestEnable((VkCommandBuffer)dispatchHandle,
- depthBoundsTestEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthBoundsTestEnable((VkCommandBuffer)dispatchHandle,
+ depthBoundsTestEnable);
+ }
break;
}
case OP_vkCmdSetStencilTestEnable: {
@@ -1992,7 +2157,10 @@
VkBool32 stencilTestEnable;
memcpy((VkBool32*)&stencilTestEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetStencilTestEnable((VkCommandBuffer)dispatchHandle, stencilTestEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilTestEnable((VkCommandBuffer)dispatchHandle,
+ stencilTestEnable);
+ }
break;
}
case OP_vkCmdSetStencilOp: {
@@ -2014,8 +2182,10 @@
*readStreamPtrPtr += sizeof(VkStencilOp);
memcpy((VkCompareOp*)&compareOp, *readStreamPtrPtr, sizeof(VkCompareOp));
*readStreamPtrPtr += sizeof(VkCompareOp);
- vk->vkCmdSetStencilOp((VkCommandBuffer)dispatchHandle, faceMask, failOp, passOp,
- depthFailOp, compareOp);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilOp((VkCommandBuffer)dispatchHandle, faceMask, failOp, passOp,
+ depthFailOp, compareOp);
+ }
break;
}
case OP_vkCmdSetRasterizerDiscardEnable: {
@@ -2024,8 +2194,10 @@
VkBool32 rasterizerDiscardEnable;
memcpy((VkBool32*)&rasterizerDiscardEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetRasterizerDiscardEnable((VkCommandBuffer)dispatchHandle,
- rasterizerDiscardEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetRasterizerDiscardEnable((VkCommandBuffer)dispatchHandle,
+ rasterizerDiscardEnable);
+ }
break;
}
case OP_vkCmdSetDepthBiasEnable: {
@@ -2034,7 +2206,9 @@
VkBool32 depthBiasEnable;
memcpy((VkBool32*)&depthBiasEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetDepthBiasEnable((VkCommandBuffer)dispatchHandle, depthBiasEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthBiasEnable((VkCommandBuffer)dispatchHandle, depthBiasEnable);
+ }
break;
}
case OP_vkCmdSetPrimitiveRestartEnable: {
@@ -2043,8 +2217,10 @@
VkBool32 primitiveRestartEnable;
memcpy((VkBool32*)&primitiveRestartEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetPrimitiveRestartEnable((VkCommandBuffer)dispatchHandle,
- primitiveRestartEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetPrimitiveRestartEnable((VkCommandBuffer)dispatchHandle,
+ primitiveRestartEnable);
+ }
break;
}
#endif
@@ -2062,13 +2238,17 @@
transform_tohost_VkRenderingInfo(globalstate,
(VkRenderingInfo*)(pRenderingInfo));
}
- vk->vkCmdBeginRenderingKHR((VkCommandBuffer)dispatchHandle, pRenderingInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBeginRenderingKHR((VkCommandBuffer)dispatchHandle, pRenderingInfo);
+ }
break;
}
case OP_vkCmdEndRenderingKHR: {
GFXSTREAM_TRACE_EVENT(GFXSTREAM_TRACE_DECODER_CATEGORY,
"VkSubDecoder vkCmdEndRenderingKHR");
- vk->vkCmdEndRenderingKHR((VkCommandBuffer)dispatchHandle);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndRenderingKHR((VkCommandBuffer)dispatchHandle);
+ }
break;
}
#endif
@@ -2096,9 +2276,11 @@
transform_tohost_VkSubpassBeginInfo(globalstate,
(VkSubpassBeginInfo*)(pSubpassBeginInfo));
}
- this->on_vkCmdBeginRenderPass2KHR(pool, nullptr,
- (VkCommandBuffer)(boxed_dispatchHandle),
- pRenderPassBegin, pSubpassBeginInfo);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdBeginRenderPass2KHR(pool, nullptr,
+ (VkCommandBuffer)(boxed_dispatchHandle),
+ pRenderPassBegin, pSubpassBeginInfo);
+ }
break;
}
case OP_vkCmdNextSubpass2KHR: {
@@ -2124,8 +2306,10 @@
transform_tohost_VkSubpassEndInfo(globalstate,
(VkSubpassEndInfo*)(pSubpassEndInfo));
}
- vk->vkCmdNextSubpass2KHR((VkCommandBuffer)dispatchHandle, pSubpassBeginInfo,
- pSubpassEndInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdNextSubpass2KHR((VkCommandBuffer)dispatchHandle, pSubpassBeginInfo,
+ pSubpassEndInfo);
+ }
break;
}
case OP_vkCmdEndRenderPass2KHR: {
@@ -2141,7 +2325,9 @@
transform_tohost_VkSubpassEndInfo(globalstate,
(VkSubpassEndInfo*)(pSubpassEndInfo));
}
- vk->vkCmdEndRenderPass2KHR((VkCommandBuffer)dispatchHandle, pSubpassEndInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndRenderPass2KHR((VkCommandBuffer)dispatchHandle, pSubpassEndInfo);
+ }
break;
}
#endif
@@ -2164,7 +2350,9 @@
transform_tohost_VkDependencyInfo(globalstate,
(VkDependencyInfo*)(pDependencyInfo));
}
- vk->vkCmdSetEvent2KHR((VkCommandBuffer)dispatchHandle, event, pDependencyInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetEvent2KHR((VkCommandBuffer)dispatchHandle, event, pDependencyInfo);
+ }
break;
}
case OP_vkCmdResetEvent2KHR: {
@@ -2179,7 +2367,9 @@
memcpy((VkPipelineStageFlags2*)&stageMask, *readStreamPtrPtr,
sizeof(VkPipelineStageFlags2));
*readStreamPtrPtr += sizeof(VkPipelineStageFlags2);
- vk->vkCmdResetEvent2KHR((VkCommandBuffer)dispatchHandle, event, stageMask);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResetEvent2KHR((VkCommandBuffer)dispatchHandle, event, stageMask);
+ }
break;
}
case OP_vkCmdWaitEvents2KHR: {
@@ -2224,8 +2414,10 @@
globalstate, (VkDependencyInfo*)(pDependencyInfos + i));
}
}
- vk->vkCmdWaitEvents2KHR((VkCommandBuffer)dispatchHandle, eventCount, pEvents,
- pDependencyInfos);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWaitEvents2KHR((VkCommandBuffer)dispatchHandle, eventCount, pEvents,
+ pDependencyInfos);
+ }
break;
}
case OP_vkCmdPipelineBarrier2KHR: {
@@ -2241,7 +2433,9 @@
transform_tohost_VkDependencyInfo(globalstate,
(VkDependencyInfo*)(pDependencyInfo));
}
- vk->vkCmdPipelineBarrier2KHR((VkCommandBuffer)dispatchHandle, pDependencyInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdPipelineBarrier2KHR((VkCommandBuffer)dispatchHandle, pDependencyInfo);
+ }
break;
}
case OP_vkCmdWriteTimestamp2KHR: {
@@ -2260,8 +2454,10 @@
(VkQueryPool)unbox_VkQueryPool((VkQueryPool)(*&cgen_var_0));
memcpy((uint32_t*)&query, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdWriteTimestamp2KHR((VkCommandBuffer)dispatchHandle, stage, queryPool,
- query);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWriteTimestamp2KHR((VkCommandBuffer)dispatchHandle, stage, queryPool,
+ query);
+ }
break;
}
case OP_vkCmdWriteBufferMarker2AMD: {
@@ -2282,8 +2478,10 @@
*readStreamPtrPtr += sizeof(VkDeviceSize);
memcpy((uint32_t*)&marker, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdWriteBufferMarker2AMD((VkCommandBuffer)dispatchHandle, stage, dstBuffer,
- dstOffset, marker);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdWriteBufferMarker2AMD((VkCommandBuffer)dispatchHandle, stage,
+ dstBuffer, dstOffset, marker);
+ }
break;
}
#endif
@@ -2301,7 +2499,9 @@
transform_tohost_VkCopyBufferInfo2(globalstate,
(VkCopyBufferInfo2*)(pCopyBufferInfo));
}
- vk->vkCmdCopyBuffer2KHR((VkCommandBuffer)dispatchHandle, pCopyBufferInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdCopyBuffer2KHR((VkCommandBuffer)dispatchHandle, pCopyBufferInfo);
+ }
break;
}
case OP_vkCmdCopyImage2KHR: {
@@ -2317,8 +2517,10 @@
transform_tohost_VkCopyImageInfo2(globalstate,
(VkCopyImageInfo2*)(pCopyImageInfo));
}
- this->on_vkCmdCopyImage2KHR(pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle),
- pCopyImageInfo);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdCopyImage2KHR(
+ pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), pCopyImageInfo);
+ }
break;
}
case OP_vkCmdCopyBufferToImage2KHR: {
@@ -2334,9 +2536,11 @@
transform_tohost_VkCopyBufferToImageInfo2(
globalstate, (VkCopyBufferToImageInfo2*)(pCopyBufferToImageInfo));
}
- this->on_vkCmdCopyBufferToImage2KHR(pool, nullptr,
- (VkCommandBuffer)(boxed_dispatchHandle),
- pCopyBufferToImageInfo, context);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdCopyBufferToImage2KHR(pool, nullptr,
+ (VkCommandBuffer)(boxed_dispatchHandle),
+ pCopyBufferToImageInfo, context);
+ }
break;
}
case OP_vkCmdCopyImageToBuffer2KHR: {
@@ -2352,8 +2556,11 @@
transform_tohost_VkCopyImageToBufferInfo2(
globalstate, (VkCopyImageToBufferInfo2*)(pCopyImageToBufferInfo));
}
- this->on_vkCmdCopyImageToBuffer2KHR(
- pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), pCopyImageToBufferInfo);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCmdCopyImageToBuffer2KHR(pool, nullptr,
+ (VkCommandBuffer)(boxed_dispatchHandle),
+ pCopyImageToBufferInfo);
+ }
break;
}
case OP_vkCmdBlitImage2KHR: {
@@ -2369,7 +2576,9 @@
transform_tohost_VkBlitImageInfo2(globalstate,
(VkBlitImageInfo2*)(pBlitImageInfo));
}
- vk->vkCmdBlitImage2KHR((VkCommandBuffer)dispatchHandle, pBlitImageInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBlitImage2KHR((VkCommandBuffer)dispatchHandle, pBlitImageInfo);
+ }
break;
}
case OP_vkCmdResolveImage2KHR: {
@@ -2385,7 +2594,9 @@
transform_tohost_VkResolveImageInfo2(globalstate,
(VkResolveImageInfo2*)(pResolveImageInfo));
}
- vk->vkCmdResolveImage2KHR((VkCommandBuffer)dispatchHandle, pResolveImageInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdResolveImage2KHR((VkCommandBuffer)dispatchHandle, pResolveImageInfo);
+ }
break;
}
#endif
@@ -2407,8 +2618,10 @@
*readStreamPtrPtr += sizeof(VkDeviceSize);
memcpy((VkIndexType*)&indexType, *readStreamPtrPtr, sizeof(VkIndexType));
*readStreamPtrPtr += sizeof(VkIndexType);
- vk->vkCmdBindIndexBuffer2KHR((VkCommandBuffer)dispatchHandle, buffer, offset, size,
- indexType);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBindIndexBuffer2KHR((VkCommandBuffer)dispatchHandle, buffer, offset,
+ size, indexType);
+ }
break;
}
#endif
@@ -2422,8 +2635,10 @@
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint16_t*)&lineStipplePattern, *readStreamPtrPtr, sizeof(uint16_t));
*readStreamPtrPtr += sizeof(uint16_t);
- vk->vkCmdSetLineStippleKHR((VkCommandBuffer)dispatchHandle, lineStippleFactor,
- lineStipplePattern);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetLineStippleKHR((VkCommandBuffer)dispatchHandle, lineStippleFactor,
+ lineStipplePattern);
+ }
break;
}
#endif
@@ -2482,9 +2697,11 @@
((bindingCount)) * sizeof(const VkDeviceSize));
*readStreamPtrPtr += ((bindingCount)) * sizeof(const VkDeviceSize);
}
- vk->vkCmdBindTransformFeedbackBuffersEXT((VkCommandBuffer)dispatchHandle,
- firstBinding, bindingCount, pBuffers,
- pOffsets, pSizes);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBindTransformFeedbackBuffersEXT((VkCommandBuffer)dispatchHandle,
+ firstBinding, bindingCount, pBuffers,
+ pOffsets, pSizes);
+ }
break;
}
case OP_vkCmdBeginTransformFeedbackEXT: {
@@ -2538,9 +2755,11 @@
((counterBufferCount)) * sizeof(const VkDeviceSize));
*readStreamPtrPtr += ((counterBufferCount)) * sizeof(const VkDeviceSize);
}
- vk->vkCmdBeginTransformFeedbackEXT((VkCommandBuffer)dispatchHandle,
- firstCounterBuffer, counterBufferCount,
- pCounterBuffers, pCounterBufferOffsets);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBeginTransformFeedbackEXT((VkCommandBuffer)dispatchHandle,
+ firstCounterBuffer, counterBufferCount,
+ pCounterBuffers, pCounterBufferOffsets);
+ }
break;
}
case OP_vkCmdEndTransformFeedbackEXT: {
@@ -2594,9 +2813,11 @@
((counterBufferCount)) * sizeof(const VkDeviceSize));
*readStreamPtrPtr += ((counterBufferCount)) * sizeof(const VkDeviceSize);
}
- vk->vkCmdEndTransformFeedbackEXT((VkCommandBuffer)dispatchHandle,
- firstCounterBuffer, counterBufferCount,
- pCounterBuffers, pCounterBufferOffsets);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndTransformFeedbackEXT((VkCommandBuffer)dispatchHandle,
+ firstCounterBuffer, counterBufferCount,
+ pCounterBuffers, pCounterBufferOffsets);
+ }
break;
}
case OP_vkCmdBeginQueryIndexedEXT: {
@@ -2618,8 +2839,10 @@
*readStreamPtrPtr += sizeof(VkQueryControlFlags);
memcpy((uint32_t*)&index, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdBeginQueryIndexedEXT((VkCommandBuffer)dispatchHandle, queryPool, query,
- flags, index);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBeginQueryIndexedEXT((VkCommandBuffer)dispatchHandle, queryPool, query,
+ flags, index);
+ }
break;
}
case OP_vkCmdEndQueryIndexedEXT: {
@@ -2637,8 +2860,10 @@
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&index, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdEndQueryIndexedEXT((VkCommandBuffer)dispatchHandle, queryPool, query,
- index);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndQueryIndexedEXT((VkCommandBuffer)dispatchHandle, queryPool, query,
+ index);
+ }
break;
}
case OP_vkCmdDrawIndirectByteCountEXT: {
@@ -2665,9 +2890,11 @@
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&vertexStride, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdDrawIndirectByteCountEXT((VkCommandBuffer)dispatchHandle, instanceCount,
- firstInstance, counterBuffer, counterBufferOffset,
- counterOffset, vertexStride);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdDrawIndirectByteCountEXT(
+ (VkCommandBuffer)dispatchHandle, instanceCount, firstInstance,
+ counterBuffer, counterBufferOffset, counterOffset, vertexStride);
+ }
break;
}
#endif
@@ -2685,13 +2912,17 @@
transform_tohost_VkDebugUtilsLabelEXT(globalstate,
(VkDebugUtilsLabelEXT*)(pLabelInfo));
}
- vk->vkCmdBeginDebugUtilsLabelEXT((VkCommandBuffer)dispatchHandle, pLabelInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBeginDebugUtilsLabelEXT((VkCommandBuffer)dispatchHandle, pLabelInfo);
+ }
break;
}
case OP_vkCmdEndDebugUtilsLabelEXT: {
GFXSTREAM_TRACE_EVENT(GFXSTREAM_TRACE_DECODER_CATEGORY,
"VkSubDecoder vkCmdEndDebugUtilsLabelEXT");
- vk->vkCmdEndDebugUtilsLabelEXT((VkCommandBuffer)dispatchHandle);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdEndDebugUtilsLabelEXT((VkCommandBuffer)dispatchHandle);
+ }
break;
}
case OP_vkCmdInsertDebugUtilsLabelEXT: {
@@ -2707,7 +2938,9 @@
transform_tohost_VkDebugUtilsLabelEXT(globalstate,
(VkDebugUtilsLabelEXT*)(pLabelInfo));
}
- vk->vkCmdInsertDebugUtilsLabelEXT((VkCommandBuffer)dispatchHandle, pLabelInfo);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdInsertDebugUtilsLabelEXT((VkCommandBuffer)dispatchHandle, pLabelInfo);
+ }
break;
}
#endif
@@ -2721,8 +2954,10 @@
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint16_t*)&lineStipplePattern, *readStreamPtrPtr, sizeof(uint16_t));
*readStreamPtrPtr += sizeof(uint16_t);
- vk->vkCmdSetLineStippleEXT((VkCommandBuffer)dispatchHandle, lineStippleFactor,
- lineStipplePattern);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetLineStippleEXT((VkCommandBuffer)dispatchHandle, lineStippleFactor,
+ lineStipplePattern);
+ }
break;
}
#endif
@@ -2733,7 +2968,9 @@
VkCullModeFlags cullMode;
memcpy((VkCullModeFlags*)&cullMode, *readStreamPtrPtr, sizeof(VkCullModeFlags));
*readStreamPtrPtr += sizeof(VkCullModeFlags);
- vk->vkCmdSetCullModeEXT((VkCommandBuffer)dispatchHandle, cullMode);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetCullModeEXT((VkCommandBuffer)dispatchHandle, cullMode);
+ }
break;
}
case OP_vkCmdSetFrontFaceEXT: {
@@ -2742,7 +2979,9 @@
VkFrontFace frontFace;
memcpy((VkFrontFace*)&frontFace, *readStreamPtrPtr, sizeof(VkFrontFace));
*readStreamPtrPtr += sizeof(VkFrontFace);
- vk->vkCmdSetFrontFaceEXT((VkCommandBuffer)dispatchHandle, frontFace);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetFrontFaceEXT((VkCommandBuffer)dispatchHandle, frontFace);
+ }
break;
}
case OP_vkCmdSetPrimitiveTopologyEXT: {
@@ -2752,8 +2991,10 @@
memcpy((VkPrimitiveTopology*)&primitiveTopology, *readStreamPtrPtr,
sizeof(VkPrimitiveTopology));
*readStreamPtrPtr += sizeof(VkPrimitiveTopology);
- vk->vkCmdSetPrimitiveTopologyEXT((VkCommandBuffer)dispatchHandle,
- primitiveTopology);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetPrimitiveTopologyEXT((VkCommandBuffer)dispatchHandle,
+ primitiveTopology);
+ }
break;
}
case OP_vkCmdSetViewportWithCountEXT: {
@@ -2779,8 +3020,10 @@
transform_tohost_VkViewport(globalstate, (VkViewport*)(pViewports + i));
}
}
- vk->vkCmdSetViewportWithCountEXT((VkCommandBuffer)dispatchHandle, viewportCount,
- pViewports);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetViewportWithCountEXT((VkCommandBuffer)dispatchHandle, viewportCount,
+ pViewports);
+ }
break;
}
case OP_vkCmdSetScissorWithCountEXT: {
@@ -2806,8 +3049,10 @@
transform_tohost_VkRect2D(globalstate, (VkRect2D*)(pScissors + i));
}
}
- vk->vkCmdSetScissorWithCountEXT((VkCommandBuffer)dispatchHandle, scissorCount,
- pScissors);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetScissorWithCountEXT((VkCommandBuffer)dispatchHandle, scissorCount,
+ pScissors);
+ }
break;
}
case OP_vkCmdBindVertexBuffers2EXT: {
@@ -2889,8 +3134,11 @@
((bindingCount)) * sizeof(const VkDeviceSize));
*readStreamPtrPtr += ((bindingCount)) * sizeof(const VkDeviceSize);
}
- vk->vkCmdBindVertexBuffers2EXT((VkCommandBuffer)dispatchHandle, firstBinding,
- bindingCount, pBuffers, pOffsets, pSizes, pStrides);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdBindVertexBuffers2EXT((VkCommandBuffer)dispatchHandle, firstBinding,
+ bindingCount, pBuffers, pOffsets, pSizes,
+ pStrides);
+ }
break;
}
case OP_vkCmdSetDepthTestEnableEXT: {
@@ -2899,7 +3147,10 @@
VkBool32 depthTestEnable;
memcpy((VkBool32*)&depthTestEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetDepthTestEnableEXT((VkCommandBuffer)dispatchHandle, depthTestEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthTestEnableEXT((VkCommandBuffer)dispatchHandle,
+ depthTestEnable);
+ }
break;
}
case OP_vkCmdSetDepthWriteEnableEXT: {
@@ -2908,7 +3159,10 @@
VkBool32 depthWriteEnable;
memcpy((VkBool32*)&depthWriteEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetDepthWriteEnableEXT((VkCommandBuffer)dispatchHandle, depthWriteEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthWriteEnableEXT((VkCommandBuffer)dispatchHandle,
+ depthWriteEnable);
+ }
break;
}
case OP_vkCmdSetDepthCompareOpEXT: {
@@ -2917,7 +3171,9 @@
VkCompareOp depthCompareOp;
memcpy((VkCompareOp*)&depthCompareOp, *readStreamPtrPtr, sizeof(VkCompareOp));
*readStreamPtrPtr += sizeof(VkCompareOp);
- vk->vkCmdSetDepthCompareOpEXT((VkCommandBuffer)dispatchHandle, depthCompareOp);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthCompareOpEXT((VkCommandBuffer)dispatchHandle, depthCompareOp);
+ }
break;
}
case OP_vkCmdSetDepthBoundsTestEnableEXT: {
@@ -2926,8 +3182,10 @@
VkBool32 depthBoundsTestEnable;
memcpy((VkBool32*)&depthBoundsTestEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetDepthBoundsTestEnableEXT((VkCommandBuffer)dispatchHandle,
- depthBoundsTestEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthBoundsTestEnableEXT((VkCommandBuffer)dispatchHandle,
+ depthBoundsTestEnable);
+ }
break;
}
case OP_vkCmdSetStencilTestEnableEXT: {
@@ -2936,8 +3194,10 @@
VkBool32 stencilTestEnable;
memcpy((VkBool32*)&stencilTestEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetStencilTestEnableEXT((VkCommandBuffer)dispatchHandle,
- stencilTestEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilTestEnableEXT((VkCommandBuffer)dispatchHandle,
+ stencilTestEnable);
+ }
break;
}
case OP_vkCmdSetStencilOpEXT: {
@@ -2959,8 +3219,10 @@
*readStreamPtrPtr += sizeof(VkStencilOp);
memcpy((VkCompareOp*)&compareOp, *readStreamPtrPtr, sizeof(VkCompareOp));
*readStreamPtrPtr += sizeof(VkCompareOp);
- vk->vkCmdSetStencilOpEXT((VkCommandBuffer)dispatchHandle, faceMask, failOp, passOp,
- depthFailOp, compareOp);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetStencilOpEXT((VkCommandBuffer)dispatchHandle, faceMask, failOp,
+ passOp, depthFailOp, compareOp);
+ }
break;
}
#endif
@@ -2971,8 +3233,10 @@
uint32_t patchControlPoints;
memcpy((uint32_t*)&patchControlPoints, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdSetPatchControlPointsEXT((VkCommandBuffer)dispatchHandle,
- patchControlPoints);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetPatchControlPointsEXT((VkCommandBuffer)dispatchHandle,
+ patchControlPoints);
+ }
break;
}
case OP_vkCmdSetRasterizerDiscardEnableEXT: {
@@ -2981,8 +3245,10 @@
VkBool32 rasterizerDiscardEnable;
memcpy((VkBool32*)&rasterizerDiscardEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetRasterizerDiscardEnableEXT((VkCommandBuffer)dispatchHandle,
- rasterizerDiscardEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetRasterizerDiscardEnableEXT((VkCommandBuffer)dispatchHandle,
+ rasterizerDiscardEnable);
+ }
break;
}
case OP_vkCmdSetDepthBiasEnableEXT: {
@@ -2991,7 +3257,10 @@
VkBool32 depthBiasEnable;
memcpy((VkBool32*)&depthBiasEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetDepthBiasEnableEXT((VkCommandBuffer)dispatchHandle, depthBiasEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetDepthBiasEnableEXT((VkCommandBuffer)dispatchHandle,
+ depthBiasEnable);
+ }
break;
}
case OP_vkCmdSetLogicOpEXT: {
@@ -3000,7 +3269,9 @@
VkLogicOp logicOp;
memcpy((VkLogicOp*)&logicOp, *readStreamPtrPtr, sizeof(VkLogicOp));
*readStreamPtrPtr += sizeof(VkLogicOp);
- vk->vkCmdSetLogicOpEXT((VkCommandBuffer)dispatchHandle, logicOp);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetLogicOpEXT((VkCommandBuffer)dispatchHandle, logicOp);
+ }
break;
}
case OP_vkCmdSetPrimitiveRestartEnableEXT: {
@@ -3009,8 +3280,10 @@
VkBool32 primitiveRestartEnable;
memcpy((VkBool32*)&primitiveRestartEnable, *readStreamPtrPtr, sizeof(VkBool32));
*readStreamPtrPtr += sizeof(VkBool32);
- vk->vkCmdSetPrimitiveRestartEnableEXT((VkCommandBuffer)dispatchHandle,
- primitiveRestartEnable);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetPrimitiveRestartEnableEXT((VkCommandBuffer)dispatchHandle,
+ primitiveRestartEnable);
+ }
break;
}
#endif
@@ -3032,8 +3305,10 @@
memcpy((VkBool32*)pColorWriteEnables, *readStreamPtrPtr,
((attachmentCount)) * sizeof(const VkBool32));
*readStreamPtrPtr += ((attachmentCount)) * sizeof(const VkBool32);
- vk->vkCmdSetColorWriteEnableEXT((VkCommandBuffer)dispatchHandle, attachmentCount,
- pColorWriteEnables);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetColorWriteEnableEXT((VkCommandBuffer)dispatchHandle,
+ attachmentCount, pColorWriteEnables);
+ }
break;
}
#endif
@@ -3051,15 +3326,20 @@
transform_tohost_VkCommandBufferBeginInfo(
globalstate, (VkCommandBufferBeginInfo*)(pBeginInfo));
}
- this->on_vkBeginCommandBufferAsyncGOOGLE(
- pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), pBeginInfo, context);
+ if (CC_LIKELY(vk)) {
+ this->on_vkBeginCommandBufferAsyncGOOGLE(
+ pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), pBeginInfo,
+ context);
+ }
break;
}
case OP_vkEndCommandBufferAsyncGOOGLE: {
GFXSTREAM_TRACE_EVENT(GFXSTREAM_TRACE_DECODER_CATEGORY,
"VkSubDecoder vkEndCommandBufferAsyncGOOGLE");
- this->on_vkEndCommandBufferAsyncGOOGLE(
- pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), context);
+ if (CC_LIKELY(vk)) {
+ this->on_vkEndCommandBufferAsyncGOOGLE(
+ pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), context);
+ }
break;
}
case OP_vkResetCommandBufferAsyncGOOGLE: {
@@ -3069,8 +3349,10 @@
memcpy((VkCommandBufferResetFlags*)&flags, *readStreamPtrPtr,
sizeof(VkCommandBufferResetFlags));
*readStreamPtrPtr += sizeof(VkCommandBufferResetFlags);
- this->on_vkResetCommandBufferAsyncGOOGLE(
- pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), flags);
+ if (CC_LIKELY(vk)) {
+ this->on_vkResetCommandBufferAsyncGOOGLE(
+ pool, nullptr, (VkCommandBuffer)(boxed_dispatchHandle), flags);
+ }
break;
}
case OP_vkCommandBufferHostSyncGOOGLE: {
@@ -3082,9 +3364,11 @@
*readStreamPtrPtr += sizeof(uint32_t);
memcpy((uint32_t*)&sequenceNumber, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- this->on_vkCommandBufferHostSyncGOOGLE(pool, nullptr,
- (VkCommandBuffer)(boxed_dispatchHandle),
- needHostSync, sequenceNumber);
+ if (CC_LIKELY(vk)) {
+ this->on_vkCommandBufferHostSyncGOOGLE(pool, nullptr,
+ (VkCommandBuffer)(boxed_dispatchHandle),
+ needHostSync, sequenceNumber);
+ }
break;
}
#endif
@@ -3148,9 +3432,12 @@
globalstate,
(VkStridedDeviceAddressRegionKHR*)(pCallableShaderBindingTable));
}
- vk->vkCmdTraceRaysKHR((VkCommandBuffer)dispatchHandle, pRaygenShaderBindingTable,
- pMissShaderBindingTable, pHitShaderBindingTable,
- pCallableShaderBindingTable, width, height, depth);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdTraceRaysKHR((VkCommandBuffer)dispatchHandle,
+ pRaygenShaderBindingTable, pMissShaderBindingTable,
+ pHitShaderBindingTable, pCallableShaderBindingTable,
+ width, height, depth);
+ }
break;
}
case OP_vkCmdTraceRaysIndirectKHR: {
@@ -3207,10 +3494,12 @@
globalstate,
(VkStridedDeviceAddressRegionKHR*)(pCallableShaderBindingTable));
}
- vk->vkCmdTraceRaysIndirectKHR((VkCommandBuffer)dispatchHandle,
- pRaygenShaderBindingTable, pMissShaderBindingTable,
- pHitShaderBindingTable, pCallableShaderBindingTable,
- indirectDeviceAddress);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdTraceRaysIndirectKHR(
+ (VkCommandBuffer)dispatchHandle, pRaygenShaderBindingTable,
+ pMissShaderBindingTable, pHitShaderBindingTable,
+ pCallableShaderBindingTable, indirectDeviceAddress);
+ }
break;
}
case OP_vkCmdSetRayTracingPipelineStackSizeKHR: {
@@ -3219,8 +3508,10 @@
uint32_t pipelineStackSize;
memcpy((uint32_t*)&pipelineStackSize, *readStreamPtrPtr, sizeof(uint32_t));
*readStreamPtrPtr += sizeof(uint32_t);
- vk->vkCmdSetRayTracingPipelineStackSizeKHR((VkCommandBuffer)dispatchHandle,
- pipelineStackSize);
+ if (CC_LIKELY(vk)) {
+ vk->vkCmdSetRayTracingPipelineStackSizeKHR((VkCommandBuffer)dispatchHandle,
+ pipelineStackSize);
+ }
break;
}
#endif
diff --git a/host/vulkan/VulkanBoxedHandles.h b/host/vulkan/VulkanBoxedHandles.h
index 209c6b3..1d2d4eb 100644
--- a/host/vulkan/VulkanBoxedHandles.h
+++ b/host/vulkan/VulkanBoxedHandles.h
@@ -55,12 +55,12 @@
bool decRef() { return 0 == __atomic_sub_fetch(&refcount, 1, __ATOMIC_SEQ_CST); }
};
-static void acquireOrderMaintInfo(OrderMaintenanceInfo* ord) {
+inline void acquireOrderMaintInfo(OrderMaintenanceInfo* ord) {
if (!ord) return;
ord->incRef();
}
-static void releaseOrderMaintInfo(OrderMaintenanceInfo* ord) {
+inline void releaseOrderMaintInfo(OrderMaintenanceInfo* ord) {
if (!ord) return;
if (ord->decRef()) delete ord;
}
diff --git a/host/vulkan/VulkanDispatch.cpp b/host/vulkan/VulkanDispatch.cpp
index 4f78ea2..4977b36 100644
--- a/host/vulkan/VulkanDispatch.cpp
+++ b/host/vulkan/VulkanDispatch.cpp
@@ -50,18 +50,6 @@
android::base::setEnvironmentVariable("VK_ICD_FILENAMES", paths);
}
-static const char* getTestIcdFilename() {
-#if defined(__APPLE__)
- return "libvk_swiftshader.dylib";
-#elif defined(__linux__) || defined(__QNX__)
- return "libvk_swiftshader.so";
-#elif defined(_WIN32) || defined(_MSC_VER)
- return "vk_swiftshader.dll";
-#else
-#error Host operating system not supported
-#endif
-}
-
static void initIcdPaths(bool forTesting) {
auto androidIcd = android::base::getEnvironmentVariable("ANDROID_EMU_VK_ICD");
if (androidIcd == "") {
diff --git a/host/vulkan/cereal/common/vk_struct_id.h b/host/vulkan/cereal/common/vk_struct_id.h
index 081d679..65f428b 100644
--- a/host/vulkan/cereal/common/vk_struct_id.h
+++ b/host/vulkan/cereal/common/vk_struct_id.h
@@ -105,6 +105,8 @@
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES);
REGISTER_VK_STRUCT_ID(VkPhysicalDeviceInlineUniformBlockFeatures,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES);
+REGISTER_VK_STRUCT_ID(VkPhysicalDeviceRobustness2FeaturesEXT,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT);
#if defined(VK_USE_PLATFORM_SCREEN_QNX)
REGISTER_VK_STRUCT_ID(VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX,
@@ -139,6 +141,10 @@
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV);
REGISTER_VK_STRUCT_ID(VkDeviceGroupDeviceCreateInfo,
VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO);
+REGISTER_VK_STRUCT_ID(VkPhysicalDeviceVulkan11Features,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES);
+REGISTER_VK_STRUCT_ID(VkPhysicalDeviceVulkan12Features,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES);
REGISTER_VK_STRUCT_ID(VkPhysicalDeviceVulkan13Features,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES);
diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt
index f725700..b012b31 100644
--- a/third-party/CMakeLists.txt
+++ b/third-party/CMakeLists.txt
@@ -217,6 +217,21 @@
endif()
endif()
+if(GFXSTREAM_ENABLE_HOST_TRACING)
+ if(DEPENDENCY_RESOLUTION STREQUAL "AOSP")
+ set(GFXSTREAM_PERFETTO_PATH ${PROJECT_SOURCE_DIR}/../../../external/perfetto)
+ if(NOT EXISTS ${GFXSTREAM_PERFETTO_PATH})
+ message(FATAL_ERROR "Perfetto is not found.")
+ endif()
+ add_library(perfetto
+ STATIC
+ ${GFXSTREAM_PERFETTO_PATH}/sdk/perfetto.cc)
+ target_include_directories(perfetto
+ INTERFACE
+ ${GFXSTREAM_PERFETTO_PATH}/sdk)
+ endif()
+endif()
+
if(NOT TARGET libdrm_headers)
if(DEPENDENCY_RESOLUTION STREQUAL "AOSP")
set(LIBDRM_PATH ${PROJECT_SOURCE_DIR}/../../../external/libdrm)