17485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn#ifndef _VKSPIRVASM_HPP
27485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn#define _VKSPIRVASM_HPP
37485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn/*-------------------------------------------------------------------------
47485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn * Vulkan CTS Framework
57485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn * --------------------
67485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn *
77485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn * Copyright (c) 2015 Google Inc.
87485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn *
9978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * Licensed under the Apache License, Version 2.0 (the "License");
10978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * you may not use this file except in compliance with the License.
11978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * You may obtain a copy of the License at
127485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn *
13978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos *      http://www.apache.org/licenses/LICENSE-2.0
147485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn *
15978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * Unless required by applicable law or agreed to in writing, software
16978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * distributed under the License is distributed on an "AS IS" BASIS,
17978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * See the License for the specific language governing permissions and
19978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * limitations under the License.
207485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn *
217485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn *//*!
227485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn * \file
237485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn * \brief SPIR-V assembly to binary.
247485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn *//*--------------------------------------------------------------------*/
257485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn
267485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn#include "vkDefs.hpp"
277485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn#include "vkPrograms.hpp"
287485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn
293b9dcc5bfd3b622b8fa0a75d88d205a425dd3603Pyry Haulos#include <ostream>
303b9dcc5bfd3b622b8fa0a75d88d205a425dd3603Pyry Haulos
317485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszynnamespace vk
327485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn{
337485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn
347485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn//! Assemble SPIR-V program. Will fail with NotSupportedError if compiler is not available.
353b9dcc5bfd3b622b8fa0a75d88d205a425dd3603Pyry Haulosbool	assembleSpirV		(const SpirVAsmSource* program, std::vector<deUint32>* dst, SpirVProgramInfo* buildInfo);
363b9dcc5bfd3b622b8fa0a75d88d205a425dd3603Pyry Haulos
373b9dcc5bfd3b622b8fa0a75d88d205a425dd3603Pyry Haulos//! Disassemble SPIR-V binary. Throws tcu::NotSupportedError if disassembler is not available
383b9dcc5bfd3b622b8fa0a75d88d205a425dd3603Pyry Haulosvoid	disassembleSpirV	(size_t binarySizeInWords, const deUint32* binary, std::ostream* dst);
397485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn
407e99a1155b6b262ff0728fe72ddb24898b7a7b6eDejan Mircevski//! Validate SPIR-V binary, returning true if validation succeeds. Will fail with NotSupportedError if compiler is not available.
413b9dcc5bfd3b622b8fa0a75d88d205a425dd3603Pyry Haulosbool	validateSpirV		(size_t binarySizeInWords, const deUint32* binary, std::ostream* infoLog);
427e99a1155b6b262ff0728fe72ddb24898b7a7b6eDejan Mircevski
437485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn} // vk
447485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn
457485f0bbab69ed556d54503e8f94bedc5b71175dAndrew Woloszyn#endif // _VKSPIRVASM_HPP
46