1*35238bceSAndroid Build Coastguard Worker #ifndef _VKSENDIAN_HPP 2*35238bceSAndroid Build Coastguard Worker #define _VKSENDIAN_HPP 3*35238bceSAndroid Build Coastguard Worker 4*35238bceSAndroid Build Coastguard Worker /*------------------------------------------------------------------------- 5*35238bceSAndroid Build Coastguard Worker * Vulkan CTS Framework 6*35238bceSAndroid Build Coastguard Worker * -------------------- 7*35238bceSAndroid Build Coastguard Worker * 8*35238bceSAndroid Build Coastguard Worker * Copyright (c) 2021 The Khronos Group Inc. 9*35238bceSAndroid Build Coastguard Worker * 10*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 11*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 12*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at 13*35238bceSAndroid Build Coastguard Worker * 14*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 15*35238bceSAndroid Build Coastguard Worker * 16*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 17*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 18*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 20*35238bceSAndroid Build Coastguard Worker * limitations under the License. 21*35238bceSAndroid Build Coastguard Worker * 22*35238bceSAndroid Build Coastguard Worker *-------------------------------------------------------------------------*/ 23*35238bceSAndroid Build Coastguard Worker 24*35238bceSAndroid Build Coastguard Worker #include "vksCommon.hpp" 25*35238bceSAndroid Build Coastguard Worker 26*35238bceSAndroid Build Coastguard Worker #include <deInt32.h> 27*35238bceSAndroid Build Coastguard Worker 28*35238bceSAndroid Build Coastguard Worker namespace vksc_server 29*35238bceSAndroid Build Coastguard Worker { 30*35238bceSAndroid Build Coastguard Worker IsBigEndian()31*35238bceSAndroid Build Coastguard Workerconstexpr bool IsBigEndian() 32*35238bceSAndroid Build Coastguard Worker { 33*35238bceSAndroid Build Coastguard Worker return (DE_ENDIANNESS) == (DE_BIG_ENDIAN); 34*35238bceSAndroid Build Coastguard Worker } 35*35238bceSAndroid Build Coastguard Worker ReverseBytes64(u64 n)36*35238bceSAndroid Build Coastguard Workerconstexpr u64 ReverseBytes64(u64 n) 37*35238bceSAndroid Build Coastguard Worker { 38*35238bceSAndroid Build Coastguard Worker return (((n & u64{0xFF00000000000000}) >> 56) | ((n & u64{0x00FF000000000000}) >> 40) | 39*35238bceSAndroid Build Coastguard Worker ((n & u64{0x0000FF0000000000}) >> 24) | ((n & u64{0x000000FF00000000}) >> 8) | 40*35238bceSAndroid Build Coastguard Worker ((n & u64{0x00000000FF000000}) << 8) | ((n & u64{0x0000000000FF0000}) << 24) | 41*35238bceSAndroid Build Coastguard Worker ((n & u64{0x000000000000FF00}) << 40) | ((n & u64{0x00000000000000FF}) << 56)); 42*35238bceSAndroid Build Coastguard Worker } 43*35238bceSAndroid Build Coastguard Worker 44*35238bceSAndroid Build Coastguard Worker #if DE_ENDIANNESS == DE_LITTLE_ENDIAN HostToNetwork16(u16 host)45*35238bceSAndroid Build Coastguard Workerinline u16 HostToNetwork16(u16 host) 46*35238bceSAndroid Build Coastguard Worker { 47*35238bceSAndroid Build Coastguard Worker return deReverseBytes16(host); 48*35238bceSAndroid Build Coastguard Worker } HostToNetwork32(u32 host)49*35238bceSAndroid Build Coastguard Workerinline u32 HostToNetwork32(u32 host) 50*35238bceSAndroid Build Coastguard Worker { 51*35238bceSAndroid Build Coastguard Worker return deReverseBytes32(host); 52*35238bceSAndroid Build Coastguard Worker } HostToNetwork64(u64 host)53*35238bceSAndroid Build Coastguard Workerinline u64 HostToNetwork64(u64 host) 54*35238bceSAndroid Build Coastguard Worker { 55*35238bceSAndroid Build Coastguard Worker return ReverseBytes64(host); 56*35238bceSAndroid Build Coastguard Worker } 57*35238bceSAndroid Build Coastguard Worker #elif DE_ENDIANNESS == DE_BIG_ENDIAN HostToNetwork16(u16 host)58*35238bceSAndroid Build Coastguard Workerinline u16 HostToNetwork16(u16 host) 59*35238bceSAndroid Build Coastguard Worker { 60*35238bceSAndroid Build Coastguard Worker return host; 61*35238bceSAndroid Build Coastguard Worker } HostToNetwork32(u32 host)62*35238bceSAndroid Build Coastguard Workerinline u32 HostToNetwork32(u32 host) 63*35238bceSAndroid Build Coastguard Worker { 64*35238bceSAndroid Build Coastguard Worker return host; 65*35238bceSAndroid Build Coastguard Worker } HostToNetwork64(u64 host)66*35238bceSAndroid Build Coastguard Workerinline u64 HostToNetwork64(u64 host) 67*35238bceSAndroid Build Coastguard Worker { 68*35238bceSAndroid Build Coastguard Worker return host; 69*35238bceSAndroid Build Coastguard Worker } 70*35238bceSAndroid Build Coastguard Worker #endif 71*35238bceSAndroid Build Coastguard Worker NetworkToHost16(u16 net)72*35238bceSAndroid Build Coastguard Workerinline u16 NetworkToHost16(u16 net) 73*35238bceSAndroid Build Coastguard Worker { 74*35238bceSAndroid Build Coastguard Worker return HostToNetwork16(net); 75*35238bceSAndroid Build Coastguard Worker } NetworkToHost32(u32 net)76*35238bceSAndroid Build Coastguard Workerinline u32 NetworkToHost32(u32 net) 77*35238bceSAndroid Build Coastguard Worker { 78*35238bceSAndroid Build Coastguard Worker return HostToNetwork32(net); 79*35238bceSAndroid Build Coastguard Worker } NetworkToHost64(u64 net)80*35238bceSAndroid Build Coastguard Workerinline u64 NetworkToHost64(u64 net) 81*35238bceSAndroid Build Coastguard Worker { 82*35238bceSAndroid Build Coastguard Worker return HostToNetwork64(net); 83*35238bceSAndroid Build Coastguard Worker } 84*35238bceSAndroid Build Coastguard Worker 85*35238bceSAndroid Build Coastguard Worker } // namespace vksc_server 86*35238bceSAndroid Build Coastguard Worker 87*35238bceSAndroid Build Coastguard Worker #endif // _VKSENDIAN_HPP 88