Show More
Commit Description:
Tweak calculations....
Commit Description:
Tweak calculations. Prevent a negative number of visitors and separate visitors from donors.
File last commit:
Show/Diff file:
Action:
FNA/lib/FNA3D/src/FNA3D_Tracing.h
500 lines | 14.5 KiB | text/x-c | CLexer
/* FNA3D - 3D Graphics Library for FNA
*
* Copyright (c) 2020-2022 Ethan Lee
*
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from
* the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software in a
* product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source distribution.
*
* Ethan "flibitijibibo" Lee <flibitijibibo@flibitijibibo.com>
*
*/
#ifdef FNA3D_TRACING
#include "FNA3D.h"
void FNA3D_Trace_CreateDevice(
FNA3D_PresentationParameters *presentationParameters,
uint8_t debugMode
);
void FNA3D_Trace_DestroyDevice(void);
void FNA3D_Trace_SwapBuffers(
FNA3D_Rect *sourceRectangle,
FNA3D_Rect *destinationRectangle,
void* overrideWindowHandle
);
void FNA3D_Trace_Clear(
FNA3D_ClearOptions options,
FNA3D_Vec4 *color,
float depth,
int32_t stencil
);
void FNA3D_Trace_DrawIndexedPrimitives(
FNA3D_PrimitiveType primitiveType,
int32_t baseVertex,
int32_t minVertexIndex,
int32_t numVertices,
int32_t startIndex,
int32_t primitiveCount,
FNA3D_Buffer *indices,
FNA3D_IndexElementSize indexElementSize
);
void FNA3D_Trace_DrawInstancedPrimitives(
FNA3D_PrimitiveType primitiveType,
int32_t baseVertex,
int32_t minVertexIndex,
int32_t numVertices,
int32_t startIndex,
int32_t primitiveCount,
int32_t instanceCount,
FNA3D_Buffer *indices,
FNA3D_IndexElementSize indexElementSize
);
void FNA3D_Trace_DrawPrimitives(
FNA3D_PrimitiveType primitiveType,
int32_t vertexStart,
int32_t primitiveCount
);
void FNA3D_Trace_SetViewport(FNA3D_Viewport *viewport);
void FNA3D_Trace_SetScissorRect(FNA3D_Rect *scissor);
void FNA3D_Trace_SetBlendFactor(
FNA3D_Color *blendFactor
);
void FNA3D_Trace_SetMultiSampleMask(int32_t mask);
void FNA3D_Trace_SetReferenceStencil(int32_t ref);
void FNA3D_Trace_SetBlendState(
FNA3D_BlendState *blendState
);
void FNA3D_Trace_SetDepthStencilState(
FNA3D_DepthStencilState *depthStencilState
);
void FNA3D_Trace_ApplyRasterizerState(
FNA3D_RasterizerState *rasterizerState
);
void FNA3D_Trace_VerifySampler(
int32_t index,
FNA3D_Texture *texture,
FNA3D_SamplerState *sampler
);
void FNA3D_Trace_VerifyVertexSampler(
int32_t index,
FNA3D_Texture *texture,
FNA3D_SamplerState *sampler
);
void FNA3D_Trace_ApplyVertexBufferBindings(
FNA3D_VertexBufferBinding *bindings,
int32_t numBindings,
uint8_t bindingsUpdated,
int32_t baseVertex
);
void FNA3D_Trace_SetRenderTargets(
FNA3D_RenderTargetBinding *renderTargets,
int32_t numRenderTargets,
FNA3D_Renderbuffer *depthStencilBuffer,
FNA3D_DepthFormat depthFormat,
uint8_t preserveTargetContents
);
void FNA3D_Trace_ResolveTarget(
FNA3D_RenderTargetBinding *target
);
void FNA3D_Trace_ResetBackbuffer(
FNA3D_PresentationParameters *presentationParameters
);
void FNA3D_Trace_ReadBackbuffer(
int32_t x,
int32_t y,
int32_t w,
int32_t h,
int32_t dataLength
);
void FNA3D_Trace_CreateTexture2D(
FNA3D_SurfaceFormat format,
int32_t width,
int32_t height,
int32_t levelCount,
uint8_t isRenderTarget,
FNA3D_Texture *retval
);
void FNA3D_Trace_CreateTexture3D(
FNA3D_SurfaceFormat format,
int32_t width,
int32_t height,
int32_t depth,
int32_t levelCount,
FNA3D_Texture *retval
);
void FNA3D_Trace_CreateTextureCube(
FNA3D_SurfaceFormat format,
int32_t size,
int32_t levelCount,
uint8_t isRenderTarget,
FNA3D_Texture *retval
);
void FNA3D_Trace_AddDisposeTexture(
FNA3D_Texture *texture
);
void FNA3D_Trace_SetTextureData2D(
FNA3D_Texture *texture,
int32_t x,
int32_t y,
int32_t w,
int32_t h,
int32_t level,
void* data,
int32_t dataLength
);
void FNA3D_Trace_SetTextureData3D(
FNA3D_Texture *texture,
int32_t x,
int32_t y,
int32_t z,
int32_t w,
int32_t h,
int32_t d,
int32_t level,
void* data,
int32_t dataLength
);
void FNA3D_Trace_SetTextureDataCube(
FNA3D_Texture *texture,
int32_t x,
int32_t y,
int32_t w,
int32_t h,
FNA3D_CubeMapFace cubeMapFace,
int32_t level,
void* data,
int32_t dataLength
);
void FNA3D_Trace_SetTextureDataYUV(
FNA3D_Texture *y,
FNA3D_Texture *u,
FNA3D_Texture *v,
int32_t yWidth,
int32_t yHeight,
int32_t uvWidth,
int32_t uvHeight,
void* data,
int32_t dataLength
);
void FNA3D_Trace_GetTextureData2D(
FNA3D_Texture *texture,
int32_t x,
int32_t y,
int32_t w,
int32_t h,
int32_t level,
int32_t dataLength
);
void FNA3D_Trace_GetTextureData3D(
FNA3D_Texture *texture,
int32_t x,
int32_t y,
int32_t z,
int32_t w,
int32_t h,
int32_t d,
int32_t level,
int32_t dataLength
);
void FNA3D_Trace_GetTextureDataCube(
FNA3D_Texture *texture,
int32_t x,
int32_t y,
int32_t w,
int32_t h,
FNA3D_CubeMapFace cubeMapFace,
int32_t level,
int32_t dataLength
);
void FNA3D_Trace_GenColorRenderbuffer(
int32_t width,
int32_t height,
FNA3D_SurfaceFormat format,
int32_t multiSampleCount,
FNA3D_Texture *texture,
FNA3D_Renderbuffer *retval
);
void FNA3D_Trace_GenDepthStencilRenderbuffer(
int32_t width,
int32_t height,
FNA3D_DepthFormat format,
int32_t multiSampleCount,
FNA3D_Renderbuffer *retval
);
void FNA3D_Trace_AddDisposeRenderbuffer(
FNA3D_Renderbuffer *renderbuffer
);
void FNA3D_Trace_GenVertexBuffer(
uint8_t dynamic,
FNA3D_BufferUsage usage,
int32_t sizeInBytes,
FNA3D_Buffer *retval
);
void FNA3D_Trace_AddDisposeVertexBuffer(
FNA3D_Buffer *buffer
);
void FNA3D_Trace_SetVertexBufferData(
FNA3D_Buffer *buffer,
int32_t offsetInBytes,
void* data,
int32_t elementCount,
int32_t elementSizeInBytes,
int32_t vertexStride,
FNA3D_SetDataOptions options
);
void FNA3D_Trace_GetVertexBufferData(
FNA3D_Buffer *buffer,
int32_t offsetInBytes,
int32_t elementCount,
int32_t elementSizeInBytes,
int32_t vertexStride
);
void FNA3D_Trace_GenIndexBuffer(
uint8_t dynamic,
FNA3D_BufferUsage usage,
int32_t sizeInBytes,
FNA3D_Buffer *retval
);
void FNA3D_Trace_AddDisposeIndexBuffer(
FNA3D_Buffer *buffer
);
void FNA3D_Trace_SetIndexBufferData(
FNA3D_Buffer *buffer,
int32_t offsetInBytes,
void* data,
int32_t dataLength,
FNA3D_SetDataOptions options
);
void FNA3D_Trace_GetIndexBufferData(
FNA3D_Buffer *buffer,
int32_t offsetInBytes,
int32_t dataLength
);
void FNA3D_Trace_CreateEffect(
uint8_t *effectCode,
uint32_t effectCodeLength,
FNA3D_Effect *retval,
MOJOSHADER_effect *retvalData
);
void FNA3D_Trace_CloneEffect(
FNA3D_Effect *cloneSource,
FNA3D_Effect *retval,
MOJOSHADER_effect *retvalData
);
void FNA3D_Trace_AddDisposeEffect(
FNA3D_Effect *effect
);
void FNA3D_Trace_SetEffectTechnique(
FNA3D_Effect *effect,
MOJOSHADER_effectTechnique *technique
);
void FNA3D_Trace_ApplyEffect(
FNA3D_Effect *effect,
uint32_t pass
);
void FNA3D_Trace_BeginPassRestore(
FNA3D_Effect *effect
);
void FNA3D_Trace_EndPassRestore(
FNA3D_Effect *effect
);
void FNA3D_Trace_CreateQuery(FNA3D_Query *retval);
void FNA3D_Trace_AddDisposeQuery(FNA3D_Query *query);
void FNA3D_Trace_QueryBegin(FNA3D_Query *query);
void FNA3D_Trace_QueryEnd(FNA3D_Query *query);
void FNA3D_Trace_QueryPixelCount(
FNA3D_Query *query
);
void FNA3D_Trace_SetStringMarker(const char *text);
#define TRACE_CREATEDEVICE FNA3D_Trace_CreateDevice(presentationParameters, debugMode);
#define TRACE_DESTROYDEVICE FNA3D_Trace_DestroyDevice();
#define TRACE_SWAPBUFFERS FNA3D_Trace_SwapBuffers(sourceRectangle, destinationRectangle, overrideWindowHandle);
#define TRACE_CLEAR FNA3D_Trace_Clear(options, color, depth, stencil);
#define TRACE_DRAWINDEXEDPRIMITIVES FNA3D_Trace_DrawIndexedPrimitives(primitiveType, baseVertex, minVertexIndex, numVertices, startIndex, primitiveCount, indices, indexElementSize);
#define TRACE_DRAWINSTANCEDPRIMITIVES FNA3D_Trace_DrawInstancedPrimitives(primitiveType, baseVertex, minVertexIndex, numVertices, startIndex, primitiveCount, instanceCount, indices, indexElementSize);
#define TRACE_DRAWPRIMITIVES FNA3D_Trace_DrawPrimitives(primitiveType, vertexStart, primitiveCount);
#define TRACE_SETVIEWPORT FNA3D_Trace_SetViewport(viewport);
#define TRACE_SETSCISSORRECT FNA3D_Trace_SetScissorRect(scissor);
#define TRACE_SETBLENDFACTOR FNA3D_Trace_SetBlendFactor(blendFactor);
#define TRACE_SETMULTISAMPLEMASK FNA3D_Trace_SetMultiSampleMask(mask);
#define TRACE_SETREFERENCESTENCIL FNA3D_Trace_SetReferenceStencil(ref);
#define TRACE_SETBLENDSTATE FNA3D_Trace_SetBlendState(blendState);
#define TRACE_SETDEPTHSTENCILSTATE FNA3D_Trace_SetDepthStencilState(depthStencilState);
#define TRACE_APPLYRASTERIZERSTATE FNA3D_Trace_ApplyRasterizerState(rasterizerState);
#define TRACE_VERIFYSAMPLER FNA3D_Trace_VerifySampler(index, texture, sampler);
#define TRACE_VERIFYVERTEXSAMPLER FNA3D_Trace_VerifyVertexSampler(index, texture, sampler);
#define TRACE_APPLYVERTEXBUFFERBINDINGS FNA3D_Trace_ApplyVertexBufferBindings(bindings, numBindings, bindingsUpdated, baseVertex);
#define TRACE_SETRENDERTARGETS FNA3D_Trace_SetRenderTargets(renderTargets, numRenderTargets, depthStencilBuffer, depthFormat, preserveTargetContents);
#define TRACE_RESOLVETARGET FNA3D_Trace_ResolveTarget(target);
#define TRACE_RESETBACKBUFFER FNA3D_Trace_ResetBackbuffer(presentationParameters);
#define TRACE_READBACKBUFFER FNA3D_Trace_ReadBackbuffer(x, y, w, h, dataLength);
#define TRACE_CREATETEXTURE2D FNA3D_Trace_CreateTexture2D(format, width, height, levelCount, isRenderTarget, result);
#define TRACE_CREATETEXTURE3D FNA3D_Trace_CreateTexture3D(format, width, height, depth, levelCount, result);
#define TRACE_CREATETEXTURECUBE FNA3D_Trace_CreateTextureCube(format, size, levelCount, isRenderTarget, result);
#define TRACE_ADDDISPOSETEXTURE FNA3D_Trace_AddDisposeTexture(texture);
#define TRACE_SETTEXTUREDATA2D FNA3D_Trace_SetTextureData2D(texture, x, y, w, h, level, data, dataLength);
#define TRACE_SETTEXTUREDATA3D FNA3D_Trace_SetTextureData3D(texture, x, y, z, w, h, d, level, data, dataLength);
#define TRACE_SETTEXTUREDATACUBE FNA3D_Trace_SetTextureDataCube(texture, x, y, w, h, cubeMapFace, level, data, dataLength);
#define TRACE_SETTEXTUREDATAYUV FNA3D_Trace_SetTextureDataYUV(y, u, v, yWidth, yHeight, uvWidth, uvHeight, data, dataLength);
#define TRACE_GETTEXTUREDATA2D FNA3D_Trace_GetTextureData2D(texture, x, y, w, h, level, dataLength);
#define TRACE_GETTEXTUREDATA3D FNA3D_Trace_GetTextureData3D(texture, x, y, z, w, h, d, level, dataLength);
#define TRACE_GETTEXTUREDATACUBE FNA3D_Trace_GetTextureDataCube(texture, x, y, w, h, cubeMapFace, level, dataLength);
#define TRACE_GENCOLORRENDERBUFFER FNA3D_Trace_GenColorRenderbuffer(width, height, format, multiSampleCount, texture, result);
#define TRACE_GENDEPTHSTENCILRENDERBUFFER FNA3D_Trace_GenDepthStencilRenderbuffer(width, height, format, multiSampleCount, result);
#define TRACE_ADDDISPOSERENDERBUFFER FNA3D_Trace_AddDisposeRenderbuffer(renderbuffer);
#define TRACE_GENVERTEXBUFFER FNA3D_Trace_GenVertexBuffer(dynamic, usage, sizeInBytes, result);
#define TRACE_ADDDISPOSEVERTEXBUFFER FNA3D_Trace_AddDisposeVertexBuffer(buffer);
#define TRACE_SETVERTEXBUFFERDATA FNA3D_Trace_SetVertexBufferData(buffer, offsetInBytes, data, elementCount, elementSizeInBytes, vertexStride, options);
#define TRACE_GETVERTEXBUFFERDATA FNA3D_Trace_GetVertexBufferData(buffer, offsetInBytes, elementCount, elementSizeInBytes, vertexStride);
#define TRACE_GENINDEXBUFFER FNA3D_Trace_GenIndexBuffer(dynamic, usage, sizeInBytes, result);
#define TRACE_ADDDISPOSEINDEXBUFFER FNA3D_Trace_AddDisposeIndexBuffer(buffer);
#define TRACE_SETINDEXBUFFERDATA FNA3D_Trace_SetIndexBufferData(buffer, offsetInBytes, data, dataLength, options);
#define TRACE_GETINDEXBUFFERDATA FNA3D_Trace_GetIndexBufferData(buffer, offsetInBytes, dataLength);
#define TRACE_CREATEEFFECT FNA3D_Trace_CreateEffect(effectCode, effectCodeLength, *effect, *effectData);
#define TRACE_CLONEEFFECT FNA3D_Trace_CloneEffect(cloneSource, *effect, *effectData);
#define TRACE_ADDDISPOSEEFFECT FNA3D_Trace_AddDisposeEffect(effect);
#define TRACE_SETEFFECTTECHNIQUE FNA3D_Trace_SetEffectTechnique(effect, technique);
#define TRACE_APPLYEFFECT FNA3D_Trace_ApplyEffect(effect, pass);
#define TRACE_BEGINPASSRESTORE FNA3D_Trace_BeginPassRestore(effect);
#define TRACE_ENDPASSRESTORE FNA3D_Trace_EndPassRestore(effect);
#define TRACE_CREATEQUERY FNA3D_Trace_CreateQuery(result);
#define TRACE_ADDDISPOSEQUERY FNA3D_Trace_AddDisposeQuery(query);
#define TRACE_QUERYBEGIN FNA3D_Trace_QueryBegin(query);
#define TRACE_QUERYEND FNA3D_Trace_QueryEnd(query);
#define TRACE_QUERYPIXELCOUNT FNA3D_Trace_QueryPixelCount(query);
#define TRACE_SETSTRINGMARKER FNA3D_Trace_SetStringMarker(text);
#else
#define TRACE_CREATEDEVICE
#define TRACE_DESTROYDEVICE
#define TRACE_SWAPBUFFERS
#define TRACE_CLEAR
#define TRACE_DRAWINDEXEDPRIMITIVES
#define TRACE_DRAWINSTANCEDPRIMITIVES
#define TRACE_DRAWPRIMITIVES
#define TRACE_SETVIEWPORT
#define TRACE_SETSCISSORRECT
#define TRACE_SETBLENDFACTOR
#define TRACE_SETMULTISAMPLEMASK
#define TRACE_SETREFERENCESTENCIL
#define TRACE_SETBLENDSTATE
#define TRACE_SETDEPTHSTENCILSTATE
#define TRACE_APPLYRASTERIZERSTATE
#define TRACE_VERIFYSAMPLER
#define TRACE_VERIFYVERTEXSAMPLER
#define TRACE_APPLYVERTEXBUFFERBINDINGS
#define TRACE_SETRENDERTARGETS
#define TRACE_RESOLVETARGET
#define TRACE_RESETBACKBUFFER
#define TRACE_READBACKBUFFER
#define TRACE_CREATETEXTURE2D
#define TRACE_CREATETEXTURE3D
#define TRACE_CREATETEXTURECUBE
#define TRACE_ADDDISPOSETEXTURE
#define TRACE_SETTEXTUREDATA2D
#define TRACE_SETTEXTUREDATA3D
#define TRACE_SETTEXTUREDATACUBE
#define TRACE_SETTEXTUREDATAYUV
#define TRACE_GETTEXTUREDATA2D
#define TRACE_GETTEXTUREDATA3D
#define TRACE_GETTEXTUREDATACUBE
#define TRACE_GENCOLORRENDERBUFFER
#define TRACE_GENDEPTHSTENCILRENDERBUFFER
#define TRACE_ADDDISPOSERENDERBUFFER
#define TRACE_GENVERTEXBUFFER
#define TRACE_ADDDISPOSEVERTEXBUFFER
#define TRACE_SETVERTEXBUFFERDATA
#define TRACE_GETVERTEXBUFFERDATA
#define TRACE_GENINDEXBUFFER
#define TRACE_ADDDISPOSEINDEXBUFFER
#define TRACE_SETINDEXBUFFERDATA
#define TRACE_GETINDEXBUFFERDATA
#define TRACE_CREATEEFFECT
#define TRACE_CLONEEFFECT
#define TRACE_ADDDISPOSEEFFECT
#define TRACE_SETEFFECTTECHNIQUE
#define TRACE_APPLYEFFECT
#define TRACE_BEGINPASSRESTORE
#define TRACE_ENDPASSRESTORE
#define TRACE_CREATEQUERY
#define TRACE_ADDDISPOSEQUERY
#define TRACE_QUERYBEGIN
#define TRACE_QUERYEND
#define TRACE_QUERYPIXELCOUNT
#define TRACE_SETSTRINGMARKER
#endif /* FNA3D_TRACING */