1 // Copyright 2019 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // This file is auto-generated from 6 // gpu/ipc/common/generate_vulkan_types.py 7 // It's formatted by clang-format using chromium coding style: 8 // clang-format -i -style=chromium filename 9 // DO NOT EDIT! 10 11 #ifndef GPU_IPC_COMMON_VULKAN_TYPES_MOJOM_TRAITS_H_ 12 #define GPU_IPC_COMMON_VULKAN_TYPES_MOJOM_TRAITS_H_ 13 14 #include "base/containers/span.h" 15 #include "base/strings/string_piece.h" 16 #include "gpu/ipc/common/vulkan_types.h" 17 #include "gpu/ipc/common/vulkan_types.mojom-shared.h" 18 19 namespace mojo { 20 21 template <> 22 struct StructTraits<gpu::mojom::VkExtensionPropertiesDataView, 23 VkExtensionProperties> { 24 static base::StringPiece extensionName(const VkExtensionProperties& input) { 25 return input.extensionName; 26 } 27 28 static uint32_t specVersion(const VkExtensionProperties& input) { 29 return input.specVersion; 30 } 31 32 static bool Read(gpu::mojom::VkExtensionPropertiesDataView data, 33 VkExtensionProperties* out); 34 }; 35 36 template <> 37 struct StructTraits<gpu::mojom::VkLayerPropertiesDataView, VkLayerProperties> { 38 static base::StringPiece layerName(const VkLayerProperties& input) { 39 return input.layerName; 40 } 41 42 static uint32_t specVersion(const VkLayerProperties& input) { 43 return input.specVersion; 44 } 45 46 static uint32_t implementationVersion(const VkLayerProperties& input) { 47 return input.implementationVersion; 48 } 49 50 static base::StringPiece description(const VkLayerProperties& input) { 51 return input.description; 52 } 53 54 static bool Read(gpu::mojom::VkLayerPropertiesDataView data, 55 VkLayerProperties* out); 56 }; 57 58 template <> 59 struct StructTraits<gpu::mojom::VkPhysicalDevicePropertiesDataView, 60 VkPhysicalDeviceProperties> { 61 static uint32_t apiVersion(const VkPhysicalDeviceProperties& input) { 62 return input.apiVersion; 63 } 64 65 static uint32_t driverVersion(const VkPhysicalDeviceProperties& input) { 66 return input.driverVersion; 67 } 68 69 static uint32_t vendorID(const VkPhysicalDeviceProperties& input) { 70 return input.vendorID; 71 } 72 73 static uint32_t deviceID(const VkPhysicalDeviceProperties& input) { 74 return input.deviceID; 75 } 76 77 static VkPhysicalDeviceType deviceType( 78 const VkPhysicalDeviceProperties& input) { 79 return input.deviceType; 80 } 81 82 static base::StringPiece deviceName(const VkPhysicalDeviceProperties& input) { 83 return input.deviceName; 84 } 85 86 static base::span<const uint8_t> pipelineCacheUUID( 87 const VkPhysicalDeviceProperties& input) { 88 return base::make_span(input.pipelineCacheUUID); 89 } 90 91 static const VkPhysicalDeviceLimits& limits( 92 const VkPhysicalDeviceProperties& input) { 93 return input.limits; 94 } 95 96 static const VkPhysicalDeviceSparseProperties& sparseProperties( 97 const VkPhysicalDeviceProperties& input) { 98 return input.sparseProperties; 99 } 100 101 static bool Read(gpu::mojom::VkPhysicalDevicePropertiesDataView data, 102 VkPhysicalDeviceProperties* out); 103 }; 104 105 template <> 106 struct EnumTraits<gpu::mojom::VkPhysicalDeviceType, VkPhysicalDeviceType> { 107 static gpu::mojom::VkPhysicalDeviceType ToMojom(VkPhysicalDeviceType input) { 108 switch (input) { 109 case VkPhysicalDeviceType::VK_PHYSICAL_DEVICE_TYPE_OTHER: 110 return gpu::mojom::VkPhysicalDeviceType::OTHER; 111 case VkPhysicalDeviceType::VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU: 112 return gpu::mojom::VkPhysicalDeviceType::INTEGRATED_GPU; 113 case VkPhysicalDeviceType::VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU: 114 return gpu::mojom::VkPhysicalDeviceType::DISCRETE_GPU; 115 case VkPhysicalDeviceType::VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU: 116 return gpu::mojom::VkPhysicalDeviceType::VIRTUAL_GPU; 117 case VkPhysicalDeviceType::VK_PHYSICAL_DEVICE_TYPE_CPU: 118 return gpu::mojom::VkPhysicalDeviceType::CPU; 119 default: 120 NOTREACHED(); 121 return gpu::mojom::VkPhysicalDeviceType::INVALID_VALUE; 122 } 123 } 124 125 static bool FromMojom(gpu::mojom::VkPhysicalDeviceType input, 126 VkPhysicalDeviceType* out) { 127 switch (input) { 128 case gpu::mojom::VkPhysicalDeviceType::OTHER: 129 *out = VkPhysicalDeviceType::VK_PHYSICAL_DEVICE_TYPE_OTHER; 130 return true; 131 case gpu::mojom::VkPhysicalDeviceType::INTEGRATED_GPU: 132 *out = VkPhysicalDeviceType::VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU; 133 return true; 134 case gpu::mojom::VkPhysicalDeviceType::DISCRETE_GPU: 135 *out = VkPhysicalDeviceType::VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU; 136 return true; 137 case gpu::mojom::VkPhysicalDeviceType::VIRTUAL_GPU: 138 *out = VkPhysicalDeviceType::VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU; 139 return true; 140 case gpu::mojom::VkPhysicalDeviceType::CPU: 141 *out = VkPhysicalDeviceType::VK_PHYSICAL_DEVICE_TYPE_CPU; 142 return true; 143 case gpu::mojom::VkPhysicalDeviceType::INVALID_VALUE: 144 NOTREACHED(); 145 return false; 146 } 147 NOTREACHED(); 148 return false; 149 } 150 }; 151 template <> 152 struct StructTraits<gpu::mojom::VkPhysicalDeviceLimitsDataView, 153 VkPhysicalDeviceLimits> { 154 static uint32_t maxImageDimension1D(const VkPhysicalDeviceLimits& input) { 155 return input.maxImageDimension1D; 156 } 157 158 static uint32_t maxImageDimension2D(const VkPhysicalDeviceLimits& input) { 159 return input.maxImageDimension2D; 160 } 161 162 static uint32_t maxImageDimension3D(const VkPhysicalDeviceLimits& input) { 163 return input.maxImageDimension3D; 164 } 165 166 static uint32_t maxImageDimensionCube(const VkPhysicalDeviceLimits& input) { 167 return input.maxImageDimensionCube; 168 } 169 170 static uint32_t maxImageArrayLayers(const VkPhysicalDeviceLimits& input) { 171 return input.maxImageArrayLayers; 172 } 173 174 static uint32_t maxTexelBufferElements(const VkPhysicalDeviceLimits& input) { 175 return input.maxTexelBufferElements; 176 } 177 178 static uint32_t maxUniformBufferRange(const VkPhysicalDeviceLimits& input) { 179 return input.maxUniformBufferRange; 180 } 181 182 static uint32_t maxStorageBufferRange(const VkPhysicalDeviceLimits& input) { 183 return input.maxStorageBufferRange; 184 } 185 186 static uint32_t maxPushConstantsSize(const VkPhysicalDeviceLimits& input) { 187 return input.maxPushConstantsSize; 188 } 189 190 static uint32_t maxMemoryAllocationCount( 191 const VkPhysicalDeviceLimits& input) { 192 return input.maxMemoryAllocationCount; 193 } 194 195 static uint32_t maxSamplerAllocationCount( 196 const VkPhysicalDeviceLimits& input) { 197 return input.maxSamplerAllocationCount; 198 } 199 200 static bool bufferImageGranularity(const VkPhysicalDeviceLimits& input) { 201 return input.bufferImageGranularity; 202 } 203 204 static bool sparseAddressSpaceSize(const VkPhysicalDeviceLimits& input) { 205 return input.sparseAddressSpaceSize; 206 } 207 208 static uint32_t maxBoundDescriptorSets(const VkPhysicalDeviceLimits& input) { 209 return input.maxBoundDescriptorSets; 210 } 211 212 static uint32_t maxPerStageDescriptorSamplers( 213 const VkPhysicalDeviceLimits& input) { 214 return input.maxPerStageDescriptorSamplers; 215 } 216 217 static uint32_t maxPerStageDescriptorUniformBuffers( 218 const VkPhysicalDeviceLimits& input) { 219 return input.maxPerStageDescriptorUniformBuffers; 220 } 221 222 static uint32_t maxPerStageDescriptorStorageBuffers( 223 const VkPhysicalDeviceLimits& input) { 224 return input.maxPerStageDescriptorStorageBuffers; 225 } 226 227 static uint32_t maxPerStageDescriptorSampledImages( 228 const VkPhysicalDeviceLimits& input) { 229 return input.maxPerStageDescriptorSampledImages; 230 } 231 232 static uint32_t maxPerStageDescriptorStorageImages( 233 const VkPhysicalDeviceLimits& input) { 234 return input.maxPerStageDescriptorStorageImages; 235 } 236 237 static uint32_t maxPerStageDescriptorInputAttachments( 238 const VkPhysicalDeviceLimits& input) { 239 return input.maxPerStageDescriptorInputAttachments; 240 } 241 242 static uint32_t maxPerStageResources(const VkPhysicalDeviceLimits& input) { 243 return input.maxPerStageResources; 244 } 245 246 static uint32_t maxDescriptorSetSamplers( 247 const VkPhysicalDeviceLimits& input) { 248 return input.maxDescriptorSetSamplers; 249 } 250 251 static uint32_t maxDescriptorSetUniformBuffers( 252 const VkPhysicalDeviceLimits& input) { 253 return input.maxDescriptorSetUniformBuffers; 254 } 255 256 static uint32_t maxDescriptorSetUniformBuffersDynamic( 257 const VkPhysicalDeviceLimits& input) { 258 return input.maxDescriptorSetUniformBuffersDynamic; 259 } 260 261 static uint32_t maxDescriptorSetStorageBuffers( 262 const VkPhysicalDeviceLimits& input) { 263 return input.maxDescriptorSetStorageBuffers; 264 } 265 266 static uint32_t maxDescriptorSetStorageBuffersDynamic( 267 const VkPhysicalDeviceLimits& input) { 268 return input.maxDescriptorSetStorageBuffersDynamic; 269 } 270 271 static uint32_t maxDescriptorSetSampledImages( 272 const VkPhysicalDeviceLimits& input) { 273 return input.maxDescriptorSetSampledImages; 274 } 275 276 static uint32_t maxDescriptorSetStorageImages( 277 const VkPhysicalDeviceLimits& input) { 278 return input.maxDescriptorSetStorageImages; 279 } 280 281 static uint32_t maxDescriptorSetInputAttachments( 282 const VkPhysicalDeviceLimits& input) { 283 return input.maxDescriptorSetInputAttachments; 284 } 285 286 static uint32_t maxVertexInputAttributes( 287 const VkPhysicalDeviceLimits& input) { 288 return input.maxVertexInputAttributes; 289 } 290 291 static uint32_t maxVertexInputBindings(const VkPhysicalDeviceLimits& input) { 292 return input.maxVertexInputBindings; 293 } 294 295 static uint32_t maxVertexInputAttributeOffset( 296 const VkPhysicalDeviceLimits& input) { 297 return input.maxVertexInputAttributeOffset; 298 } 299 300 static uint32_t maxVertexInputBindingStride( 301 const VkPhysicalDeviceLimits& input) { 302 return input.maxVertexInputBindingStride; 303 } 304 305 static uint32_t maxVertexOutputComponents( 306 const VkPhysicalDeviceLimits& input) { 307 return input.maxVertexOutputComponents; 308 } 309 310 static uint32_t maxTessellationGenerationLevel( 311 const VkPhysicalDeviceLimits& input) { 312 return input.maxTessellationGenerationLevel; 313 } 314 315 static uint32_t maxTessellationPatchSize( 316 const VkPhysicalDeviceLimits& input) { 317 return input.maxTessellationPatchSize; 318 } 319 320 static uint32_t maxTessellationControlPerVertexInputComponents( 321 const VkPhysicalDeviceLimits& input) { 322 return input.maxTessellationControlPerVertexInputComponents; 323 } 324 325 static uint32_t maxTessellationControlPerVertexOutputComponents( 326 const VkPhysicalDeviceLimits& input) { 327 return input.maxTessellationControlPerVertexOutputComponents; 328 } 329 330 static uint32_t maxTessellationControlPerPatchOutputComponents( 331 const VkPhysicalDeviceLimits& input) { 332 return input.maxTessellationControlPerPatchOutputComponents; 333 } 334 335 static uint32_t maxTessellationControlTotalOutputComponents( 336 const VkPhysicalDeviceLimits& input) { 337 return input.maxTessellationControlTotalOutputComponents; 338 } 339 340 static uint32_t maxTessellationEvaluationInputComponents( 341 const VkPhysicalDeviceLimits& input) { 342 return input.maxTessellationEvaluationInputComponents; 343 } 344 345 static uint32_t maxTessellationEvaluationOutputComponents( 346 const VkPhysicalDeviceLimits& input) { 347 return input.maxTessellationEvaluationOutputComponents; 348 } 349 350 static uint32_t maxGeometryShaderInvocations( 351 const VkPhysicalDeviceLimits& input) { 352 return input.maxGeometryShaderInvocations; 353 } 354 355 static uint32_t maxGeometryInputComponents( 356 const VkPhysicalDeviceLimits& input) { 357 return input.maxGeometryInputComponents; 358 } 359 360 static uint32_t maxGeometryOutputComponents( 361 const VkPhysicalDeviceLimits& input) { 362 return input.maxGeometryOutputComponents; 363 } 364 365 static uint32_t maxGeometryOutputVertices( 366 const VkPhysicalDeviceLimits& input) { 367 return input.maxGeometryOutputVertices; 368 } 369 370 static uint32_t maxGeometryTotalOutputComponents( 371 const VkPhysicalDeviceLimits& input) { 372 return input.maxGeometryTotalOutputComponents; 373 } 374 375 static uint32_t maxFragmentInputComponents( 376 const VkPhysicalDeviceLimits& input) { 377 return input.maxFragmentInputComponents; 378 } 379 380 static uint32_t maxFragmentOutputAttachments( 381 const VkPhysicalDeviceLimits& input) { 382 return input.maxFragmentOutputAttachments; 383 } 384 385 static uint32_t maxFragmentDualSrcAttachments( 386 const VkPhysicalDeviceLimits& input) { 387 return input.maxFragmentDualSrcAttachments; 388 } 389 390 static uint32_t maxFragmentCombinedOutputResources( 391 const VkPhysicalDeviceLimits& input) { 392 return input.maxFragmentCombinedOutputResources; 393 } 394 395 static uint32_t maxComputeSharedMemorySize( 396 const VkPhysicalDeviceLimits& input) { 397 return input.maxComputeSharedMemorySize; 398 } 399 400 static base::span<const uint32_t> maxComputeWorkGroupCount( 401 const VkPhysicalDeviceLimits& input) { 402 return base::make_span(input.maxComputeWorkGroupCount); 403 } 404 405 static uint32_t maxComputeWorkGroupInvocations( 406 const VkPhysicalDeviceLimits& input) { 407 return input.maxComputeWorkGroupInvocations; 408 } 409 410 static base::span<const uint32_t> maxComputeWorkGroupSize( 411 const VkPhysicalDeviceLimits& input) { 412 return base::make_span(input.maxComputeWorkGroupSize); 413 } 414 415 static uint32_t subPixelPrecisionBits(const VkPhysicalDeviceLimits& input) { 416 return input.subPixelPrecisionBits; 417 } 418 419 static uint32_t subTexelPrecisionBits(const VkPhysicalDeviceLimits& input) { 420 return input.subTexelPrecisionBits; 421 } 422 423 static uint32_t mipmapPrecisionBits(const VkPhysicalDeviceLimits& input) { 424 return input.mipmapPrecisionBits; 425 } 426 427 static uint32_t maxDrawIndexedIndexValue( 428 const VkPhysicalDeviceLimits& input) { 429 return input.maxDrawIndexedIndexValue; 430 } 431 432 static uint32_t maxDrawIndirectCount(const VkPhysicalDeviceLimits& input) { 433 return input.maxDrawIndirectCount; 434 } 435 436 static float maxSamplerLodBias(const VkPhysicalDeviceLimits& input) { 437 return input.maxSamplerLodBias; 438 } 439 440 static float maxSamplerAnisotropy(const VkPhysicalDeviceLimits& input) { 441 return input.maxSamplerAnisotropy; 442 } 443 444 static uint32_t maxViewports(const VkPhysicalDeviceLimits& input) { 445 return input.maxViewports; 446 } 447 448 static base::span<const uint32_t> maxViewportDimensions( 449 const VkPhysicalDeviceLimits& input) { 450 return base::make_span(input.maxViewportDimensions); 451 } 452 453 static base::span<const float> viewportBoundsRange( 454 const VkPhysicalDeviceLimits& input) { 455 return base::make_span(input.viewportBoundsRange); 456 } 457 458 static uint32_t viewportSubPixelBits(const VkPhysicalDeviceLimits& input) { 459 return input.viewportSubPixelBits; 460 } 461 462 static size_t minMemoryMapAlignment(const VkPhysicalDeviceLimits& input) { 463 return input.minMemoryMapAlignment; 464 } 465 466 static bool minTexelBufferOffsetAlignment( 467 const VkPhysicalDeviceLimits& input) { 468 return input.minTexelBufferOffsetAlignment; 469 } 470 471 static bool minUniformBufferOffsetAlignment( 472 const VkPhysicalDeviceLimits& input) { 473 return input.minUniformBufferOffsetAlignment; 474 } 475 476 static bool minStorageBufferOffsetAlignment( 477 const VkPhysicalDeviceLimits& input) { 478 return input.minStorageBufferOffsetAlignment; 479 } 480 481 static int32_t minTexelOffset(const VkPhysicalDeviceLimits& input) { 482 return input.minTexelOffset; 483 } 484 485 static uint32_t maxTexelOffset(const VkPhysicalDeviceLimits& input) { 486 return input.maxTexelOffset; 487 } 488 489 static int32_t minTexelGatherOffset(const VkPhysicalDeviceLimits& input) { 490 return input.minTexelGatherOffset; 491 } 492 493 static uint32_t maxTexelGatherOffset(const VkPhysicalDeviceLimits& input) { 494 return input.maxTexelGatherOffset; 495 } 496 497 static float minInterpolationOffset(const VkPhysicalDeviceLimits& input) { 498 return input.minInterpolationOffset; 499 } 500 501 static float maxInterpolationOffset(const VkPhysicalDeviceLimits& input) { 502 return input.maxInterpolationOffset; 503 } 504 505 static uint32_t subPixelInterpolationOffsetBits( 506 const VkPhysicalDeviceLimits& input) { 507 return input.subPixelInterpolationOffsetBits; 508 } 509 510 static uint32_t maxFramebufferWidth(const VkPhysicalDeviceLimits& input) { 511 return input.maxFramebufferWidth; 512 } 513 514 static uint32_t maxFramebufferHeight(const VkPhysicalDeviceLimits& input) { 515 return input.maxFramebufferHeight; 516 } 517 518 static uint32_t maxFramebufferLayers(const VkPhysicalDeviceLimits& input) { 519 return input.maxFramebufferLayers; 520 } 521 522 static VkSampleCountFlags framebufferColorSampleCounts( 523 const VkPhysicalDeviceLimits& input) { 524 return input.framebufferColorSampleCounts; 525 } 526 527 static VkSampleCountFlags framebufferDepthSampleCounts( 528 const VkPhysicalDeviceLimits& input) { 529 return input.framebufferDepthSampleCounts; 530 } 531 532 static VkSampleCountFlags framebufferStencilSampleCounts( 533 const VkPhysicalDeviceLimits& input) { 534 return input.framebufferStencilSampleCounts; 535 } 536 537 static VkSampleCountFlags framebufferNoAttachmentsSampleCounts( 538 const VkPhysicalDeviceLimits& input) { 539 return input.framebufferNoAttachmentsSampleCounts; 540 } 541 542 static uint32_t maxColorAttachments(const VkPhysicalDeviceLimits& input) { 543 return input.maxColorAttachments; 544 } 545 546 static VkSampleCountFlags sampledImageColorSampleCounts( 547 const VkPhysicalDeviceLimits& input) { 548 return input.sampledImageColorSampleCounts; 549 } 550 551 static VkSampleCountFlags sampledImageIntegerSampleCounts( 552 const VkPhysicalDeviceLimits& input) { 553 return input.sampledImageIntegerSampleCounts; 554 } 555 556 static VkSampleCountFlags sampledImageDepthSampleCounts( 557 const VkPhysicalDeviceLimits& input) { 558 return input.sampledImageDepthSampleCounts; 559 } 560 561 static VkSampleCountFlags sampledImageStencilSampleCounts( 562 const VkPhysicalDeviceLimits& input) { 563 return input.sampledImageStencilSampleCounts; 564 } 565 566 static VkSampleCountFlags storageImageSampleCounts( 567 const VkPhysicalDeviceLimits& input) { 568 return input.storageImageSampleCounts; 569 } 570 571 static uint32_t maxSampleMaskWords(const VkPhysicalDeviceLimits& input) { 572 return input.maxSampleMaskWords; 573 } 574 575 static bool timestampComputeAndGraphics(const VkPhysicalDeviceLimits& input) { 576 return input.timestampComputeAndGraphics; 577 } 578 579 static float timestampPeriod(const VkPhysicalDeviceLimits& input) { 580 return input.timestampPeriod; 581 } 582 583 static uint32_t maxClipDistances(const VkPhysicalDeviceLimits& input) { 584 return input.maxClipDistances; 585 } 586 587 static uint32_t maxCullDistances(const VkPhysicalDeviceLimits& input) { 588 return input.maxCullDistances; 589 } 590 591 static uint32_t maxCombinedClipAndCullDistances( 592 const VkPhysicalDeviceLimits& input) { 593 return input.maxCombinedClipAndCullDistances; 594 } 595 596 static uint32_t discreteQueuePriorities(const VkPhysicalDeviceLimits& input) { 597 return input.discreteQueuePriorities; 598 } 599 600 static base::span<const float> pointSizeRange( 601 const VkPhysicalDeviceLimits& input) { 602 return base::make_span(input.pointSizeRange); 603 } 604 605 static base::span<const float> lineWidthRange( 606 const VkPhysicalDeviceLimits& input) { 607 return base::make_span(input.lineWidthRange); 608 } 609 610 static float pointSizeGranularity(const VkPhysicalDeviceLimits& input) { 611 return input.pointSizeGranularity; 612 } 613 614 static float lineWidthGranularity(const VkPhysicalDeviceLimits& input) { 615 return input.lineWidthGranularity; 616 } 617 618 static bool strictLines(const VkPhysicalDeviceLimits& input) { 619 return input.strictLines; 620 } 621 622 static bool standardSampleLocations(const VkPhysicalDeviceLimits& input) { 623 return input.standardSampleLocations; 624 } 625 626 static bool optimalBufferCopyOffsetAlignment( 627 const VkPhysicalDeviceLimits& input) { 628 return input.optimalBufferCopyOffsetAlignment; 629 } 630 631 static bool optimalBufferCopyRowPitchAlignment( 632 const VkPhysicalDeviceLimits& input) { 633 return input.optimalBufferCopyRowPitchAlignment; 634 } 635 636 static bool nonCoherentAtomSize(const VkPhysicalDeviceLimits& input) { 637 return input.nonCoherentAtomSize; 638 } 639 640 static bool Read(gpu::mojom::VkPhysicalDeviceLimitsDataView data, 641 VkPhysicalDeviceLimits* out); 642 }; 643 644 template <> 645 struct StructTraits<gpu::mojom::VkPhysicalDeviceSparsePropertiesDataView, 646 VkPhysicalDeviceSparseProperties> { 647 static bool residencyStandard2DBlockShape( 648 const VkPhysicalDeviceSparseProperties& input) { 649 return input.residencyStandard2DBlockShape; 650 } 651 652 static bool residencyStandard2DMultisampleBlockShape( 653 const VkPhysicalDeviceSparseProperties& input) { 654 return input.residencyStandard2DMultisampleBlockShape; 655 } 656 657 static bool residencyStandard3DBlockShape( 658 const VkPhysicalDeviceSparseProperties& input) { 659 return input.residencyStandard3DBlockShape; 660 } 661 662 static bool residencyAlignedMipSize( 663 const VkPhysicalDeviceSparseProperties& input) { 664 return input.residencyAlignedMipSize; 665 } 666 667 static bool residencyNonResidentStrict( 668 const VkPhysicalDeviceSparseProperties& input) { 669 return input.residencyNonResidentStrict; 670 } 671 672 static bool Read(gpu::mojom::VkPhysicalDeviceSparsePropertiesDataView data, 673 VkPhysicalDeviceSparseProperties* out); 674 }; 675 676 template <> 677 struct StructTraits<gpu::mojom::VkPhysicalDeviceFeaturesDataView, 678 VkPhysicalDeviceFeatures> { 679 static bool robustBufferAccess(const VkPhysicalDeviceFeatures& input) { 680 return input.robustBufferAccess; 681 } 682 683 static bool fullDrawIndexUint32(const VkPhysicalDeviceFeatures& input) { 684 return input.fullDrawIndexUint32; 685 } 686 687 static bool imageCubeArray(const VkPhysicalDeviceFeatures& input) { 688 return input.imageCubeArray; 689 } 690 691 static bool independentBlend(const VkPhysicalDeviceFeatures& input) { 692 return input.independentBlend; 693 } 694 695 static bool geometryShader(const VkPhysicalDeviceFeatures& input) { 696 return input.geometryShader; 697 } 698 699 static bool tessellationShader(const VkPhysicalDeviceFeatures& input) { 700 return input.tessellationShader; 701 } 702 703 static bool sampleRateShading(const VkPhysicalDeviceFeatures& input) { 704 return input.sampleRateShading; 705 } 706 707 static bool dualSrcBlend(const VkPhysicalDeviceFeatures& input) { 708 return input.dualSrcBlend; 709 } 710 711 static bool logicOp(const VkPhysicalDeviceFeatures& input) { 712 return input.logicOp; 713 } 714 715 static bool multiDrawIndirect(const VkPhysicalDeviceFeatures& input) { 716 return input.multiDrawIndirect; 717 } 718 719 static bool drawIndirectFirstInstance(const VkPhysicalDeviceFeatures& input) { 720 return input.drawIndirectFirstInstance; 721 } 722 723 static bool depthClamp(const VkPhysicalDeviceFeatures& input) { 724 return input.depthClamp; 725 } 726 727 static bool depthBiasClamp(const VkPhysicalDeviceFeatures& input) { 728 return input.depthBiasClamp; 729 } 730 731 static bool fillModeNonSolid(const VkPhysicalDeviceFeatures& input) { 732 return input.fillModeNonSolid; 733 } 734 735 static bool depthBounds(const VkPhysicalDeviceFeatures& input) { 736 return input.depthBounds; 737 } 738 739 static bool wideLines(const VkPhysicalDeviceFeatures& input) { 740 return input.wideLines; 741 } 742 743 static bool largePoints(const VkPhysicalDeviceFeatures& input) { 744 return input.largePoints; 745 } 746 747 static bool alphaToOne(const VkPhysicalDeviceFeatures& input) { 748 return input.alphaToOne; 749 } 750 751 static bool multiViewport(const VkPhysicalDeviceFeatures& input) { 752 return input.multiViewport; 753 } 754 755 static bool samplerAnisotropy(const VkPhysicalDeviceFeatures& input) { 756 return input.samplerAnisotropy; 757 } 758 759 static bool textureCompressionETC2(const VkPhysicalDeviceFeatures& input) { 760 return input.textureCompressionETC2; 761 } 762 763 static bool textureCompressionASTC_LDR( 764 const VkPhysicalDeviceFeatures& input) { 765 return input.textureCompressionASTC_LDR; 766 } 767 768 static bool textureCompressionBC(const VkPhysicalDeviceFeatures& input) { 769 return input.textureCompressionBC; 770 } 771 772 static bool occlusionQueryPrecise(const VkPhysicalDeviceFeatures& input) { 773 return input.occlusionQueryPrecise; 774 } 775 776 static bool pipelineStatisticsQuery(const VkPhysicalDeviceFeatures& input) { 777 return input.pipelineStatisticsQuery; 778 } 779 780 static bool vertexPipelineStoresAndAtomics( 781 const VkPhysicalDeviceFeatures& input) { 782 return input.vertexPipelineStoresAndAtomics; 783 } 784 785 static bool fragmentStoresAndAtomics(const VkPhysicalDeviceFeatures& input) { 786 return input.fragmentStoresAndAtomics; 787 } 788 789 static bool shaderTessellationAndGeometryPointSize( 790 const VkPhysicalDeviceFeatures& input) { 791 return input.shaderTessellationAndGeometryPointSize; 792 } 793 794 static bool shaderImageGatherExtended(const VkPhysicalDeviceFeatures& input) { 795 return input.shaderImageGatherExtended; 796 } 797 798 static bool shaderStorageImageExtendedFormats( 799 const VkPhysicalDeviceFeatures& input) { 800 return input.shaderStorageImageExtendedFormats; 801 } 802 803 static bool shaderStorageImageMultisample( 804 const VkPhysicalDeviceFeatures& input) { 805 return input.shaderStorageImageMultisample; 806 } 807 808 static bool shaderStorageImageReadWithoutFormat( 809 const VkPhysicalDeviceFeatures& input) { 810 return input.shaderStorageImageReadWithoutFormat; 811 } 812 813 static bool shaderStorageImageWriteWithoutFormat( 814 const VkPhysicalDeviceFeatures& input) { 815 return input.shaderStorageImageWriteWithoutFormat; 816 } 817 818 static bool shaderUniformBufferArrayDynamicIndexing( 819 const VkPhysicalDeviceFeatures& input) { 820 return input.shaderUniformBufferArrayDynamicIndexing; 821 } 822 823 static bool shaderSampledImageArrayDynamicIndexing( 824 const VkPhysicalDeviceFeatures& input) { 825 return input.shaderSampledImageArrayDynamicIndexing; 826 } 827 828 static bool shaderStorageBufferArrayDynamicIndexing( 829 const VkPhysicalDeviceFeatures& input) { 830 return input.shaderStorageBufferArrayDynamicIndexing; 831 } 832 833 static bool shaderStorageImageArrayDynamicIndexing( 834 const VkPhysicalDeviceFeatures& input) { 835 return input.shaderStorageImageArrayDynamicIndexing; 836 } 837 838 static bool shaderClipDistance(const VkPhysicalDeviceFeatures& input) { 839 return input.shaderClipDistance; 840 } 841 842 static bool shaderCullDistance(const VkPhysicalDeviceFeatures& input) { 843 return input.shaderCullDistance; 844 } 845 846 static bool shaderFloat64(const VkPhysicalDeviceFeatures& input) { 847 return input.shaderFloat64; 848 } 849 850 static bool shaderInt64(const VkPhysicalDeviceFeatures& input) { 851 return input.shaderInt64; 852 } 853 854 static bool shaderInt16(const VkPhysicalDeviceFeatures& input) { 855 return input.shaderInt16; 856 } 857 858 static bool shaderResourceResidency(const VkPhysicalDeviceFeatures& input) { 859 return input.shaderResourceResidency; 860 } 861 862 static bool shaderResourceMinLod(const VkPhysicalDeviceFeatures& input) { 863 return input.shaderResourceMinLod; 864 } 865 866 static bool sparseBinding(const VkPhysicalDeviceFeatures& input) { 867 return input.sparseBinding; 868 } 869 870 static bool sparseResidencyBuffer(const VkPhysicalDeviceFeatures& input) { 871 return input.sparseResidencyBuffer; 872 } 873 874 static bool sparseResidencyImage2D(const VkPhysicalDeviceFeatures& input) { 875 return input.sparseResidencyImage2D; 876 } 877 878 static bool sparseResidencyImage3D(const VkPhysicalDeviceFeatures& input) { 879 return input.sparseResidencyImage3D; 880 } 881 882 static bool sparseResidency2Samples(const VkPhysicalDeviceFeatures& input) { 883 return input.sparseResidency2Samples; 884 } 885 886 static bool sparseResidency4Samples(const VkPhysicalDeviceFeatures& input) { 887 return input.sparseResidency4Samples; 888 } 889 890 static bool sparseResidency8Samples(const VkPhysicalDeviceFeatures& input) { 891 return input.sparseResidency8Samples; 892 } 893 894 static bool sparseResidency16Samples(const VkPhysicalDeviceFeatures& input) { 895 return input.sparseResidency16Samples; 896 } 897 898 static bool sparseResidencyAliased(const VkPhysicalDeviceFeatures& input) { 899 return input.sparseResidencyAliased; 900 } 901 902 static bool variableMultisampleRate(const VkPhysicalDeviceFeatures& input) { 903 return input.variableMultisampleRate; 904 } 905 906 static bool inheritedQueries(const VkPhysicalDeviceFeatures& input) { 907 return input.inheritedQueries; 908 } 909 910 static bool Read(gpu::mojom::VkPhysicalDeviceFeaturesDataView data, 911 VkPhysicalDeviceFeatures* out); 912 }; 913 914 template <> 915 struct StructTraits<gpu::mojom::VkQueueFamilyPropertiesDataView, 916 VkQueueFamilyProperties> { 917 static VkQueueFlags queueFlags(const VkQueueFamilyProperties& input) { 918 return input.queueFlags; 919 } 920 921 static uint32_t queueCount(const VkQueueFamilyProperties& input) { 922 return input.queueCount; 923 } 924 925 static uint32_t timestampValidBits(const VkQueueFamilyProperties& input) { 926 return input.timestampValidBits; 927 } 928 929 static const VkExtent3D& minImageTransferGranularity( 930 const VkQueueFamilyProperties& input) { 931 return input.minImageTransferGranularity; 932 } 933 934 static bool Read(gpu::mojom::VkQueueFamilyPropertiesDataView data, 935 VkQueueFamilyProperties* out); 936 }; 937 938 template <> 939 struct StructTraits<gpu::mojom::VkExtent3DDataView, VkExtent3D> { 940 static uint32_t width(const VkExtent3D& input) { return input.width; } 941 942 static uint32_t height(const VkExtent3D& input) { return input.height; } 943 944 static uint32_t depth(const VkExtent3D& input) { return input.depth; } 945 946 static bool Read(gpu::mojom::VkExtent3DDataView data, VkExtent3D* out); 947 }; 948 949 } // namespace mojo 950 951 #endif // GPU_IPC_COMMON_VULKAN_TYPES_MOJOM_TRAITS_H_ 952