• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2 * Copyright (C) 2014-2015 Intel Corporation.   All Rights Reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
13 * Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21 * IN THE SOFTWARE.
22 *
23 * @file tessellator.h
24 *
25 * @brief Tessellator fixed function unit interface definition
26 *
27 ******************************************************************************/
28 #pragma once
29 
30 /// Allocate and initialize a new tessellation context
31 HANDLE SWR_API TSInitCtx(
32     SWR_TS_DOMAIN tsDomain,                     ///< [IN] Tessellation domain (isoline, quad, triangle)
33     SWR_TS_PARTITIONING tsPartitioning,         ///< [IN] Tessellation partitioning algorithm
34     SWR_TS_OUTPUT_TOPOLOGY tsOutputTopology,    ///< [IN] Tessellation output topology
35     void* pContextMem,                          ///< [IN] Memory to use for the context
36     size_t& memSize);                           ///< [INOUT] In: Amount of memory in pContextMem. Out: Mem required
37 
38 /// Destroy & de-allocate tessellation context
39 void SWR_API TSDestroyCtx(
40     HANDLE tsCtx);  ///< [IN] Tessellation context to be destroyed
41 
42 struct SWR_TS_TESSELLATED_DATA
43 {
44     uint32_t NumPrimitives;
45     uint32_t NumDomainPoints;
46 
47     uint32_t* ppIndices[3];
48     float* pDomainPointsU;
49     float* pDomainPointsV;
50     // For Tri: pDomainPointsW[i] = 1.0f - pDomainPointsU[i] - pDomainPointsV[i]
51 };
52 
53 /// Perform Tessellation
54 void SWR_API TSTessellate(
55     HANDLE tsCtx,                                   ///< [IN] Tessellation Context
56     const SWR_TESSELLATION_FACTORS& tsTessFactors,  ///< [IN] Tessellation Factors
57     SWR_TS_TESSELLATED_DATA& tsTessellatedData);    ///< [OUT] Tessellated Data
58 
59 
60 
61 /// @TODO - Implement OSS tessellator
62 
TSInitCtx(SWR_TS_DOMAIN tsDomain,SWR_TS_PARTITIONING tsPartitioning,SWR_TS_OUTPUT_TOPOLOGY tsOutputTopology,void * pContextMem,size_t & memSize)63 INLINE HANDLE SWR_API TSInitCtx(
64     SWR_TS_DOMAIN tsDomain,
65     SWR_TS_PARTITIONING tsPartitioning,
66     SWR_TS_OUTPUT_TOPOLOGY tsOutputTopology,
67     void* pContextMem,
68     size_t& memSize)
69 {
70     SWR_NOT_IMPL;
71     return NULL;
72 }
73 
74 
TSDestroyCtx(HANDLE tsCtx)75 INLINE void SWR_API TSDestroyCtx(HANDLE tsCtx)
76 {
77     SWR_NOT_IMPL;
78 }
79 
80 
TSTessellate(HANDLE tsCtx,const SWR_TESSELLATION_FACTORS & tsTessFactors,SWR_TS_TESSELLATED_DATA & tsTessellatedData)81 INLINE void SWR_API TSTessellate(
82     HANDLE tsCtx,
83     const SWR_TESSELLATION_FACTORS& tsTessFactors,
84     SWR_TS_TESSELLATED_DATA& tsTessellatedData)
85 {
86     SWR_NOT_IMPL;
87 }
88 
89