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