mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
gfxstream: don't use renderControlEnc for Vulkan
Based on host caps. Reviewed-by: Aaron Ruby <aruby@blackberry.com> Acked-by: Yonggang Luo <luoyonggang@gmail.com> Acked-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
This commit is contained in:
parent
280eef5b65
commit
f321c3e997
3 changed files with 35 additions and 5 deletions
|
|
@ -97,7 +97,8 @@ struct vulkanCapset {
|
||||||
uint32_t colorBufferMemoryIndex;
|
uint32_t colorBufferMemoryIndex;
|
||||||
uint32_t deferredMapping;
|
uint32_t deferredMapping;
|
||||||
uint32_t blobAlignment;
|
uint32_t blobAlignment;
|
||||||
uint32_t padding[15];
|
uint32_t noRenderControlEnc;
|
||||||
|
uint32_t padding[14];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct magmaCapset {
|
struct magmaCapset {
|
||||||
|
|
|
||||||
|
|
@ -916,14 +916,41 @@ public:
|
||||||
return offset + size <= info.allocationSize;
|
return offset + size <= info.allocationSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setupCaps(void) {
|
void setupCaps(uint32_t& noRenderControlEnc) {
|
||||||
VirtGpuDevice* instance = VirtGpuDevice::getInstance((enum VirtGpuCapset)3);
|
VirtGpuDevice* instance = VirtGpuDevice::getInstance(kCapsetGfxStreamVulkan);
|
||||||
mCaps = instance->getCaps();
|
mCaps = instance->getCaps();
|
||||||
|
|
||||||
// Delete once goldfish Linux drivers are gone
|
// Delete once goldfish Linux drivers are gone
|
||||||
if (mCaps.vulkanCapset.protocolVersion == 0) {
|
if (mCaps.vulkanCapset.protocolVersion == 0) {
|
||||||
mCaps.vulkanCapset.colorBufferMemoryIndex = 0xFFFFFFFF;
|
mCaps.vulkanCapset.colorBufferMemoryIndex = 0xFFFFFFFF;
|
||||||
|
} else {
|
||||||
|
// Don't query the render control encoder for features, since for virtio-gpu the
|
||||||
|
// capabilities provide versioning. Set features to be unconditionally true, since
|
||||||
|
// using virtio-gpu encompasses all prior goldfish features. mFeatureInfo should be
|
||||||
|
// deprecated in favor of caps.
|
||||||
|
|
||||||
|
mFeatureInfo.reset(new EmulatorFeatureInfo);
|
||||||
|
|
||||||
|
mFeatureInfo->hasVulkanNullOptionalStrings = true;
|
||||||
|
mFeatureInfo->hasVulkanIgnoredHandles = true;
|
||||||
|
mFeatureInfo->hasVulkanShaderFloat16Int8 = true;
|
||||||
|
mFeatureInfo->hasVulkanQueueSubmitWithCommands = true;
|
||||||
|
mFeatureInfo->hasDeferredVulkanCommands = true;
|
||||||
|
mFeatureInfo->hasVulkanAsyncQueueSubmit = true;
|
||||||
|
mFeatureInfo->hasVulkanCreateResourcesWithRequirements = true;
|
||||||
|
mFeatureInfo->hasVirtioGpuNext = true;
|
||||||
|
mFeatureInfo->hasVirtioGpuNativeSync = true;
|
||||||
|
mFeatureInfo->hasVulkanBatchedDescriptorSetUpdate = true;
|
||||||
|
mFeatureInfo->hasVulkanAsyncQsri = true;
|
||||||
|
|
||||||
|
ResourceTracker::streamFeatureBits |= VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT;
|
||||||
|
ResourceTracker::streamFeatureBits |= VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT;
|
||||||
|
ResourceTracker::streamFeatureBits |= VULKAN_STREAM_FEATURE_SHADER_FLOAT16_INT8_BIT;
|
||||||
|
ResourceTracker::streamFeatureBits |=
|
||||||
|
VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
noRenderControlEnc = mCaps.vulkanCapset.noRenderControlEnc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setupFeatures(const EmulatorFeatureInfo* features) {
|
void setupFeatures(const EmulatorFeatureInfo* features) {
|
||||||
|
|
@ -7676,7 +7703,9 @@ void ResourceTracker::setupFeatures(const EmulatorFeatureInfo* features) {
|
||||||
mImpl->setupFeatures(features);
|
mImpl->setupFeatures(features);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceTracker::setupCaps(void) { mImpl->setupCaps(); }
|
void ResourceTracker::setupCaps(uint32_t& noRenderControlEnc) {
|
||||||
|
mImpl->setupCaps(noRenderControlEnc);
|
||||||
|
}
|
||||||
|
|
||||||
void ResourceTracker::setThreadingCallbacks(const ResourceTracker::ThreadingCallbacks& callbacks) {
|
void ResourceTracker::setThreadingCallbacks(const ResourceTracker::ThreadingCallbacks& callbacks) {
|
||||||
mImpl->setThreadingCallbacks(callbacks);
|
mImpl->setThreadingCallbacks(callbacks);
|
||||||
|
|
|
||||||
|
|
@ -626,7 +626,7 @@ public:
|
||||||
bool isValidMemoryRange(const VkMappedMemoryRange& range) const;
|
bool isValidMemoryRange(const VkMappedMemoryRange& range) const;
|
||||||
|
|
||||||
void setupFeatures(const EmulatorFeatureInfo* features);
|
void setupFeatures(const EmulatorFeatureInfo* features);
|
||||||
void setupCaps(void);
|
void setupCaps(uint32_t& noRenderControlEnc);
|
||||||
|
|
||||||
void setThreadingCallbacks(const ThreadingCallbacks& callbacks);
|
void setThreadingCallbacks(const ThreadingCallbacks& callbacks);
|
||||||
bool hostSupportsVulkan() const;
|
bool hostSupportsVulkan() const;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue