From f36026ce2e5dfb5ea010e0d0988f140f50b666dd Mon Sep 17 00:00:00 2001 From: George Kyriazis Date: Fri, 16 Mar 2018 10:26:25 -0500 Subject: [PATCH] swr/rast: Move CallPrint() to a separate file Needed work for jit code debug. Reviewed-by: Bruce Cherniak --- src/gallium/drivers/swr/Makefile.sources | 3 +- src/gallium/drivers/swr/meson.build | 1 + .../swr/rasterizer/jitter/builder_misc.cpp | 22 +------- .../jitter/shader_lib/DebugOutput.cpp | 51 +++++++++++++++++++ 4 files changed, 56 insertions(+), 21 deletions(-) create mode 100644 src/gallium/drivers/swr/rasterizer/jitter/shader_lib/DebugOutput.cpp diff --git a/src/gallium/drivers/swr/Makefile.sources b/src/gallium/drivers/swr/Makefile.sources index cbf73953911..4924da1f778 100644 --- a/src/gallium/drivers/swr/Makefile.sources +++ b/src/gallium/drivers/swr/Makefile.sources @@ -151,7 +151,8 @@ JITTER_CXX_SOURCES := \ rasterizer/jitter/JitManager.cpp \ rasterizer/jitter/JitManager.h \ rasterizer/jitter/streamout_jit.cpp \ - rasterizer/jitter/streamout_jit.h + rasterizer/jitter/streamout_jit.h \ + rasterizer/jitter/shader_lib/DebugOutput.cpp MEMORY_CXX_SOURCES := \ rasterizer/memory/ClearTile.cpp \ diff --git a/src/gallium/drivers/swr/meson.build b/src/gallium/drivers/swr/meson.build index 91e03abbebc..6c0f7ae7a51 100644 --- a/src/gallium/drivers/swr/meson.build +++ b/src/gallium/drivers/swr/meson.build @@ -79,6 +79,7 @@ files_swr_mesa = files( 'rasterizer/jitter/JitManager.h', 'rasterizer/jitter/streamout_jit.cpp', 'rasterizer/jitter/streamout_jit.h', + 'rasterizer/jitter/shader_lib/DebugOutput.cpp', ) files_swr_arch = files( diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp index c2660181fdc..54987c77246 100644 --- a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp +++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp @@ -33,10 +33,10 @@ #include +extern "C" void CallPrint(const char* fmt, ...); + namespace SwrJit { - void __cdecl CallPrint(const char* fmt, ...); - ////////////////////////////////////////////////////////////////////////// /// @brief Convert an IEEE 754 32-bit single precision float to an /// 16 bit float with 5 exponent bits and a variable @@ -846,24 +846,6 @@ namespace SwrJit /// @brief C functions called by LLVM IR ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - /// @brief called in JIT code, inserted by PRINT - /// output to both stdout and visual studio debug console - void __cdecl CallPrint(const char* fmt, ...) - { - va_list args; - va_start(args, fmt); - vprintf(fmt, args); - - #if defined( _WIN32 ) - char strBuf[1024]; - vsnprintf_s(strBuf, _TRUNCATE, fmt, args); - OutputDebugStringA(strBuf); - #endif - - va_end(args); - } - Value *Builder::VEXTRACTI128(Value* a, Constant* imm8) { bool flag = !imm8->isZeroValue(); diff --git a/src/gallium/drivers/swr/rasterizer/jitter/shader_lib/DebugOutput.cpp b/src/gallium/drivers/swr/rasterizer/jitter/shader_lib/DebugOutput.cpp new file mode 100644 index 00000000000..54d45e6bc4c --- /dev/null +++ b/src/gallium/drivers/swr/rasterizer/jitter/shader_lib/DebugOutput.cpp @@ -0,0 +1,51 @@ +/**************************************************************************** +* Copyright (C) 2014-2015 Intel Corporation. All Rights Reserved. +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice (including the next +* paragraph) shall be included in all copies or substantial portions of the +* Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +* IN THE SOFTWARE. +* +* @file DebugOutput.cpp +* +* @brief Shader support library implementation for printed Debug output +* +* Notes: +* +******************************************************************************/ +#include +#include "common/os.h" + + +////////////////////////////////////////////////////////////////////////// +/// @brief called in JIT code, inserted by PRINT +/// output to both stdout and visual studio debug console +extern "C" void CallPrint(const char* fmt, ...) +{ + va_list args; + va_start(args, fmt); + vprintf(fmt, args); + +#if defined( _WIN32 ) + char strBuf[1024]; + vsnprintf_s(strBuf, _TRUNCATE, fmt, args); + OutputDebugStringA(strBuf); +#endif + + va_end(args); +} + -- 2.30.2