blob: 7c56c6941f4ff33fa0d9b83cfa58519dc26b24d8 [file] [log] [blame]
Greg Daniel164a9f02016-02-22 09:56:40 -05001/*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef GrVkUtil_DEFINED
9#define GrVkUtil_DEFINED
10
11#include "GrColor.h"
12#include "GrTypes.h"
Hal Canary22be4c42018-06-12 12:37:31 -040013#include "SkMacros.h"
14#include "ir/SkSLProgram.h"
egdaniel88987d82016-09-19 10:17:34 -070015#include "vk/GrVkDefines.h"
Greg Daniel164a9f02016-02-22 09:56:40 -050016#include "vk/GrVkInterface.h"
17
egdaniel88987d82016-09-19 10:17:34 -070018class GrVkGpu;
Greg Daniel164a9f02016-02-22 09:56:40 -050019
Greg Daniel164a9f02016-02-22 09:56:40 -050020// makes a Vk call on the interface
21#define GR_VK_CALL(IFACE, X) (IFACE)->fFunctions.f##X;
22// same as GR_VK_CALL but checks for success
23#ifdef SK_DEBUG
24#define GR_VK_CALL_ERRCHECK(IFACE, X) \
25 VkResult SK_MACRO_APPEND_LINE(ret) = GR_VK_CALL(IFACE, X); \
26 SkASSERT(VK_SUCCESS == SK_MACRO_APPEND_LINE(ret));
27#else
28#define GR_VK_CALL_ERRCHECK(IFACE, X) (void) GR_VK_CALL(IFACE, X);
29#endif
30
31/**
32 * Returns the vulkan texture format for the given GrPixelConfig
33 */
34bool GrPixelConfigToVkFormat(GrPixelConfig config, VkFormat* format);
35
Greg Daniel81b80592017-12-13 10:20:04 -050036bool GrVkFormatIsSupported(VkFormat);
37
38/**
39 * Returns true if the passed in VkFormat and GrPixelConfig are compatible with each other.
40 */
41bool GrVkFormatPixelConfigPairIsValid(VkFormat, GrPixelConfig);
42
Greg Daniel164a9f02016-02-22 09:56:40 -050043bool GrSampleCountToVkSampleCount(uint32_t samples, VkSampleCountFlagBits* vkSamples);
44
egdaniel88987d82016-09-19 10:17:34 -070045bool GrCompileVkShaderModule(const GrVkGpu* gpu,
46 const char* shaderString,
47 VkShaderStageFlagBits stage,
48 VkShaderModule* shaderModule,
Ethan Nicholas941e7e22016-12-12 15:33:30 -050049 VkPipelineShaderStageCreateInfo* stageInfo,
50 const SkSL::Program::Settings& settings,
51 SkSL::Program::Inputs* outInputs);
egdaniel88987d82016-09-19 10:17:34 -070052
Greg Daniel164a9f02016-02-22 09:56:40 -050053#endif