Applying a patch from Keith Whitwell: Adds some svga3dutil support for surface flags, and uses those flags in Bunnies to specify the static VB/IB usage of its buffers. This is the same behaviour we expect from well-behaved guest drivers, and it makes Bunnies a better tool for performance testing various host configurations.
This commit is contained in:
parent
28e788a308
commit
791ddd6a8f
|
@ -167,8 +167,14 @@ main(void)
|
||||||
SVGA3DUtil_InitFullscreen(CID, 800, 600);
|
SVGA3DUtil_InitFullscreen(CID, 800, 600);
|
||||||
SVGA3DText_Init();
|
SVGA3DText_Init();
|
||||||
|
|
||||||
vertexSid = SVGA3DUtil_LoadCompressedBuffer(vbFile, &vbSize);
|
vertexSid = SVGA3DUtil_LoadCompressedBuffer(vbFile,
|
||||||
indexSid = SVGA3DUtil_LoadCompressedBuffer(ibFile, &ibSize);
|
(SVGA3D_SURFACE_HINT_VERTEXBUFFER |
|
||||||
|
SVGA3D_SURFACE_HINT_STATIC),
|
||||||
|
&vbSize);
|
||||||
|
indexSid = SVGA3DUtil_LoadCompressedBuffer(ibFile,
|
||||||
|
(SVGA3D_SURFACE_HINT_INDEXBUFFER |
|
||||||
|
SVGA3D_SURFACE_HINT_STATIC),
|
||||||
|
&ibSize);
|
||||||
|
|
||||||
Matrix_Perspective(perspectiveMat, 45.0f,
|
Matrix_Perspective(perspectiveMat, 45.0f,
|
||||||
gSVGA.width / (float)gSVGA.height, 0.1f, 100.0f);
|
gSVGA.width / (float)gSVGA.height, 0.1f, 100.0f);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/**********************************************************
|
/**********************************************************
|
||||||
* Copyright 2008-2009 VMware, Inc. All rights reserved.
|
* Copyright 2008-2010 VMware, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person
|
* Permission is hereby granted, free of charge, to any person
|
||||||
* obtaining a copy of this software and associated documentation
|
* obtaining a copy of this software and associated documentation
|
||||||
|
@ -435,6 +435,49 @@ SVGA3DUtil_DefineSurface2D(uint32 width, // IN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*----------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* SVGA3DUtil_DefineSurface2DFlags --
|
||||||
|
*
|
||||||
|
* This is a simplified version of SVGA3D_BeginDefineSurface(),
|
||||||
|
* which does not support cube maps, mipmaps, or volume textures,
|
||||||
|
* but which does allow the caller to specify whether this is an
|
||||||
|
* index or vertex buffer, and whether it is static or dynamic.
|
||||||
|
*
|
||||||
|
* Results:
|
||||||
|
* Returns the new surface ID.
|
||||||
|
*
|
||||||
|
* Side effects:
|
||||||
|
* None.
|
||||||
|
*
|
||||||
|
*----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
uint32
|
||||||
|
SVGA3DUtil_DefineSurface2DFlags(uint32 width, // IN
|
||||||
|
uint32 height, // IN
|
||||||
|
SVGA3dSurfaceFormat format, // IN
|
||||||
|
uint32 flags) // IN
|
||||||
|
{
|
||||||
|
uint32 sid;
|
||||||
|
SVGA3dSize *mipSizes;
|
||||||
|
SVGA3dSurfaceFace *faces;
|
||||||
|
|
||||||
|
sid = SVGA3DUtil_AllocSurfaceID();
|
||||||
|
SVGA3D_BeginDefineSurface(sid, flags, format, &faces, &mipSizes, 1);
|
||||||
|
|
||||||
|
faces[0].numMipLevels = 1;
|
||||||
|
|
||||||
|
mipSizes[0].width = width;
|
||||||
|
mipSizes[0].height = height;
|
||||||
|
mipSizes[0].depth = 1;
|
||||||
|
|
||||||
|
SVGA_FIFOCommitAll();
|
||||||
|
|
||||||
|
return sid;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*----------------------------------------------------------------------
|
*----------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
|
@ -538,12 +581,13 @@ SVGA3DUtil_DefineStaticBuffer(const void *data, // IN
|
||||||
|
|
||||||
uint32
|
uint32
|
||||||
SVGA3DUtil_LoadCompressedBuffer(const DataFile *file, // IN
|
SVGA3DUtil_LoadCompressedBuffer(const DataFile *file, // IN
|
||||||
|
uint32 flags, // IN
|
||||||
uint32 *pSize) // OUT (optional)
|
uint32 *pSize) // OUT (optional)
|
||||||
{
|
{
|
||||||
void *buffer;
|
void *buffer;
|
||||||
SVGAGuestPtr gPtr;
|
SVGAGuestPtr gPtr;
|
||||||
uint32 size = DataFile_GetDecompressedSize(file);
|
uint32 size = DataFile_GetDecompressedSize(file);
|
||||||
uint32 sid = SVGA3DUtil_DefineSurface2D(size, 1, SVGA3D_BUFFER);
|
uint32 sid = SVGA3DUtil_DefineSurface2DFlags(size, 1, SVGA3D_BUFFER, flags);
|
||||||
|
|
||||||
buffer = SVGA3DUtil_AllocDMABuffer(size, &gPtr);
|
buffer = SVGA3DUtil_AllocDMABuffer(size, &gPtr);
|
||||||
DataFile_Decompress(file, buffer, size);
|
DataFile_Decompress(file, buffer, size);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/**********************************************************
|
/**********************************************************
|
||||||
* Copyright 2008-2009 VMware, Inc. All rights reserved.
|
* Copyright 2008-2010 VMware, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person
|
* Permission is hereby granted, free of charge, to any person
|
||||||
* obtaining a copy of this software and associated documentation
|
* obtaining a copy of this software and associated documentation
|
||||||
|
@ -114,11 +114,14 @@ void *SVGA3DUtil_AllocDMABuffer(uint32 size, SVGAGuestPtr *ptr);
|
||||||
|
|
||||||
uint32 SVGA3DUtil_DefineSurface2D(uint32 width, uint32 height,
|
uint32 SVGA3DUtil_DefineSurface2D(uint32 width, uint32 height,
|
||||||
SVGA3dSurfaceFormat format);
|
SVGA3dSurfaceFormat format);
|
||||||
|
uint32 SVGA3DUtil_DefineSurface2DFlags(uint32 width, uint32 height, uint32 flags,
|
||||||
|
SVGA3dSurfaceFormat format);
|
||||||
void SVGA3DUtil_SurfaceDMA2D(uint32 sid, SVGAGuestPtr *guestPtr,
|
void SVGA3DUtil_SurfaceDMA2D(uint32 sid, SVGAGuestPtr *guestPtr,
|
||||||
SVGA3dTransferType transfer, uint32 width, uint32 height);
|
SVGA3dTransferType transfer, uint32 width, uint32 height);
|
||||||
|
|
||||||
uint32 SVGA3DUtil_DefineStaticBuffer(const void *data, uint32 size);
|
uint32 SVGA3DUtil_DefineStaticBuffer(const void *data, uint32 size);
|
||||||
uint32 SVGA3DUtil_LoadCompressedBuffer(const DataFile *file, uint32 *pSize);
|
uint32 SVGA3DUtil_LoadCompressedBuffer(const DataFile *file, uint32 flags,
|
||||||
|
uint32 *pSize);
|
||||||
|
|
||||||
void SVGA3DUtil_AllocDMAPool(DMAPool *self, uint32 bufferSize, uint32 numBuffers);
|
void SVGA3DUtil_AllocDMAPool(DMAPool *self, uint32 bufferSize, uint32 numBuffers);
|
||||||
DMAPoolBuffer *SVGA3DUtil_DMAPoolGetBuffer(DMAPool *self);
|
DMAPoolBuffer *SVGA3DUtil_DMAPoolGetBuffer(DMAPool *self);
|
||||||
|
|
Loading…
Reference in a new issue