1696Spaul/* $NetBSD: svga3d_dx.h,v 1.3 2021/12/18 23:45:45 riastradh Exp $ */ 2696Spaul 3696Spaul/* SPDX-License-Identifier: GPL-2.0 OR MIT */ 4696Spaul/********************************************************** 5696Spaul * Copyright 2012-2015 VMware, Inc. 6696Spaul * 7696Spaul * Permission is hereby granted, free of charge, to any person 8696Spaul * obtaining a copy of this software and associated documentation 9696Spaul * files (the "Software"), to deal in the Software without 10696Spaul * restriction, including without limitation the rights to use, copy, 11696Spaul * modify, merge, publish, distribute, sublicense, and/or sell copies 12696Spaul * of the Software, and to permit persons to whom the Software is 13696Spaul * furnished to do so, subject to the following conditions: 14696Spaul * 15696Spaul * The above copyright notice and this permission notice shall be 16696Spaul * included in all copies or substantial portions of the Software. 171153Sjkh * 18696Spaul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19696Spaul * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20696Spaul * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21696Spaul * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 22696Spaul * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 23696Spaul * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 24696Spaul * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 25696Spaul * SOFTWARE. 26696Spaul * 27696Spaul **********************************************************/ 28696Spaul 29696Spaul/* 30696Spaul * svga3d_dx.h -- 3195648Smarkm * 3295648Smarkm * SVGA 3d hardware definitions for DX10 support. 3369827Scharnier */ 34696Spaul 3595648Smarkm#ifndef _SVGA3D_DX_H_ 3676224Sobrien#define _SVGA3D_DX_H_ 3795648Smarkm 3895153Smike#define INCLUDE_ALLOW_MODULE 3995648Smarkm#define INCLUDE_ALLOW_USERLEVEL 40696Spaul#define INCLUDE_ALLOW_VMCORE 4190172Ssobomax#include "includeCheck.h" 421741Srich 43180236Sedwin#include "svga3d_limits.h" 441741Srich 451741Srich#define SVGA3D_INPUT_MIN 0 461741Srich#define SVGA3D_INPUT_PER_VERTEX_DATA 0 47181136Sjhb#define SVGA3D_INPUT_PER_INSTANCE_DATA 1 481741Srich#define SVGA3D_INPUT_MAX 2 49696Spaultypedef uint32 SVGA3dInputClassification; 5095648Smarkm 5118600Speter#define SVGA3D_RESOURCE_TYPE_MIN 1 52180646Sedwin#define SVGA3D_RESOURCE_BUFFER 1 53180877Sedwin#define SVGA3D_RESOURCE_TEXTURE1D 2 54180877Sedwin#define SVGA3D_RESOURCE_TEXTURE2D 3 55180877Sedwin#define SVGA3D_RESOURCE_TEXTURE3D 4 56180646Sedwin#define SVGA3D_RESOURCE_TEXTURECUBE 5 57180877Sedwin#define SVGA3D_RESOURCE_TYPE_DX10_MAX 6 58180877Sedwin#define SVGA3D_RESOURCE_BUFFEREX 6 59180646Sedwin#define SVGA3D_RESOURCE_TYPE_MAX 7 60180646Sedwintypedef uint32 SVGA3dResourceType; 61254018Smarkj 62254018Smarkj#define SVGA3D_COLOR_WRITE_ENABLE_RED (1 << 0) 63254018Smarkj#define SVGA3D_COLOR_WRITE_ENABLE_GREEN (1 << 1) 64254018Smarkj#define SVGA3D_COLOR_WRITE_ENABLE_BLUE (1 << 2) 65254018Smarkj#define SVGA3D_COLOR_WRITE_ENABLE_ALPHA (1 << 3) 66254018Smarkj#define SVGA3D_COLOR_WRITE_ENABLE_ALL (SVGA3D_COLOR_WRITE_ENABLE_RED | \ 67254018Smarkj SVGA3D_COLOR_WRITE_ENABLE_GREEN | \ 68254018Smarkj SVGA3D_COLOR_WRITE_ENABLE_BLUE | \ 69254018Smarkj SVGA3D_COLOR_WRITE_ENABLE_ALPHA) 70254018Smarkjtypedef uint8 SVGA3dColorWriteEnable; 71180235Sedwin 72180235Sedwin#define SVGA3D_DEPTH_WRITE_MASK_ZERO 0 73180235Sedwin#define SVGA3D_DEPTH_WRITE_MASK_ALL 1 74180234Sedwintypedef uint8 SVGA3dDepthWriteMask; 75180235Sedwin 76180235Sedwin#define SVGA3D_FILTER_MIP_LINEAR (1 << 0) 77180235Sedwin#define SVGA3D_FILTER_MAG_LINEAR (1 << 2) 78180646Sedwin#define SVGA3D_FILTER_MIN_LINEAR (1 << 4) 79180236Sedwin#define SVGA3D_FILTER_ANISOTROPIC (1 << 6) 80696Spaul#define SVGA3D_FILTER_COMPARE (1 << 7) 81181136Sjhbtypedef uint32 SVGA3dFilter; 82180235Sedwin 83181136Sjhb#define SVGA3D_CULL_INVALID 0 84181136Sjhb#define SVGA3D_CULL_MIN 1 85181136Sjhb#define SVGA3D_CULL_NONE 1 86300458Struckman#define SVGA3D_CULL_FRONT 2 87181136Sjhb#define SVGA3D_CULL_BACK 3 88181136Sjhb#define SVGA3D_CULL_MAX 4 89254018Smarkjtypedef uint8 SVGA3dCullMode; 90181136Sjhb 91181136Sjhb#define SVGA3D_COMPARISON_INVALID 0 92181136Sjhb#define SVGA3D_COMPARISON_MIN 1 93181136Sjhb#define SVGA3D_COMPARISON_NEVER 1 94181136Sjhb#define SVGA3D_COMPARISON_LESS 2 95181136Sjhb#define SVGA3D_COMPARISON_EQUAL 3 96181136Sjhb#define SVGA3D_COMPARISON_LESS_EQUAL 4 97181161Sjhb#define SVGA3D_COMPARISON_GREATER 5 98181136Sjhb#define SVGA3D_COMPARISON_NOT_EQUAL 6 99181136Sjhb#define SVGA3D_COMPARISON_GREATER_EQUAL 7 100181136Sjhb#define SVGA3D_COMPARISON_ALWAYS 8 101181161Sjhb#define SVGA3D_COMPARISON_MAX 9 102181136Sjhbtypedef uint8 SVGA3dComparisonFunc; 103181136Sjhb 104181136Sjhb/* 105181136Sjhb * SVGA3D_MULTISAMPLE_RAST_DISABLE disables MSAA for all primitives. 106181136Sjhb * SVGA3D_MULTISAMPLE_RAST_DISABLE_LINE, which is supported in SM41, 107181136Sjhb * disables MSAA for lines only. 108181136Sjhb */ 109181136Sjhb#define SVGA3D_MULTISAMPLE_RAST_DISABLE 0 110181136Sjhb#define SVGA3D_MULTISAMPLE_RAST_ENABLE 1 111181136Sjhb#define SVGA3D_MULTISAMPLE_RAST_DX_MAX 1 112181136Sjhb#define SVGA3D_MULTISAMPLE_RAST_DISABLE_LINE 2 113181136Sjhb#define SVGA3D_MULTISAMPLE_RAST_MAX 2 114181136Sjhbtypedef uint8 SVGA3dMultisampleRastEnable; 115181161Sjhb 116181136Sjhb#define SVGA3D_DX_MAX_VERTEXBUFFERS 32 117181136Sjhb#define SVGA3D_DX_MAX_VERTEXINPUTREGISTERS 16 118181161Sjhb#define SVGA3D_DX_SM41_MAX_VERTEXINPUTREGISTERS 32 119181136Sjhb#define SVGA3D_DX_MAX_SOTARGETS 4 120181161Sjhb#define SVGA3D_DX_MAX_SRVIEWS 128 121181136Sjhb#define SVGA3D_DX_MAX_CONSTBUFFERS 16 122181161Sjhb#define SVGA3D_DX_MAX_SAMPLERS 16 123181136Sjhb 124181136Sjhb#define SVGA3D_DX_MAX_CONSTBUF_BINDING_SIZE (4096 * 4 * (uint32)sizeof(uint32)) 125181136Sjhb 126181136Sjhbtypedef uint32 SVGA3dShaderResourceViewId; 127181136Sjhbtypedef uint32 SVGA3dRenderTargetViewId; 128254018Smarkjtypedef uint32 SVGA3dDepthStencilViewId; 129181136Sjhb 130181136Sjhbtypedef uint32 SVGA3dShaderId; 131180236Sedwintypedef uint32 SVGA3dElementLayoutId; 132180235Sedwintypedef uint32 SVGA3dSamplerId; 133696Spaultypedef uint32 SVGA3dBlendStateId; 13495648Smarkmtypedef uint32 SVGA3dDepthStencilStateId; 135696Spaultypedef uint32 SVGA3dRasterizerStateId; 136180234Sedwintypedef uint32 SVGA3dQueryId; 137180234Sedwintypedef uint32 SVGA3dStreamOutputId; 138696Spaul 13990755Sobrientypedef union { 140180234Sedwin struct { 14190755Sobrien float r; 142180234Sedwin float g; 143696Spaul float b; 14490755Sobrien float a; 14590755Sobrien }; 14690755Sobrien 14718598Speter float value[4]; 148180234Sedwin} SVGA3dRGBAFloat; 149180234Sedwin 15069827Scharniertypedef 15118598Speter#include "vmware_pack_begin.h" 15218598Speterstruct { 15318598Speter uint32 cid; 15418598Speter SVGAMobId mobid; 155180234Sedwin} 156180234Sedwin#include "vmware_pack_end.h" 157180234SedwinSVGAOTableDXContextEntry; 158696Spaul 159696Spaultypedef 160180234Sedwin#include "vmware_pack_begin.h" 161696Spaulstruct SVGA3dCmdDXDefineContext { 162696Spaul uint32 cid; 163696Spaul} 164696Spaul#include "vmware_pack_end.h" 165696SpaulSVGA3dCmdDXDefineContext; /* SVGA_3D_CMD_DX_DEFINE_CONTEXT */ 166180234Sedwin 16718600Spetertypedef 16818600Speter#include "vmware_pack_begin.h" 169696Spaulstruct SVGA3dCmdDXDestroyContext { 170696Spaul uint32 cid; 171180234Sedwin} 172696Spaul#include "vmware_pack_end.h" 173696SpaulSVGA3dCmdDXDestroyContext; /* SVGA_3D_CMD_DX_DESTROY_CONTEXT */ 17439354Sdfr 17518600Speter/* 17618600Speter * Bind a DX context. 17718600Speter * 17818600Speter * validContents should be set to 0 for new contexts, 17918600Speter * and 1 if this is an old context which is getting paged 18039354Sdfr * back on to the device. 18118600Speter * 1821741Srich * For new contexts, it is recommended that the driver 183180234Sedwin * issue commands to initialize all interesting state 184180235Sedwin * prior to rendering. 185696Spaul */ 186696Spaultypedef 1871741Srich#include "vmware_pack_begin.h" 188696Spaulstruct SVGA3dCmdDXBindContext { 189696Spaul uint32 cid; 190696Spaul SVGAMobId mobid; 191180235Sedwin uint32 validContents; 192180235Sedwin} 193180235Sedwin#include "vmware_pack_end.h" 194696SpaulSVGA3dCmdDXBindContext; /* SVGA_3D_CMD_DX_BIND_CONTEXT */ 195696Spaul 196696Spaul/* 19735575Sdfr * Readback a DX context. 198180236Sedwin * (Request that the device flush the contents back into guest memory.) 199180236Sedwin */ 200180236Sedwintypedef 201180236Sedwin#include "vmware_pack_begin.h" 202180646Sedwinstruct SVGA3dCmdDXReadbackContext { 203180236Sedwin uint32 cid; 204181136Sjhb} 205181136Sjhb#include "vmware_pack_end.h" 206180236SedwinSVGA3dCmdDXReadbackContext; /* SVGA_3D_CMD_DX_READBACK_CONTEXT */ 207180236Sedwin 208180236Sedwin/* 209180236Sedwin * Invalidate a guest-backed context. 210180236Sedwin */ 211180236Sedwintypedef 212180236Sedwin#include "vmware_pack_begin.h" 213180236Sedwinstruct SVGA3dCmdDXInvalidateContext { 214180236Sedwin uint32 cid; 215180236Sedwin} 216180235Sedwin#include "vmware_pack_end.h" 217254018SmarkjSVGA3dCmdDXInvalidateContext; /* SVGA_3D_CMD_DX_INVALIDATE_CONTEXT */ 218180235Sedwin 219254018Smarkjtypedef 220180235Sedwin#include "vmware_pack_begin.h" 221254018Smarkjstruct SVGA3dCmdDXSetSingleConstantBuffer { 22235575Sdfr uint32 slot; 223254018Smarkj SVGA3dShaderType type; 224180234Sedwin SVGA3dSurfaceId sid; 225254018Smarkj uint32 offsetInBytes; 22690755Sobrien uint32 sizeInBytes; 22718598Speter} 22818598Speter#include "vmware_pack_end.h" 2291153SjkhSVGA3dCmdDXSetSingleConstantBuffer; 230696Spaul/* SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER */ 231696Spaul 232696Spaultypedef 2331741Srich#include "vmware_pack_begin.h" 234696Spaulstruct SVGA3dCmdDXSetShaderResources { 235696Spaul uint32 startView; 236181161Sjhb SVGA3dShaderType type; 2371741Srich 2381741Srich /* 2391741Srich * Followed by a variable number of SVGA3dShaderResourceViewId's. 240180234Sedwin */ 241180234Sedwin} 242696Spaul#include "vmware_pack_end.h" 243181161SjhbSVGA3dCmdDXSetShaderResources; /* SVGA_3D_CMD_DX_SET_SHADER_RESOURCES */ 244181161Sjhb 245180234Sedwintypedef 246180234Sedwin#include "vmware_pack_begin.h" 247696Spaulstruct SVGA3dCmdDXSetShader { 248696Spaul SVGA3dShaderId shaderId; 249696Spaul SVGA3dShaderType type; 250696Spaul} 251105439Ssobomax#include "vmware_pack_end.h" 25290172SsobomaxSVGA3dCmdDXSetShader; /* SVGA_3D_CMD_DX_SET_SHADER */ 25390172Ssobomax 254105439Ssobomaxtypedef 255105439Ssobomax#include "vmware_pack_begin.h" 256105439Ssobomaxstruct SVGA3dCmdDXSetSamplers { 25790172Ssobomax uint32 startSampler; 258696Spaul SVGA3dShaderType type; 259696Spaul 260696Spaul /* 261696Spaul * Followed by a variable number of SVGA3dSamplerId's. 262696Spaul */ 263696Spaul} 264180235Sedwin#include "vmware_pack_end.h" 265180235SedwinSVGA3dCmdDXSetSamplers; /* SVGA_3D_CMD_DX_SET_SAMPLERS */ 266180235Sedwin 267180235Sedwintypedef 268180235Sedwin#include "vmware_pack_begin.h" 269180235Sedwinstruct SVGA3dCmdDXDraw { 270180235Sedwin uint32 vertexCount; 271180235Sedwin uint32 startVertexLocation; 272180235Sedwin} 273180235Sedwin#include "vmware_pack_end.h" 274180235SedwinSVGA3dCmdDXDraw; /* SVGA_3D_CMD_DX_DRAW */ 275180235Sedwin 276180235Sedwintypedef 277180235Sedwin#include "vmware_pack_begin.h" 278180646Sedwinstruct SVGA3dCmdDXDrawIndexed { 279180236Sedwin uint32 indexCount; 280180646Sedwin uint32 startIndexLocation; 281180235Sedwin int32 baseVertexLocation; 282180235Sedwin} 283180235Sedwin#include "vmware_pack_end.h" 284180235SedwinSVGA3dCmdDXDrawIndexed; /* SVGA_3D_CMD_DX_DRAW_INDEXED */ 285180235Sedwin 286180235Sedwintypedef 287180235Sedwin#include "vmware_pack_begin.h" 288180235Sedwinstruct SVGA3dCmdDXDrawInstanced { 289180235Sedwin uint32 vertexCountPerInstance; 290180235Sedwin uint32 instanceCount; 291180235Sedwin uint32 startVertexLocation; 292180235Sedwin uint32 startInstanceLocation; 293180235Sedwin} 294180235Sedwin#include "vmware_pack_end.h" 295180235SedwinSVGA3dCmdDXDrawInstanced; /* SVGA_3D_CMD_DX_DRAW_INSTANCED */ 296180235Sedwin 297180235Sedwintypedef 298180235Sedwin#include "vmware_pack_begin.h" 299180235Sedwinstruct SVGA3dCmdDXDrawIndexedInstanced { 300180235Sedwin uint32 indexCountPerInstance; 301180235Sedwin uint32 instanceCount; 302180235Sedwin uint32 startIndexLocation; 303180235Sedwin int32 baseVertexLocation; 304180235Sedwin uint32 startInstanceLocation; 305180235Sedwin} 306180235Sedwin#include "vmware_pack_end.h" 307180646SedwinSVGA3dCmdDXDrawIndexedInstanced; /* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED */ 308180236Sedwin 309180236Sedwintypedef 310180236Sedwin#include "vmware_pack_begin.h" 311180236Sedwinstruct SVGA3dCmdDXDrawAuto { 312180236Sedwin uint32 pad0; 313180236Sedwin} 314180236Sedwin#include "vmware_pack_end.h" 315180236SedwinSVGA3dCmdDXDrawAuto; /* SVGA_3D_CMD_DX_DRAW_AUTO */ 316180236Sedwin 317180236Sedwintypedef 318180236Sedwin#include "vmware_pack_begin.h" 319180236Sedwinstruct SVGA3dCmdDXSetInputLayout { 320180236Sedwin SVGA3dElementLayoutId elementLayoutId; 321180236Sedwin} 322180236Sedwin#include "vmware_pack_end.h" 323180236SedwinSVGA3dCmdDXSetInputLayout; /* SVGA_3D_CMD_DX_SET_INPUT_LAYOUT */ 324180236Sedwin 325180236Sedwintypedef 326180236Sedwin#include "vmware_pack_begin.h" 327180236Sedwinstruct SVGA3dVertexBuffer { 328180236Sedwin SVGA3dSurfaceId sid; 329180236Sedwin uint32 stride; 330180236Sedwin uint32 offset; 331180236Sedwin} 332180236Sedwin#include "vmware_pack_end.h" 333180236SedwinSVGA3dVertexBuffer; 334180236Sedwin 335180236Sedwintypedef 336180236Sedwin#include "vmware_pack_begin.h" 337180236Sedwinstruct SVGA3dCmdDXSetVertexBuffers { 338215705Sbrucec uint32 startBuffer; 339180236Sedwin /* Followed by a variable number of SVGA3dVertexBuffer's. */ 340180236Sedwin} 341180236Sedwin#include "vmware_pack_end.h" 342180236SedwinSVGA3dCmdDXSetVertexBuffers; /* SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS */ 343180236Sedwin 344180236Sedwintypedef 345180236Sedwin#include "vmware_pack_begin.h" 346180236Sedwinstruct SVGA3dCmdDXSetIndexBuffer { 347180236Sedwin SVGA3dSurfaceId sid; 348180236Sedwin SVGA3dSurfaceFormat format; 349180236Sedwin uint32 offset; 350180235Sedwin} 351180235Sedwin#include "vmware_pack_end.h" 352180235SedwinSVGA3dCmdDXSetIndexBuffer; /* SVGA_3D_CMD_DX_SET_INDEX_BUFFER */ 353180235Sedwin 354180235Sedwintypedef 355180235Sedwin#include "vmware_pack_begin.h" 356180235Sedwinstruct SVGA3dCmdDXSetTopology { 357180235Sedwin SVGA3dPrimitiveType topology; 358180235Sedwin} 359180235Sedwin#include "vmware_pack_end.h" 360180235SedwinSVGA3dCmdDXSetTopology; /* SVGA_3D_CMD_DX_SET_TOPOLOGY */ 361180235Sedwin 362180235Sedwintypedef 363180235Sedwin#include "vmware_pack_begin.h" 364180235Sedwinstruct SVGA3dCmdDXSetRenderTargets { 365180235Sedwin SVGA3dDepthStencilViewId depthStencilViewId; 366180235Sedwin /* Followed by a variable number of SVGA3dRenderTargetViewId's. */ 367180235Sedwin} 368180235Sedwin#include "vmware_pack_end.h" 369180235SedwinSVGA3dCmdDXSetRenderTargets; /* SVGA_3D_CMD_DX_SET_RENDERTARGETS */ 370180235Sedwin 371180235Sedwintypedef 372180235Sedwin#include "vmware_pack_begin.h" 373180235Sedwinstruct SVGA3dCmdDXSetBlendState { 374180235Sedwin SVGA3dBlendStateId blendId; 375180235Sedwin float blendFactor[4]; 376180235Sedwin uint32 sampleMask; 377180235Sedwin} 378180235Sedwin#include "vmware_pack_end.h" 379180235SedwinSVGA3dCmdDXSetBlendState; /* SVGA_3D_CMD_DX_SET_BLEND_STATE */ 380291268Sjkim 381291268Sjkimtypedef 382180235Sedwin#include "vmware_pack_begin.h" 383180235Sedwinstruct SVGA3dCmdDXSetDepthStencilState { 384291268Sjkim SVGA3dDepthStencilStateId depthStencilId; 385291268Sjkim uint32 stencilRef; 386291268Sjkim} 387291268Sjkim#include "vmware_pack_end.h" 388291268SjkimSVGA3dCmdDXSetDepthStencilState; /* SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE */ 389291268Sjkim 390291268Sjkimtypedef 391291268Sjkim#include "vmware_pack_begin.h" 392291268Sjkimstruct SVGA3dCmdDXSetRasterizerState { 393180235Sedwin SVGA3dRasterizerStateId rasterizerId; 394180235Sedwin} 395180235Sedwin#include "vmware_pack_end.h" 396180235SedwinSVGA3dCmdDXSetRasterizerState; /* SVGA_3D_CMD_DX_SET_RASTERIZER_STATE */ 397180235Sedwin 398180235Sedwin#define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0) 399180235Sedwintypedef uint32 SVGA3dDXQueryFlags; 400180235Sedwin 401180235Sedwin/* 402180235Sedwin * The SVGADXQueryDeviceState and SVGADXQueryDeviceBits are used by the device 403180235Sedwin * to track query state transitions, but are not intended to be used by the 404 * driver. 405 */ 406#define SVGADX_QDSTATE_INVALID ((uint8)-1) /* Query has no state */ 407#define SVGADX_QDSTATE_MIN 0 408#define SVGADX_QDSTATE_IDLE 0 /* Query hasn't started yet */ 409#define SVGADX_QDSTATE_ACTIVE 1 /* Query is actively gathering data */ 410#define SVGADX_QDSTATE_PENDING 2 /* Query is waiting for results */ 411#define SVGADX_QDSTATE_FINISHED 3 /* Query has completed */ 412#define SVGADX_QDSTATE_MAX 4 413typedef uint8 SVGADXQueryDeviceState; 414 415typedef 416#include "vmware_pack_begin.h" 417struct { 418 SVGA3dQueryTypeUint8 type; 419 uint16 pad0; 420 SVGADXQueryDeviceState state; 421 SVGA3dDXQueryFlags flags; 422 SVGAMobId mobid; 423 uint32 offset; 424} 425#include "vmware_pack_end.h" 426SVGACOTableDXQueryEntry; 427 428typedef 429#include "vmware_pack_begin.h" 430struct SVGA3dCmdDXDefineQuery { 431 SVGA3dQueryId queryId; 432 SVGA3dQueryType type; 433 SVGA3dDXQueryFlags flags; 434} 435#include "vmware_pack_end.h" 436SVGA3dCmdDXDefineQuery; /* SVGA_3D_CMD_DX_DEFINE_QUERY */ 437 438typedef 439#include "vmware_pack_begin.h" 440struct SVGA3dCmdDXDestroyQuery { 441 SVGA3dQueryId queryId; 442} 443#include "vmware_pack_end.h" 444SVGA3dCmdDXDestroyQuery; /* SVGA_3D_CMD_DX_DESTROY_QUERY */ 445 446typedef 447#include "vmware_pack_begin.h" 448struct SVGA3dCmdDXBindQuery { 449 SVGA3dQueryId queryId; 450 SVGAMobId mobid; 451} 452#include "vmware_pack_end.h" 453SVGA3dCmdDXBindQuery; /* SVGA_3D_CMD_DX_BIND_QUERY */ 454 455typedef 456#include "vmware_pack_begin.h" 457struct SVGA3dCmdDXSetQueryOffset { 458 SVGA3dQueryId queryId; 459 uint32 mobOffset; 460} 461#include "vmware_pack_end.h" 462SVGA3dCmdDXSetQueryOffset; /* SVGA_3D_CMD_DX_SET_QUERY_OFFSET */ 463 464typedef 465#include "vmware_pack_begin.h" 466struct SVGA3dCmdDXBeginQuery { 467 SVGA3dQueryId queryId; 468} 469#include "vmware_pack_end.h" 470SVGA3dCmdDXBeginQuery; /* SVGA_3D_CMD_DX_QUERY_BEGIN */ 471 472typedef 473#include "vmware_pack_begin.h" 474struct SVGA3dCmdDXEndQuery { 475 SVGA3dQueryId queryId; 476} 477#include "vmware_pack_end.h" 478SVGA3dCmdDXEndQuery; /* SVGA_3D_CMD_DX_QUERY_END */ 479 480typedef 481#include "vmware_pack_begin.h" 482struct SVGA3dCmdDXReadbackQuery { 483 SVGA3dQueryId queryId; 484} 485#include "vmware_pack_end.h" 486SVGA3dCmdDXReadbackQuery; /* SVGA_3D_CMD_DX_READBACK_QUERY */ 487 488typedef 489#include "vmware_pack_begin.h" 490struct SVGA3dCmdDXMoveQuery { 491 SVGA3dQueryId queryId; 492 SVGAMobId mobid; 493 uint32 mobOffset; 494} 495#include "vmware_pack_end.h" 496SVGA3dCmdDXMoveQuery; /* SVGA_3D_CMD_DX_MOVE_QUERY */ 497 498typedef 499#include "vmware_pack_begin.h" 500struct SVGA3dCmdDXBindAllQuery { 501 uint32 cid; 502 SVGAMobId mobid; 503} 504#include "vmware_pack_end.h" 505SVGA3dCmdDXBindAllQuery; /* SVGA_3D_CMD_DX_BIND_ALL_QUERY */ 506 507typedef 508#include "vmware_pack_begin.h" 509struct SVGA3dCmdDXReadbackAllQuery { 510 uint32 cid; 511} 512#include "vmware_pack_end.h" 513SVGA3dCmdDXReadbackAllQuery; /* SVGA_3D_CMD_DX_READBACK_ALL_QUERY */ 514 515typedef 516#include "vmware_pack_begin.h" 517struct SVGA3dCmdDXSetPredication { 518 SVGA3dQueryId queryId; 519 uint32 predicateValue; 520} 521#include "vmware_pack_end.h" 522SVGA3dCmdDXSetPredication; /* SVGA_3D_CMD_DX_SET_PREDICATION */ 523 524typedef 525#include "vmware_pack_begin.h" 526struct MKS3dDXSOState { 527 uint32 offset; /* Starting offset */ 528 uint32 intOffset; /* Internal offset */ 529 uint32 vertexCount; /* vertices written */ 530 uint32 sizeInBytes; /* max bytes to write */ 531} 532#include "vmware_pack_end.h" 533SVGA3dDXSOState; 534 535/* Set the offset field to this value to append SO values to the buffer */ 536#define SVGA3D_DX_SO_OFFSET_APPEND ((uint32) ~0u) 537 538typedef 539#include "vmware_pack_begin.h" 540struct SVGA3dSoTarget { 541 SVGA3dSurfaceId sid; 542 uint32 offset; 543 uint32 sizeInBytes; 544} 545#include "vmware_pack_end.h" 546SVGA3dSoTarget; 547 548typedef 549#include "vmware_pack_begin.h" 550struct SVGA3dCmdDXSetSOTargets { 551 uint32 pad0; 552 /* Followed by a variable number of SVGA3dSOTarget's. */ 553} 554#include "vmware_pack_end.h" 555SVGA3dCmdDXSetSOTargets; /* SVGA_3D_CMD_DX_SET_SOTARGETS */ 556 557typedef 558#include "vmware_pack_begin.h" 559struct SVGA3dViewport 560{ 561 float x; 562 float y; 563 float width; 564 float height; 565 float minDepth; 566 float maxDepth; 567} 568#include "vmware_pack_end.h" 569SVGA3dViewport; 570 571typedef 572#include "vmware_pack_begin.h" 573struct SVGA3dCmdDXSetViewports { 574 uint32 pad0; 575 /* Followed by a variable number of SVGA3dViewport's. */ 576} 577#include "vmware_pack_end.h" 578SVGA3dCmdDXSetViewports; /* SVGA_3D_CMD_DX_SET_VIEWPORTS */ 579 580#define SVGA3D_DX_MAX_VIEWPORTS 16 581 582typedef 583#include "vmware_pack_begin.h" 584struct SVGA3dCmdDXSetScissorRects { 585 uint32 pad0; 586 /* Followed by a variable number of SVGASignedRect's. */ 587} 588#include "vmware_pack_end.h" 589SVGA3dCmdDXSetScissorRects; /* SVGA_3D_CMD_DX_SET_SCISSORRECTS */ 590 591#define SVGA3D_DX_MAX_SCISSORRECTS 16 592 593typedef 594#include "vmware_pack_begin.h" 595struct SVGA3dCmdDXClearRenderTargetView { 596 SVGA3dRenderTargetViewId renderTargetViewId; 597 SVGA3dRGBAFloat rgba; 598} 599#include "vmware_pack_end.h" 600SVGA3dCmdDXClearRenderTargetView; /* SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW */ 601 602typedef 603#include "vmware_pack_begin.h" 604struct SVGA3dCmdDXClearDepthStencilView { 605 uint16 flags; 606 uint16 stencil; 607 SVGA3dDepthStencilViewId depthStencilViewId; 608 float depth; 609} 610#include "vmware_pack_end.h" 611SVGA3dCmdDXClearDepthStencilView; /* SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW */ 612 613typedef 614#include "vmware_pack_begin.h" 615struct SVGA3dCmdDXPredCopyRegion { 616 SVGA3dSurfaceId dstSid; 617 uint32 dstSubResource; 618 SVGA3dSurfaceId srcSid; 619 uint32 srcSubResource; 620 SVGA3dCopyBox box; 621} 622#include "vmware_pack_end.h" 623SVGA3dCmdDXPredCopyRegion; 624/* SVGA_3D_CMD_DX_PRED_COPY_REGION */ 625 626typedef 627#include "vmware_pack_begin.h" 628struct SVGA3dCmdDXPredCopy { 629 SVGA3dSurfaceId dstSid; 630 SVGA3dSurfaceId srcSid; 631} 632#include "vmware_pack_end.h" 633SVGA3dCmdDXPredCopy; /* SVGA_3D_CMD_DX_PRED_COPY */ 634 635typedef 636#include "vmware_pack_begin.h" 637struct SVGA3dCmdDXPredConvertRegion { 638 SVGA3dSurfaceId dstSid; 639 uint32 dstSubResource; 640 SVGA3dBox destBox; 641 SVGA3dSurfaceId srcSid; 642 uint32 srcSubResource; 643 SVGA3dBox srcBox; 644} 645#include "vmware_pack_end.h" 646SVGA3dCmdDXPredConvertRegion; /* SVGA_3D_CMD_DX_PRED_CONVERT_REGION */ 647 648typedef 649#include "vmware_pack_begin.h" 650struct SVGA3dCmdDXPredConvert { 651 SVGA3dSurfaceId dstSid; 652 SVGA3dSurfaceId srcSid; 653} 654#include "vmware_pack_end.h" 655SVGA3dCmdDXPredConvert; /* SVGA_3D_CMD_DX_PRED_CONVERT */ 656 657typedef 658#include "vmware_pack_begin.h" 659struct SVGA3dCmdDXBufferCopy { 660 SVGA3dSurfaceId dest; 661 SVGA3dSurfaceId src; 662 uint32 destX; 663 uint32 srcX; 664 uint32 width; 665} 666#include "vmware_pack_end.h" 667SVGA3dCmdDXBufferCopy; 668/* SVGA_3D_CMD_DX_BUFFER_COPY */ 669 670/* 671 * Perform a surface copy between a multisample, and a non-multisampled 672 * surface. 673 */ 674typedef 675#include "vmware_pack_begin.h" 676struct { 677 SVGA3dSurfaceId dstSid; 678 uint32 dstSubResource; 679 SVGA3dSurfaceId srcSid; 680 uint32 srcSubResource; 681 SVGA3dSurfaceFormat copyFormat; 682} 683#include "vmware_pack_end.h" 684SVGA3dCmdDXResolveCopy; /* SVGA_3D_CMD_DX_RESOLVE_COPY */ 685 686/* 687 * Perform a predicated surface copy between a multisample, and a 688 * non-multisampled surface. 689 */ 690typedef 691#include "vmware_pack_begin.h" 692struct { 693 SVGA3dSurfaceId dstSid; 694 uint32 dstSubResource; 695 SVGA3dSurfaceId srcSid; 696 uint32 srcSubResource; 697 SVGA3dSurfaceFormat copyFormat; 698} 699#include "vmware_pack_end.h" 700SVGA3dCmdDXPredResolveCopy; /* SVGA_3D_CMD_DX_PRED_RESOLVE_COPY */ 701 702typedef uint32 SVGA3dDXPresentBltMode; 703#define SVGADX_PRESENTBLT_LINEAR (1 << 0) 704#define SVGADX_PRESENTBLT_FORCE_SRC_SRGB (1 << 1) 705#define SVGADX_PRESENTBLT_FORCE_SRC_XRBIAS (1 << 2) 706#define SVGADX_PRESENTBLT_MODE_MAX (1 << 3) 707 708typedef 709#include "vmware_pack_begin.h" 710struct SVGA3dCmdDXPresentBlt { 711 SVGA3dSurfaceId srcSid; 712 uint32 srcSubResource; 713 SVGA3dSurfaceId dstSid; 714 uint32 destSubResource; 715 SVGA3dBox boxSrc; 716 SVGA3dBox boxDest; 717 SVGA3dDXPresentBltMode mode; 718} 719#include "vmware_pack_end.h" 720SVGA3dCmdDXPresentBlt; /* SVGA_3D_CMD_DX_PRESENTBLT*/ 721 722typedef 723#include "vmware_pack_begin.h" 724struct SVGA3dCmdDXGenMips { 725 SVGA3dShaderResourceViewId shaderResourceViewId; 726} 727#include "vmware_pack_end.h" 728SVGA3dCmdDXGenMips; /* SVGA_3D_CMD_DX_GENMIPS */ 729 730/* 731 * Update a sub-resource in a guest-backed resource. 732 * (Inform the device that the guest-contents have been updated.) 733 */ 734typedef 735#include "vmware_pack_begin.h" 736struct SVGA3dCmdDXUpdateSubResource { 737 SVGA3dSurfaceId sid; 738 uint32 subResource; 739 SVGA3dBox box; 740} 741#include "vmware_pack_end.h" 742SVGA3dCmdDXUpdateSubResource; /* SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE */ 743 744/* 745 * Readback a subresource in a guest-backed resource. 746 * (Request the device to flush the dirty contents into the guest.) 747 */ 748typedef 749#include "vmware_pack_begin.h" 750struct SVGA3dCmdDXReadbackSubResource { 751 SVGA3dSurfaceId sid; 752 uint32 subResource; 753} 754#include "vmware_pack_end.h" 755SVGA3dCmdDXReadbackSubResource; /* SVGA_3D_CMD_DX_READBACK_SUBRESOURCE */ 756 757/* 758 * Invalidate an image in a guest-backed surface. 759 * (Notify the device that the contents can be lost.) 760 */ 761typedef 762#include "vmware_pack_begin.h" 763struct SVGA3dCmdDXInvalidateSubResource { 764 SVGA3dSurfaceId sid; 765 uint32 subResource; 766} 767#include "vmware_pack_end.h" 768SVGA3dCmdDXInvalidateSubResource; /* SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE */ 769 770 771/* 772 * Raw byte wise transfer from a buffer surface into another surface 773 * of the requested box. Supported if 3d is enabled and SVGA_CAP_DX 774 * is set. This command does not take a context. 775 */ 776typedef 777#include "vmware_pack_begin.h" 778struct SVGA3dCmdDXTransferFromBuffer { 779 SVGA3dSurfaceId srcSid; 780 uint32 srcOffset; 781 uint32 srcPitch; 782 uint32 srcSlicePitch; 783 SVGA3dSurfaceId destSid; 784 uint32 destSubResource; 785 SVGA3dBox destBox; 786} 787#include "vmware_pack_end.h" 788SVGA3dCmdDXTransferFromBuffer; /* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER */ 789 790 791/* 792 * Raw byte wise transfer from a buffer surface into another surface 793 * of the requested box. Supported if SVGA3D_DEVCAP_DXCONTEXT is set. 794 * The context is implied from the command buffer header. 795 */ 796typedef 797#include "vmware_pack_begin.h" 798struct SVGA3dCmdDXPredTransferFromBuffer { 799 SVGA3dSurfaceId srcSid; 800 uint32 srcOffset; 801 uint32 srcPitch; 802 uint32 srcSlicePitch; 803 SVGA3dSurfaceId destSid; 804 uint32 destSubResource; 805 SVGA3dBox destBox; 806} 807#include "vmware_pack_end.h" 808SVGA3dCmdDXPredTransferFromBuffer; 809/* SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER */ 810 811 812typedef 813#include "vmware_pack_begin.h" 814struct SVGA3dCmdDXSurfaceCopyAndReadback { 815 SVGA3dSurfaceId srcSid; 816 SVGA3dSurfaceId destSid; 817 SVGA3dCopyBox box; 818} 819#include "vmware_pack_end.h" 820SVGA3dCmdDXSurfaceCopyAndReadback; 821/* SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK */ 822 823/* 824 * SVGA_DX_HINT_NONE: Does nothing. 825 * 826 * SVGA_DX_HINT_PREFETCH_OBJECT: 827 * SVGA_DX_HINT_PREEVICT_OBJECT: 828 * Consumes a SVGAObjectRef, and hints that the host should consider 829 * fetching/evicting the specified object. 830 * 831 * An id of SVGA3D_INVALID_ID can be used if the guest isn't sure 832 * what object was affected. (For instance, if the guest knows that 833 * it is about to evict a DXShader, but doesn't know precisely which one, 834 * the device can still use this to help limit it's search, or track 835 * how many page-outs have happened.) 836 * 837 * SVGA_DX_HINT_PREFETCH_COBJECT: 838 * SVGA_DX_HINT_PREEVICT_COBJECT: 839 * Same as the above, except they consume an SVGACObjectRef. 840 */ 841typedef uint32 SVGADXHintId; 842#define SVGA_DX_HINT_NONE 0 843#define SVGA_DX_HINT_PREFETCH_OBJECT 1 844#define SVGA_DX_HINT_PREEVICT_OBJECT 2 845#define SVGA_DX_HINT_PREFETCH_COBJECT 3 846#define SVGA_DX_HINT_PREEVICT_COBJECT 4 847#define SVGA_DX_HINT_MAX 5 848 849typedef 850#include "vmware_pack_begin.h" 851struct SVGAObjectRef { 852 SVGAOTableType type; 853 uint32 id; 854} 855#include "vmware_pack_end.h" 856SVGAObjectRef; 857 858typedef 859#include "vmware_pack_begin.h" 860struct SVGACObjectRef { 861 SVGACOTableType type; 862 uint32 cid; 863 uint32 id; 864} 865#include "vmware_pack_end.h" 866SVGACObjectRef; 867 868typedef 869#include "vmware_pack_begin.h" 870struct SVGA3dCmdDXHint { 871 SVGADXHintId hintId; 872 873 /* 874 * Followed by variable sized data depending on the hintId. 875 */ 876} 877#include "vmware_pack_end.h" 878SVGA3dCmdDXHint; 879/* SVGA_3D_CMD_DX_HINT */ 880 881typedef 882#include "vmware_pack_begin.h" 883struct SVGA3dCmdDXBufferUpdate { 884 SVGA3dSurfaceId sid; 885 uint32 x; 886 uint32 width; 887} 888#include "vmware_pack_end.h" 889SVGA3dCmdDXBufferUpdate; 890/* SVGA_3D_CMD_DX_BUFFER_UPDATE */ 891 892typedef 893#include "vmware_pack_begin.h" 894struct SVGA3dCmdDXSetConstantBufferOffset { 895 uint32 slot; 896 uint32 offsetInBytes; 897} 898#include "vmware_pack_end.h" 899SVGA3dCmdDXSetConstantBufferOffset; 900 901typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetVSConstantBufferOffset; 902/* SVGA_3D_CMD_DX_SET_VS_CONSTANT_BUFFER_OFFSET */ 903 904typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetPSConstantBufferOffset; 905/* SVGA_3D_CMD_DX_SET_PS_CONSTANT_BUFFER_OFFSET */ 906 907typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetGSConstantBufferOffset; 908/* SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET */ 909 910 911typedef 912#include "vmware_pack_begin.h" 913struct { 914 union { 915 struct { 916 uint32 firstElement; 917 uint32 numElements; 918 uint32 pad0; 919 uint32 pad1; 920 } buffer; 921 struct { 922 uint32 mostDetailedMip; 923 uint32 firstArraySlice; 924 uint32 mipLevels; 925 uint32 arraySize; 926 } tex; /* 1d, 2d, 3d, cube */ 927 struct { 928 uint32 firstElement; 929 uint32 numElements; 930 uint32 flags; 931 uint32 pad0; 932 } bufferex; 933 }; 934} 935#include "vmware_pack_end.h" 936SVGA3dShaderResourceViewDesc; 937 938typedef 939#include "vmware_pack_begin.h" 940struct { 941 SVGA3dSurfaceId sid; 942 SVGA3dSurfaceFormat format; 943 SVGA3dResourceType resourceDimension; 944 SVGA3dShaderResourceViewDesc desc; 945 uint32 pad; 946} 947#include "vmware_pack_end.h" 948SVGACOTableDXSRViewEntry; 949 950typedef 951#include "vmware_pack_begin.h" 952struct SVGA3dCmdDXDefineShaderResourceView { 953 SVGA3dShaderResourceViewId shaderResourceViewId; 954 955 SVGA3dSurfaceId sid; 956 SVGA3dSurfaceFormat format; 957 SVGA3dResourceType resourceDimension; 958 959 SVGA3dShaderResourceViewDesc desc; 960} 961#include "vmware_pack_end.h" 962SVGA3dCmdDXDefineShaderResourceView; 963/* SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW */ 964 965typedef 966#include "vmware_pack_begin.h" 967struct SVGA3dCmdDXDestroyShaderResourceView { 968 SVGA3dShaderResourceViewId shaderResourceViewId; 969} 970#include "vmware_pack_end.h" 971SVGA3dCmdDXDestroyShaderResourceView; 972/* SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW */ 973 974typedef 975#include "vmware_pack_begin.h" 976struct SVGA3dRenderTargetViewDesc { 977 union { 978 struct { 979 uint32 firstElement; 980 uint32 numElements; 981 uint32 padding0; 982 } buffer; 983 struct { 984 uint32 mipSlice; 985 uint32 firstArraySlice; 986 uint32 arraySize; 987 } tex; /* 1d, 2d, cube */ 988 struct { 989 uint32 mipSlice; 990 uint32 firstW; 991 uint32 wSize; 992 } tex3D; 993 }; 994} 995#include "vmware_pack_end.h" 996SVGA3dRenderTargetViewDesc; 997 998typedef 999#include "vmware_pack_begin.h" 1000struct { 1001 SVGA3dSurfaceId sid; 1002 SVGA3dSurfaceFormat format; 1003 SVGA3dResourceType resourceDimension; 1004 SVGA3dRenderTargetViewDesc desc; 1005 uint32 pad[2]; 1006} 1007#include "vmware_pack_end.h" 1008SVGACOTableDXRTViewEntry; 1009 1010typedef 1011#include "vmware_pack_begin.h" 1012struct SVGA3dCmdDXDefineRenderTargetView { 1013 SVGA3dRenderTargetViewId renderTargetViewId; 1014 1015 SVGA3dSurfaceId sid; 1016 SVGA3dSurfaceFormat format; 1017 SVGA3dResourceType resourceDimension; 1018 1019 SVGA3dRenderTargetViewDesc desc; 1020} 1021#include "vmware_pack_end.h" 1022SVGA3dCmdDXDefineRenderTargetView; 1023/* SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW */ 1024 1025typedef 1026#include "vmware_pack_begin.h" 1027struct SVGA3dCmdDXDestroyRenderTargetView { 1028 SVGA3dRenderTargetViewId renderTargetViewId; 1029} 1030#include "vmware_pack_end.h" 1031SVGA3dCmdDXDestroyRenderTargetView; 1032/* SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW */ 1033 1034/* 1035 */ 1036#define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_DEPTH 0x01 1037#define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_STENCIL 0x02 1038#define SVGA3D_DXDSVIEW_CREATE_FLAG_MASK 0x03 1039typedef uint8 SVGA3DCreateDSViewFlags; 1040 1041typedef 1042#include "vmware_pack_begin.h" 1043struct { 1044 SVGA3dSurfaceId sid; 1045 SVGA3dSurfaceFormat format; 1046 SVGA3dResourceType resourceDimension; 1047 uint32 mipSlice; 1048 uint32 firstArraySlice; 1049 uint32 arraySize; 1050 SVGA3DCreateDSViewFlags flags; 1051 uint8 pad0; 1052 uint16 pad1; 1053 uint32 pad2; 1054} 1055#include "vmware_pack_end.h" 1056SVGACOTableDXDSViewEntry; 1057 1058typedef 1059#include "vmware_pack_begin.h" 1060struct SVGA3dCmdDXDefineDepthStencilView { 1061 SVGA3dDepthStencilViewId depthStencilViewId; 1062 1063 SVGA3dSurfaceId sid; 1064 SVGA3dSurfaceFormat format; 1065 SVGA3dResourceType resourceDimension; 1066 uint32 mipSlice; 1067 uint32 firstArraySlice; 1068 uint32 arraySize; 1069 SVGA3DCreateDSViewFlags flags; 1070 uint8 pad0; 1071 uint16 pad1; 1072} 1073#include "vmware_pack_end.h" 1074SVGA3dCmdDXDefineDepthStencilView; 1075/* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW */ 1076 1077typedef 1078#include "vmware_pack_begin.h" 1079struct SVGA3dCmdDXDestroyDepthStencilView { 1080 SVGA3dDepthStencilViewId depthStencilViewId; 1081} 1082#include "vmware_pack_end.h" 1083SVGA3dCmdDXDestroyDepthStencilView; 1084/* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW */ 1085 1086typedef 1087#include "vmware_pack_begin.h" 1088struct SVGA3dInputElementDesc { 1089 uint32 inputSlot; 1090 uint32 alignedByteOffset; 1091 SVGA3dSurfaceFormat format; 1092 SVGA3dInputClassification inputSlotClass; 1093 uint32 instanceDataStepRate; 1094 uint32 inputRegister; 1095} 1096#include "vmware_pack_end.h" 1097SVGA3dInputElementDesc; 1098 1099typedef 1100#include "vmware_pack_begin.h" 1101struct { 1102 uint32 elid; 1103 uint32 numDescs; 1104 SVGA3dInputElementDesc desc[32]; 1105 uint32 pad[62]; 1106} 1107#include "vmware_pack_end.h" 1108SVGACOTableDXElementLayoutEntry; 1109 1110typedef 1111#include "vmware_pack_begin.h" 1112struct SVGA3dCmdDXDefineElementLayout { 1113 SVGA3dElementLayoutId elementLayoutId; 1114 /* Followed by a variable number of SVGA3dInputElementDesc's. */ 1115} 1116#include "vmware_pack_end.h" 1117SVGA3dCmdDXDefineElementLayout; 1118/* SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT */ 1119 1120typedef 1121#include "vmware_pack_begin.h" 1122struct SVGA3dCmdDXDestroyElementLayout { 1123 SVGA3dElementLayoutId elementLayoutId; 1124} 1125#include "vmware_pack_end.h" 1126SVGA3dCmdDXDestroyElementLayout; 1127/* SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT */ 1128 1129 1130#define SVGA3D_DX_MAX_RENDER_TARGETS 8 1131 1132typedef 1133#include "vmware_pack_begin.h" 1134struct SVGA3dDXBlendStatePerRT { 1135 uint8 blendEnable; 1136 uint8 srcBlend; 1137 uint8 destBlend; 1138 uint8 blendOp; 1139 uint8 srcBlendAlpha; 1140 uint8 destBlendAlpha; 1141 uint8 blendOpAlpha; 1142 SVGA3dColorWriteEnable renderTargetWriteMask; 1143 uint8 logicOpEnable; 1144 uint8 logicOp; 1145 uint16 pad0; 1146} 1147#include "vmware_pack_end.h" 1148SVGA3dDXBlendStatePerRT; 1149 1150typedef 1151#include "vmware_pack_begin.h" 1152struct { 1153 uint8 alphaToCoverageEnable; 1154 uint8 independentBlendEnable; 1155 uint16 pad0; 1156 SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS]; 1157 uint32 pad1[7]; 1158} 1159#include "vmware_pack_end.h" 1160SVGACOTableDXBlendStateEntry; 1161 1162/* 1163 */ 1164typedef 1165#include "vmware_pack_begin.h" 1166struct SVGA3dCmdDXDefineBlendState { 1167 SVGA3dBlendStateId blendId; 1168 uint8 alphaToCoverageEnable; 1169 uint8 independentBlendEnable; 1170 uint16 pad0; 1171 SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS]; 1172} 1173#include "vmware_pack_end.h" 1174SVGA3dCmdDXDefineBlendState; /* SVGA_3D_CMD_DX_DEFINE_BLEND_STATE */ 1175 1176typedef 1177#include "vmware_pack_begin.h" 1178struct SVGA3dCmdDXDestroyBlendState { 1179 SVGA3dBlendStateId blendId; 1180} 1181#include "vmware_pack_end.h" 1182SVGA3dCmdDXDestroyBlendState; /* SVGA_3D_CMD_DX_DESTROY_BLEND_STATE */ 1183 1184typedef 1185#include "vmware_pack_begin.h" 1186struct { 1187 uint8 depthEnable; 1188 SVGA3dDepthWriteMask depthWriteMask; 1189 SVGA3dComparisonFunc depthFunc; 1190 uint8 stencilEnable; 1191 uint8 frontEnable; 1192 uint8 backEnable; 1193 uint8 stencilReadMask; 1194 uint8 stencilWriteMask; 1195 1196 uint8 frontStencilFailOp; 1197 uint8 frontStencilDepthFailOp; 1198 uint8 frontStencilPassOp; 1199 SVGA3dComparisonFunc frontStencilFunc; 1200 1201 uint8 backStencilFailOp; 1202 uint8 backStencilDepthFailOp; 1203 uint8 backStencilPassOp; 1204 SVGA3dComparisonFunc backStencilFunc; 1205} 1206#include "vmware_pack_end.h" 1207SVGACOTableDXDepthStencilEntry; 1208 1209/* 1210 */ 1211typedef 1212#include "vmware_pack_begin.h" 1213struct SVGA3dCmdDXDefineDepthStencilState { 1214 SVGA3dDepthStencilStateId depthStencilId; 1215 1216 uint8 depthEnable; 1217 SVGA3dDepthWriteMask depthWriteMask; 1218 SVGA3dComparisonFunc depthFunc; 1219 uint8 stencilEnable; 1220 uint8 frontEnable; 1221 uint8 backEnable; 1222 uint8 stencilReadMask; 1223 uint8 stencilWriteMask; 1224 1225 uint8 frontStencilFailOp; 1226 uint8 frontStencilDepthFailOp; 1227 uint8 frontStencilPassOp; 1228 SVGA3dComparisonFunc frontStencilFunc; 1229 1230 uint8 backStencilFailOp; 1231 uint8 backStencilDepthFailOp; 1232 uint8 backStencilPassOp; 1233 SVGA3dComparisonFunc backStencilFunc; 1234} 1235#include "vmware_pack_end.h" 1236SVGA3dCmdDXDefineDepthStencilState; 1237/* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE */ 1238 1239typedef 1240#include "vmware_pack_begin.h" 1241struct SVGA3dCmdDXDestroyDepthStencilState { 1242 SVGA3dDepthStencilStateId depthStencilId; 1243} 1244#include "vmware_pack_end.h" 1245SVGA3dCmdDXDestroyDepthStencilState; 1246/* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE */ 1247 1248typedef 1249#include "vmware_pack_begin.h" 1250struct { 1251 uint8 fillMode; 1252 SVGA3dCullMode cullMode; 1253 uint8 frontCounterClockwise; 1254 uint8 provokingVertexLast; 1255 int32 depthBias; 1256 float depthBiasClamp; 1257 float slopeScaledDepthBias; 1258 uint8 depthClipEnable; 1259 uint8 scissorEnable; 1260 SVGA3dMultisampleRastEnable multisampleEnable; 1261 uint8 antialiasedLineEnable; 1262 float lineWidth; 1263 uint8 lineStippleEnable; 1264 uint8 lineStippleFactor; 1265 uint16 lineStipplePattern; 1266 uint32 forcedSampleCount; 1267} 1268#include "vmware_pack_end.h" 1269SVGACOTableDXRasterizerStateEntry; 1270 1271/* 1272 */ 1273typedef 1274#include "vmware_pack_begin.h" 1275struct SVGA3dCmdDXDefineRasterizerState { 1276 SVGA3dRasterizerStateId rasterizerId; 1277 1278 uint8 fillMode; 1279 SVGA3dCullMode cullMode; 1280 uint8 frontCounterClockwise; 1281 uint8 provokingVertexLast; 1282 int32 depthBias; 1283 float depthBiasClamp; 1284 float slopeScaledDepthBias; 1285 uint8 depthClipEnable; 1286 uint8 scissorEnable; 1287 SVGA3dMultisampleRastEnable multisampleEnable; 1288 uint8 antialiasedLineEnable; 1289 float lineWidth; 1290 uint8 lineStippleEnable; 1291 uint8 lineStippleFactor; 1292 uint16 lineStipplePattern; 1293} 1294#include "vmware_pack_end.h" 1295SVGA3dCmdDXDefineRasterizerState; 1296/* SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE */ 1297 1298typedef 1299#include "vmware_pack_begin.h" 1300struct SVGA3dCmdDXDestroyRasterizerState { 1301 SVGA3dRasterizerStateId rasterizerId; 1302} 1303#include "vmware_pack_end.h" 1304SVGA3dCmdDXDestroyRasterizerState; 1305/* SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE */ 1306 1307typedef 1308#include "vmware_pack_begin.h" 1309struct { 1310 SVGA3dFilter filter; 1311 uint8 addressU; 1312 uint8 addressV; 1313 uint8 addressW; 1314 uint8 pad0; 1315 float mipLODBias; 1316 uint8 maxAnisotropy; 1317 SVGA3dComparisonFunc comparisonFunc; 1318 uint16 pad1; 1319 SVGA3dRGBAFloat borderColor; 1320 float minLOD; 1321 float maxLOD; 1322 uint32 pad2[6]; 1323} 1324#include "vmware_pack_end.h" 1325SVGACOTableDXSamplerEntry; 1326 1327/* 1328 */ 1329typedef 1330#include "vmware_pack_begin.h" 1331struct SVGA3dCmdDXDefineSamplerState { 1332 SVGA3dSamplerId samplerId; 1333 SVGA3dFilter filter; 1334 uint8 addressU; 1335 uint8 addressV; 1336 uint8 addressW; 1337 uint8 pad0; 1338 float mipLODBias; 1339 uint8 maxAnisotropy; 1340 SVGA3dComparisonFunc comparisonFunc; 1341 uint16 pad1; 1342 SVGA3dRGBAFloat borderColor; 1343 float minLOD; 1344 float maxLOD; 1345} 1346#include "vmware_pack_end.h" 1347SVGA3dCmdDXDefineSamplerState; /* SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE */ 1348 1349typedef 1350#include "vmware_pack_begin.h" 1351struct SVGA3dCmdDXDestroySamplerState { 1352 SVGA3dSamplerId samplerId; 1353} 1354#include "vmware_pack_end.h" 1355SVGA3dCmdDXDestroySamplerState; /* SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE */ 1356 1357typedef 1358#include "vmware_pack_begin.h" 1359struct SVGA3dCmdDXDefineShader { 1360 SVGA3dShaderId shaderId; 1361 SVGA3dShaderType type; 1362 uint32 sizeInBytes; /* Number of bytes of shader text. */ 1363} 1364#include "vmware_pack_end.h" 1365SVGA3dCmdDXDefineShader; /* SVGA_3D_CMD_DX_DEFINE_SHADER */ 1366 1367typedef 1368#include "vmware_pack_begin.h" 1369struct SVGACOTableDXShaderEntry { 1370 SVGA3dShaderType type; 1371 uint32 sizeInBytes; 1372 uint32 offsetInBytes; 1373 SVGAMobId mobid; 1374 uint32 pad[4]; 1375} 1376#include "vmware_pack_end.h" 1377SVGACOTableDXShaderEntry; 1378 1379typedef 1380#include "vmware_pack_begin.h" 1381struct SVGA3dCmdDXDestroyShader { 1382 SVGA3dShaderId shaderId; 1383} 1384#include "vmware_pack_end.h" 1385SVGA3dCmdDXDestroyShader; /* SVGA_3D_CMD_DX_DESTROY_SHADER */ 1386 1387typedef 1388#include "vmware_pack_begin.h" 1389struct SVGA3dCmdDXBindShader { 1390 uint32 cid; 1391 uint32 shid; 1392 SVGAMobId mobid; 1393 uint32 offsetInBytes; 1394} 1395#include "vmware_pack_end.h" 1396SVGA3dCmdDXBindShader; /* SVGA_3D_CMD_DX_BIND_SHADER */ 1397 1398typedef 1399#include "vmware_pack_begin.h" 1400struct SVGA3dCmdDXBindAllShader { 1401 uint32 cid; 1402 SVGAMobId mobid; 1403} 1404#include "vmware_pack_end.h" 1405SVGA3dCmdDXBindAllShader; /* SVGA_3D_CMD_DX_BIND_ALL_SHADER */ 1406 1407typedef 1408#include "vmware_pack_begin.h" 1409struct SVGA3dCmdDXCondBindAllShader { 1410 uint32 cid; 1411 SVGAMobId testMobid; 1412 SVGAMobId mobid; 1413} 1414#include "vmware_pack_end.h" 1415SVGA3dCmdDXCondBindAllShader; /* SVGA_3D_CMD_DX_COND_BIND_ALL_SHADER */ 1416 1417/* 1418 * The maximum number of streamout decl's in each streamout entry. 1419 */ 1420#define SVGA3D_MAX_STREAMOUT_DECLS 64 1421 1422typedef 1423#include "vmware_pack_begin.h" 1424struct SVGA3dStreamOutputDeclarationEntry { 1425 uint32 outputSlot; 1426 uint32 registerIndex; 1427 uint8 registerMask; 1428 uint8 pad0; 1429 uint16 pad1; 1430 uint32 stream; 1431} 1432#include "vmware_pack_end.h" 1433SVGA3dStreamOutputDeclarationEntry; 1434 1435typedef 1436#include "vmware_pack_begin.h" 1437struct SVGAOTableStreamOutputEntry { 1438 uint32 numOutputStreamEntries; 1439 SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS]; 1440 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; 1441 uint32 rasterizedStream; 1442 uint32 pad[250]; 1443} 1444#include "vmware_pack_end.h" 1445SVGACOTableDXStreamOutputEntry; 1446 1447typedef 1448#include "vmware_pack_begin.h" 1449struct SVGA3dCmdDXDefineStreamOutput { 1450 SVGA3dStreamOutputId soid; 1451 uint32 numOutputStreamEntries; 1452 SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS]; 1453 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; 1454 uint32 rasterizedStream; 1455} 1456#include "vmware_pack_end.h" 1457SVGA3dCmdDXDefineStreamOutput; /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT */ 1458 1459typedef 1460#include "vmware_pack_begin.h" 1461struct SVGA3dCmdDXDestroyStreamOutput { 1462 SVGA3dStreamOutputId soid; 1463} 1464#include "vmware_pack_end.h" 1465SVGA3dCmdDXDestroyStreamOutput; /* SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT */ 1466 1467typedef 1468#include "vmware_pack_begin.h" 1469struct SVGA3dCmdDXSetStreamOutput { 1470 SVGA3dStreamOutputId soid; 1471} 1472#include "vmware_pack_end.h" 1473SVGA3dCmdDXSetStreamOutput; /* SVGA_3D_CMD_DX_SET_STREAMOUTPUT */ 1474 1475typedef 1476#include "vmware_pack_begin.h" 1477struct { 1478 uint64 value; 1479 uint32 mobId; 1480 uint32 mobOffset; 1481} 1482#include "vmware_pack_end.h" 1483SVGA3dCmdDXMobFence64; /* SVGA_3D_CMD_DX_MOB_FENCE_64 */ 1484 1485/* 1486 * SVGA3dCmdSetCOTable -- 1487 * 1488 * This command allows the guest to bind a mob to a context-object table. 1489 */ 1490typedef 1491#include "vmware_pack_begin.h" 1492struct SVGA3dCmdDXSetCOTable { 1493 uint32 cid; 1494 uint32 mobid; 1495 SVGACOTableType type; 1496 uint32 validSizeInBytes; 1497} 1498#include "vmware_pack_end.h" 1499SVGA3dCmdDXSetCOTable; /* SVGA_3D_CMD_DX_SET_COTABLE */ 1500 1501/* 1502 * Guests using SVGA_3D_CMD_DX_GROW_COTABLE are promising that 1503 * the new COTable contains the same contents as the old one, except possibly 1504 * for some new invalid entries at the end. 1505 * 1506 * If there is an old cotable mob bound, it also has to still be valid. 1507 * 1508 * (Otherwise, guests should use the DXSetCOTableBase command.) 1509 */ 1510typedef 1511#include "vmware_pack_begin.h" 1512struct SVGA3dCmdDXGrowCOTable { 1513 uint32 cid; 1514 uint32 mobid; 1515 SVGACOTableType type; 1516 uint32 validSizeInBytes; 1517} 1518#include "vmware_pack_end.h" 1519SVGA3dCmdDXGrowCOTable; /* SVGA_3D_CMD_DX_GROW_COTABLE */ 1520 1521typedef 1522#include "vmware_pack_begin.h" 1523struct SVGA3dCmdDXReadbackCOTable { 1524 uint32 cid; 1525 SVGACOTableType type; 1526} 1527#include "vmware_pack_end.h" 1528SVGA3dCmdDXReadbackCOTable; /* SVGA_3D_CMD_DX_READBACK_COTABLE */ 1529 1530typedef 1531#include "vmware_pack_begin.h" 1532struct SVGA3dCOTableData { 1533 uint32 mobid; 1534} 1535#include "vmware_pack_end.h" 1536SVGA3dCOTableData; 1537 1538typedef 1539#include "vmware_pack_begin.h" 1540struct SVGA3dBufferBinding { 1541 uint32 bufferId; 1542 uint32 stride; 1543 uint32 offset; 1544} 1545#include "vmware_pack_end.h" 1546SVGA3dBufferBinding; 1547 1548typedef 1549#include "vmware_pack_begin.h" 1550struct SVGA3dConstantBufferBinding { 1551 uint32 sid; 1552 uint32 offsetInBytes; 1553 uint32 sizeInBytes; 1554} 1555#include "vmware_pack_end.h" 1556SVGA3dConstantBufferBinding; 1557 1558typedef 1559#include "vmware_pack_begin.h" 1560struct SVGADXInputAssemblyMobFormat { 1561 uint32 layoutId; 1562 SVGA3dBufferBinding vertexBuffers[SVGA3D_DX_MAX_VERTEXBUFFERS]; 1563 uint32 indexBufferSid; 1564 uint32 pad; 1565 uint32 indexBufferOffset; 1566 uint32 indexBufferFormat; 1567 uint32 topology; 1568} 1569#include "vmware_pack_end.h" 1570SVGADXInputAssemblyMobFormat; 1571 1572typedef 1573#include "vmware_pack_begin.h" 1574struct SVGADXContextMobFormat { 1575 SVGADXInputAssemblyMobFormat inputAssembly; 1576 1577 struct { 1578 uint32 blendStateId; 1579 uint32 blendFactor[4]; 1580 uint32 sampleMask; 1581 uint32 depthStencilStateId; 1582 uint32 stencilRef; 1583 uint32 rasterizerStateId; 1584 uint32 depthStencilViewId; 1585 uint32 renderTargetViewIds[SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS]; 1586 uint32 unorderedAccessViewIds[SVGA3D_MAX_UAVIEWS]; 1587 } renderState; 1588 1589 struct { 1590 uint32 targets[SVGA3D_DX_MAX_SOTARGETS]; 1591 uint32 soid; 1592 } streamOut; 1593 uint32 pad0[11]; 1594 1595 uint8 numViewports; 1596 uint8 numScissorRects; 1597 uint16 pad1[1]; 1598 1599 uint32 pad2[3]; 1600 1601 SVGA3dViewport viewports[SVGA3D_DX_MAX_VIEWPORTS]; 1602 uint32 pad3[32]; 1603 1604 SVGASignedRect scissorRects[SVGA3D_DX_MAX_SCISSORRECTS]; 1605 uint32 pad4[64]; 1606 1607 struct { 1608 uint32 queryID; 1609 uint32 value; 1610 } predication; 1611 uint32 pad5[2]; 1612 1613 struct { 1614 uint32 shaderId; 1615 SVGA3dConstantBufferBinding constantBuffers[SVGA3D_DX_MAX_CONSTBUFFERS]; 1616 uint32 shaderResources[SVGA3D_DX_MAX_SRVIEWS]; 1617 uint32 samplers[SVGA3D_DX_MAX_SAMPLERS]; 1618 } shaderState[SVGA3D_NUM_SHADERTYPE]; 1619 uint32 pad6[26]; 1620 1621 SVGA3dQueryId queryID[SVGA3D_MAX_QUERY]; 1622 1623 SVGA3dCOTableData cotables[SVGA_COTABLE_MAX]; 1624 uint32 pad7[380]; 1625} 1626#include "vmware_pack_end.h" 1627SVGADXContextMobFormat; 1628 1629typedef 1630#include "vmware_pack_begin.h" 1631struct SVGA3dCmdDXTempSetContext { 1632 uint32 dxcid; 1633} 1634#include "vmware_pack_end.h" 1635SVGA3dCmdDXTempSetContext; /* SVGA_3D_CMD_DX_TEMP_SET_CONTEXT */ 1636 1637#endif /* _SVGA3D_DX_H_ */ 1638