This repository has been archived by the owner on Jan 3, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 73
/
AABBoxMaskedRasterizerAVXMT.h
55 lines (45 loc) · 2.15 KB
/
AABBoxMaskedRasterizerAVXMT.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//--------------------------------------------------------------------------------------
// Copyright 2015 Intel Corporation
// All Rights Reserved
//
// Permission is granted to use, copy, distribute and prepare derivative works of this
// software for any purpose and without fee, provided, that the above copyright notice
// and this statement appear in all copies. Intel makes no representations about the
// suitability of this software for any purpose. THIS SOFTWARE IS PROVIDED "AS IS."
// INTEL SPECIFICALLY DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, AND ALL LIABILITY,
// INCLUDING CONSEQUENTIAL AND OTHER INDIRECT DAMAGES, FOR THE USE OF THIS SOFTWARE,
// INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PROPRIETARY RIGHTS, AND INCLUDING THE
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Intel does not
// assume any responsibility for any errors which may appear in this software nor any
// responsibility to update it.
//
//--------------------------------------------------------------------------------------
#ifndef AABBOXMASKEDRASTERIZERAVXMT_H
#define AABBOXMASKEDRASTERIZERAVXMT_H
#include "AABBoxRasterizerAVX.h"
class MaskedOcclusionCulling;
class CullingThreadpool;
class DepthBufferMaskedRasterizerAVXMT;
class AABBoxMaskedRasterizerAVXMT : public AABBoxRasterizerAVX
{
public:
AABBoxMaskedRasterizerAVXMT(MaskedOcclusionCulling *moc, CullingThreadpool *ctp, DepthBufferMaskedRasterizerAVXMT *rasterizer);
~AABBoxMaskedRasterizerAVXMT();
struct PerTaskData
{
UINT idx;
AABBoxMaskedRasterizerAVXMT *pAABB;
};
PerTaskData mTaskData[2];
void TransformAABBoxAndDepthTest(CPUTCamera *pCamera, UINT idx);
void WaitForTaskToFinish(UINT idx);
void ReleaseTaskHandles(UINT idx);
private:
MaskedOcclusionCulling *mMaskedOcclusionCulling;
CullingThreadpool *mMOCThreadpool;
DepthBufferMaskedRasterizerAVXMT *mRasterizer;
private:
static void TransformAABBoxAndDepthTest( VOID* pTaskData, INT context, UINT taskId, UINT taskCount );
void TransformAABBoxAndDepthTest( UINT taskId, UINT taskCount, UINT idx );
};
#endif //AABBOXMASKEDRASTERIZERAVXMT_H