D3DDDI_RESOURCEFLAGS结构(d3dukmdt.h)
D3DDDI_RESOURCEFLAGS结构标识在调用驱动程序的 createResource 函数时要创建的资源类型。
语法
typedef struct _D3DDDI_RESOURCEFLAGS {
union {
struct {
UINT RenderTarget : 1;
UINT ZBuffer : 1;
UINT Dynamic : 1;
UINT HintStatic : 1;
UINT AutogenMipmap : 1;
UINT DMap : 1;
UINT WriteOnly : 1;
UINT NotLockable : 1;
UINT Points : 1;
UINT RtPatches : 1;
UINT NPatches : 1;
UINT SharedResource : 1;
UINT DiscardRenderTarget : 1;
UINT Video : 1;
UINT CaptureBuffer : 1;
UINT Primary : 1;
UINT Texture : 1;
UINT CubeMap : 1;
UINT Volume : 1;
UINT VertexBuffer : 1;
UINT IndexBuffer : 1;
UINT DecodeRenderTarget : 1;
UINT DecodeCompressedBuffer : 1;
UINT VideoProcessRenderTarget : 1;
UINT CpuOptimized : 1;
UINT MightDrawFromLocked : 1;
UINT Overlay : 1;
UINT MatchGdiPrimary : 1;
UINT InterlacedRefresh : 1;
UINT TextApi : 1;
UINT RestrictedContent : 1;
UINT RestrictSharedAccess : 1;
};
UINT Value;
};
} D3DDDI_RESOURCEFLAGS;
成员
RenderTarget
设置此成员等效于设置 32 位 值 成员的第一位(0x00000001)。
ZBuffer
一个 UINT 值,该值指定图面是否为 z 缓冲区。 z 缓冲区包含用于确定哪些像素可见和遮盖的位深度信息。 z 缓冲区包含无法显示的信息。
设置此成员等效于设置 32 位 值 成员的第二位(0x00000002)。
Dynamic
一个 UINT 值,该值指定是否频繁更新图面。 此位字段标志不能与 HintStatic 位字段标志一起使用。
设置此成员相当于设置 32 位 值 成员(0x00000004)的第三位。
HintStatic
一个 UINT 值,该值指定是否不经常更新图面,但仍必须允许访问。 此位字段标志不能与 动态 位字段标志一起使用。
设置此成员相当于设置 32 位 值 成员的第四位(0x00000008)。
AutogenMipmap
一个 UINT 值,该值指定是否自动生成图面的 MIP 映射子层。
设置此成员相当于设置 32 位 值 成员(0x00000010)的第五位。
DMap
一个 UINT 值,该值指定图面是否是排量贴图采样器可以在分割单元中采样的排量贴图纹理。
设置此成员相当于设置 32 位 值 成员的第六位(0x00000020)。
WriteOnly
一个 UINT 值,该值指定是否只能写入图面。 从表面读取访问权限可能会生成常规保护故障(GPF)。 如果从中读取图面,则读取结果没有意义。
设置此成员相当于设置 32 位 值 成员的第七位(0x00000040)。
NotLockable
一个 UINT 值,该值指定呈现器目标是否可锁定。 如果翻转链不可锁定,或者任何不可锁定的呈现目标,则此位字段标志在主缓冲区和后缓冲区上设置。 然后,驱动程序可以执行后台优化。
即使设置了此标志,图面仍可锁定,因此驱动程序必须处理这种情况。 但是,此类锁不频繁,预计不会很快。
驱动程序还可以通过存在此位字段标志来确定深度或模具缓冲区是否可锁定。
设置此成员相当于设置 32 位 值 成员(0x00000080)的第八位。
Points
一个 UINT 值,该值指定图面是否包含可用于呈现点和点子画面的顶点缓冲区数据。
设置此成员相当于设置 32 位 值 成员的第九位(0x00000100)。
RtPatches
一个 UINT 值,该值指定图面是否包含可用于呈现 rt 修补程序的顶点缓冲区数据。
设置此成员相当于设置 32 位 值 成员的第十位(0x00000200)。
NPatches
一个 UINT 值,该值指定图面是否包含可用于呈现 n 修补程序的顶点缓冲区数据。
设置此成员等效于设置 32 位 值 成员的第 11 位(0x00000400)。
SharedResource
一个 UINT 值,该值指定多个设备和进程是否共享图面。
设置此成员等效于设置 32 位 值 成员的第 12 位(0x00000800)。
DiscardRenderTarget
一个 UINT 值,该值指定是否需要保留图面。 如果图面用作呈现目标,则不需要其保留。
设置此成员相当于设置 32 位 Value 成员(0x00001000)的第 32 位。
Video
一个 UINT 值,该值指定图面是否是包含视频数据的呈现目标。
请注意,可以使用此标志创建多个呈现目标,如果其中两个或更多呈现目标属于同一Microsoft Direct3D 上下文,驱动程序确定这些呈现目标应全部显示相同的视频流,而不考虑呈现目标图面是否相互附加。
设置此成员相当于设置 32 位 值 成员(0x00002000)的第 14 位。
CaptureBuffer
一个 UINT 值,该值指定资源是否为捕获缓冲区。
设置此成员相当于设置 32 位 值 成员(0x00004000)的第 15 位。
Primary
一个 UINT 值,该值指定图面是否为主图面,即该图面当前是否对用户可见。
设置此成员相当于设置 32 位 值 成员(0x00008000)的第 16 位。
Texture
一个 UINT 值,该值指定是否可以将图面用作纹理。
设置此成员等效于设置 32 位 值 成员(0x00010000)的第 17 位。
CubeMap
一个 UINT 值,该值指定图面是否为立方环境地图。 此位字段标志要求设置 纹理 位字段标志。
设置此成员相当于设置 32 位 值 成员的第 18 位(0x00020000)。
Volume
一个 UINT 值,该值指定图面是否具有深度,以及宽度和高度(即图面是否为卷)。 此位字段标志要求设置 纹理 位字段标志。
设置此成员相当于设置 32 位 值 成员的第 19 位(0x00040000)。
VertexBuffer
一个 UINT 值,该值指定图面是否为顶点缓冲区(即存储顶点)。
设置此成员相当于设置 32 位 Value 成员(0x00080000)的第二十位。
IndexBuffer
一个 UINT 值,该值指定图面是否为索引缓冲区(即存储索引)。
设置此成员相当于设置 32 位 值 成员(0x00100000)的第二十一位。
DecodeRenderTarget
一个 UINT 值,该值指定是否将图面用作Microsoft DirectX 视频加速(DirectX VA)解码的呈现目标。
设置此成员等效于设置 32 位 Value 成员(0x00200000)的 22 位。
DecodeCompressedBuffer
一个 UINT 值,该值指定图面是否包含 DirectX VA 解码的压缩缓冲区信息。
设置此成员相当于设置 32 位 值 成员(0x00400000)的 23 位。
VideoProcessRenderTarget
一个 UINT 值,该值指定是否将图面用作 DirectX VA 视频处理的呈现目标。
设置此成员相当于设置 32 位 值 成员(0x00800000)的第 24 位。
CpuOptimized
一个 UINT 值,该值指定 CPU 是否经常访问资源。
驱动程序应将资源置于 CPU 可以快速访问的内存池中(例如 AGP 内存)。 显示微型端口驱动程序应在调用 DxgkDdiCreateAllocation 函数时,在 DXGK_ALLOCATIONINFO 结构的 标志 成员中设置 缓存 位字段标志来将内存标记为可缓存。
CpuOptimized 标志通常为呈现目标(独立呈现目标和纹理)设置。
设置此成员相当于设置 32 位 值 成员(0x01000000)的 25 位。
MightDrawFromLocked
一个 UINT 值,该值指定驱动程序是否可能请求从顶点缓冲区中绘制,即使顶点缓冲区被 Direct3D 运行时锁定。 此请求意味着驱动程序可以接听对其 DrawIndexedPrimitive、DrawIndexedPrimitive2、DrawPrimitive以及 DrawPrimitive2 函数,其中顶点数据在锁定的顶点缓冲区中被引用,该缓冲区使用 MightDrawFromLocked进行标记。 运行时必须在执行软件转换和照明(而不是硬件)的情况下进行这些类型的调用。 这些方案通常不会发生。
但是,由于运行时锁定顶点缓冲区,因此驱动程序在调用 pfnRenderCb 函数之前无法调用 pfnUnlockCb 函数。 因此,驱动程序必须支持系统或 AGP 内存段中的顶点缓冲区;否则,视频内存管理器将拒绝呈现。 驱动程序不需要执行任何其他特殊作,因为当硬件主动从顶点缓冲区呈现时,运行时不会覆盖锁定顶点缓冲区中的任何数据。
设置此成员相当于设置 32 位 值 成员(0x02000000)的 26 位。
Overlay
一个 UINT 值,该值指定资源是否为覆盖层。
设置此成员相当于设置 32 位 值 成员(0x04000000)的第 27 位。
MatchGdiPrimary
一个 UINT 值,该值指定资源是否是与使用 D3DKMDT_SHAREDPRIMARYSURFACEDATA 结构创建的当前 GDI 主图面的所有属性匹配的主图面。 例如,从匹配的主图面翻转到当前 GDI 主图面,反之亦然。
设置此成员相当于设置 32 位 值 成员(0x08000000)的 28 位。
InterlacedRefresh
一个 UINT 值,该值指定资源是否是要在交错显示模式下使用的主要图面。
设置此成员相当于设置 32 位 值 成员(0x10000000)的 29 位。
TextApi
一个 UINT 值,该值指定资源是可用于纹理筛选还是用作输入流源。 如果使用设置了 TextApi 位字段标志创建纹理,则它们不能用于纹理筛选。 如果使用 TextApi 位字段标志设置创建顶点缓冲区,则它们不能用作输入流源。 必须为调用 ComposeRects 函数时使用的顶点缓冲区和源图面指定 TextApi 位字段标志。
设置此成员相当于设置 32 位 值 成员(0x20000000)的第三十位。
RestrictedContent
在 Windows 7 及更高版本中受支持。
一个 UINT 值,该值指定资源是否包含受保护的内容。 在大多数情况下,在应用程序创建受限资源之前,应用程序已显式启用内容保护。 但是,如果应用程序创建受限的全屏独占模式交换链,则无需显式启用内容保护。
设置此成员相当于设置 32 位 值 成员(0x40000000)的第三十一位。
RestrictSharedAccess
在 Windows 7 及更高版本中受支持。
一个 UINT 值,该值指定运行时是否只允许特定进程访问共享资源。
设置此成员相当于设置 32 位 Value 成员 (0x80000000) 的 32 位位。
Value
一个 32 位值,用于标识要创建的资源的类型。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows Vista 和更高版本的 Windows作系统中可用。 |
标头 | d3dukmdt.h (包括 D3dumddi.h, D3dkmddi.h) |