mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 08:08:06 +02:00
Merge branch '7.8'
This commit is contained in:
commit
b13e305ee1
42 changed files with 149 additions and 161 deletions
16
configure.ac
16
configure.ac
|
|
@ -22,6 +22,8 @@ LIBDRM_REQUIRED=2.4.15
|
|||
LIBDRM_RADEON_REQUIRED=2.4.17
|
||||
DRI2PROTO_REQUIRED=2.1
|
||||
GLPROTO_REQUIRED=1.4.11
|
||||
LIBDRM_XORG_REQUIRED=2.4.17
|
||||
LIBKMS_XORG_REQUIRED=1.0.0
|
||||
|
||||
dnl Check for progs
|
||||
AC_PROG_CPP
|
||||
|
|
@ -1203,7 +1205,7 @@ yes)
|
|||
GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
|
||||
fi
|
||||
# Have only tested st/xorg on 1.6.0 servers
|
||||
PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
|
||||
PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0 libdrm >= $LIBDRM_XORG_REQUIRED libkms >= $LIBKMS_XORG_REQUIRED],
|
||||
HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
|
||||
HAVE_XORG="no")
|
||||
;;
|
||||
|
|
@ -1223,9 +1225,9 @@ yes)
|
|||
fi
|
||||
;;
|
||||
xorg)
|
||||
PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
|
||||
HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
|
||||
HAVE_XEXTPROTO_71="no")
|
||||
PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
|
||||
PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
|
||||
HAVE_XORG="yes"
|
||||
;;
|
||||
es)
|
||||
# mesa/es is required to build es state tracker
|
||||
|
|
@ -1237,6 +1239,12 @@ yes)
|
|||
;;
|
||||
esac
|
||||
|
||||
if test "x$HAVE_XORG" = xyes; then
|
||||
PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
|
||||
HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
|
||||
HAVE_XEXTPROTO_71="no")
|
||||
fi
|
||||
|
||||
AC_ARG_WITH([egl-displays],
|
||||
[AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
|
||||
[comma delimited native displays libEGL supports, e.g.
|
||||
|
|
|
|||
|
|
@ -644,7 +644,7 @@ Hints and Special Features:
|
|||
|
||||
- The Voodoo driver supports the GL_EXT_paletted_texture. it works
|
||||
only with GL_COLOR_INDEX8_EXT, GL_RGBA palettes and the alpha value
|
||||
is ignored because this is a limitation of the the current Glide
|
||||
is ignored because this is a limitation of the current Glide
|
||||
version and of the Voodoo hardware. See Mesa-3.1/3Dfx/demos/paltex.c for
|
||||
a demo of this extension.
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ cards.</p>
|
|||
|
||||
<ol>
|
||||
<li>
|
||||
<p>Run <code>configure</code> with the desired state trackers and and enable
|
||||
<p>Run <code>configure</code> with the desired state trackers and enable
|
||||
the Gallium driver for your hardware. For example</p>
|
||||
|
||||
<pre>
|
||||
|
|
|
|||
|
|
@ -57,13 +57,13 @@ peglgears: peglgears.o $(HEADERS) $(LIB_DEP)
|
|||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(LIBDRM_LIB) -lm
|
||||
|
||||
xeglgears: xeglgears.o $(HEADERS) $(LIB_DEP)
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lX11 -lm
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lm -L$(libdir) -lX11
|
||||
|
||||
xeglthreads: xeglthreads.o $(HEADERS) $(LIB_DEP)
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lX11 -lm
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lm -L$(libdir) -lX11
|
||||
|
||||
xegl_tri: xegl_tri.o $(HEADERS) $(LIB_DEP)
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lX11
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lm -L$(libdir) -lX11
|
||||
|
||||
clean:
|
||||
-rm -f *.o *~
|
||||
|
|
|
|||
|
|
@ -1041,7 +1041,7 @@ glmFacetNormals(GLMmodel* model)
|
|||
|
||||
/* glmVertexNormals: Generates smooth vertex normals for a model.
|
||||
* First builds a list of all the triangles each vertex is in. Then
|
||||
* loops through each vertex in the the list averaging all the facet
|
||||
* loops through each vertex in the list averaging all the facet
|
||||
* normals of the triangles each vertex is in. Finally, sets the
|
||||
* normal index in the triangle for the vertex to the generated smooth
|
||||
* normal. If the dot product of a facet normal and the facet normal
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ glmFacetNormals(GLMmodel* model);
|
|||
|
||||
/* glmVertexNormals: Generates smooth vertex normals for a model.
|
||||
* First builds a list of all the triangles each vertex is in. Then
|
||||
* loops through each vertex in the the list averaging all the facet
|
||||
* loops through each vertex in the list averaging all the facet
|
||||
* normals of the triangles each vertex is in. Finally, sets the
|
||||
* normal index in the triangle for the vertex to the generated smooth
|
||||
* normal. If the dot product of a facet normal and the facet normal
|
||||
|
|
|
|||
13
progs/redbook/.gitignore
vendored
13
progs/redbook/.gitignore
vendored
|
|
@ -12,29 +12,39 @@ bezmesh
|
|||
checker
|
||||
clip
|
||||
colormat
|
||||
combiner
|
||||
convolution
|
||||
cube
|
||||
cubemap
|
||||
depthcue
|
||||
dof
|
||||
double
|
||||
drawf
|
||||
feedback
|
||||
fog
|
||||
fogcoord
|
||||
fogindex
|
||||
font
|
||||
hello
|
||||
histogram
|
||||
image
|
||||
light
|
||||
lines
|
||||
list
|
||||
material
|
||||
minmax
|
||||
mipmap
|
||||
model
|
||||
movelight
|
||||
multisamp
|
||||
multitex
|
||||
mvarray
|
||||
nurbs
|
||||
pickdepth
|
||||
picksquare
|
||||
plane
|
||||
planet
|
||||
pointp
|
||||
polyoff
|
||||
polys
|
||||
quadric
|
||||
|
|
@ -44,10 +54,12 @@ scene
|
|||
scenebamb
|
||||
sceneflat
|
||||
select
|
||||
shadowmap
|
||||
smooth
|
||||
stencil
|
||||
stroke
|
||||
surface
|
||||
surfpoints
|
||||
teaambient
|
||||
teapots
|
||||
tess
|
||||
|
|
@ -56,6 +68,7 @@ texbind
|
|||
texgen
|
||||
texprox
|
||||
texsub
|
||||
texture3d
|
||||
texturesurf
|
||||
torus
|
||||
trim
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
* it (via \c glPopClientAttrib). After popping, the state of the VAO is
|
||||
* examined.
|
||||
*
|
||||
* According the the APPLE_vertex_array_object spec, the contents of the VAO
|
||||
* According to the APPLE_vertex_array_object spec, the contents of the VAO
|
||||
* should be restored to the values that they had when pushed.
|
||||
*
|
||||
* \author Ian Romanick <idr@us.ibm.com>
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
* it (via \c glPopClientAttrib). After popping, the state of the VAO is
|
||||
* examined.
|
||||
*
|
||||
* According the the APPLE_vertex_array_object spec, the contents of the VAO
|
||||
* According to the APPLE_vertex_array_object spec, the contents of the VAO
|
||||
* should be restored to the values that they had when pushed.
|
||||
*
|
||||
* \author Ian Romanick <idr@us.ibm.com>
|
||||
|
|
|
|||
7
progs/xdemos/.gitignore
vendored
7
progs/xdemos/.gitignore
vendored
|
|
@ -13,11 +13,14 @@ glxpixmap
|
|||
glxsnoop
|
||||
glxswapcontrol
|
||||
manywin
|
||||
msctest
|
||||
multictx
|
||||
offset
|
||||
omlsync
|
||||
overlay
|
||||
pbdemo
|
||||
pbinfo
|
||||
pbdemo
|
||||
shape
|
||||
sharedtex
|
||||
sharedtex_mt
|
||||
texture_from_pixmap
|
||||
|
|
@ -26,5 +29,3 @@ xdemo
|
|||
xfont
|
||||
xrotfontdemo
|
||||
yuvrect_client
|
||||
msctest
|
||||
omlsync
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
|
|||
# Add X11 and pthread libs to satisfy GNU gold.
|
||||
APP_LIB_DEPS += -lX11 -lpthread
|
||||
|
||||
LIBS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) $(APP_LIB_DEPS)
|
||||
LIBS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -L$(libdir) $(APP_LIB_DEPS)
|
||||
|
||||
PROGS = \
|
||||
corender \
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ os_time_sleep(int64_t usecs);
|
|||
/*
|
||||
* Helper function for detecting time outs, taking in account overflow.
|
||||
*
|
||||
* Returns true the the current time has elapsed beyond the specified interval.
|
||||
* Returns true if the current time has elapsed beyond the specified interval.
|
||||
*/
|
||||
static INLINE boolean
|
||||
os_time_timeout(int64_t start,
|
||||
|
|
|
|||
|
|
@ -1352,7 +1352,7 @@ gen_stencil_values(struct spe_function *f,
|
|||
*/
|
||||
ASSERT(fbS_reg != newS_reg);
|
||||
|
||||
/* The code also assumes the the stencil_max_value is of the form
|
||||
/* The code also assumes that the stencil_max_value is of the form
|
||||
* 2^n-1 and can therefore be used as a mask for the valid bits in
|
||||
* addition to a maximum. Make sure this is the case as well.
|
||||
* The clever math below exploits the fact that incrementing a
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ cell_thread_function(void *arg)
|
|||
|
||||
/**
|
||||
* Create the SPU threads. This is done once during driver initialization.
|
||||
* This involves setting the the "init" message which is sent to each SPU.
|
||||
* This involves setting the "init" message which is sent to each SPU.
|
||||
* The init message specifies an SPU id, total number of SPUs, location
|
||||
* and number of batch buffers, etc.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -742,7 +742,7 @@ nv40_vertprog_translate(struct nv40_context *nv40,
|
|||
}
|
||||
|
||||
/* Redirect post-transform vertex position to a temp if user clip
|
||||
* planes are enabled. We need to append code the the vtxprog
|
||||
* planes are enabled. We need to append code to the vtxprog
|
||||
* to handle clip planes later.
|
||||
*/
|
||||
if (vp->ucp.nr) {
|
||||
|
|
|
|||
|
|
@ -540,7 +540,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
# define R300_PVS_FIRST_INST(x) ((x) << 0)
|
||||
# define R300_PVS_XYZW_VALID_INST(x) ((x) << 10)
|
||||
# define R300_PVS_LAST_INST(x) ((x) << 20)
|
||||
/* Addresses are relative the the vertex program parameters area. */
|
||||
/* Addresses are relative to the vertex program parameters area. */
|
||||
#define R300_VAP_PVS_CONST_CNTL 0x22D4
|
||||
# define R300_PVS_CONST_BASE_OFFSET_SHIFT 0
|
||||
# define R300_PVS_MAX_CONST_ADDR_SHIFT 16
|
||||
|
|
@ -1857,7 +1857,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
* The destination register index is in FPI1 (color) and FPI3 (alpha)
|
||||
* together with enable bits.
|
||||
* There are separate enable bits for writing into temporary registers
|
||||
* (DSTC_REG_* /DSTA_REG) and and program output registers (DSTC_OUTPUT_*
|
||||
* (DSTC_REG_* /DSTA_REG) and program output registers (DSTC_OUTPUT_*
|
||||
* /DSTA_OUTPUT). You can write to both at once, or not write at all (the
|
||||
* same index must be used for both).
|
||||
*
|
||||
|
|
|
|||
|
|
@ -90,6 +90,9 @@ dri_fill_in_modes(struct dri_screen *screen,
|
|||
unsigned pixel_bits)
|
||||
{
|
||||
__DRIconfig **configs = NULL;
|
||||
__DRIconfig **configs_r5g6b5 = NULL;
|
||||
__DRIconfig **configs_a8r8g8b8 = NULL;
|
||||
__DRIconfig **configs_x8r8g8b8 = NULL;
|
||||
unsigned num_modes;
|
||||
uint8_t depth_bits_array[5];
|
||||
uint8_t stencil_bits_array[5];
|
||||
|
|
@ -127,25 +130,23 @@ dri_fill_in_modes(struct dri_screen *screen,
|
|||
pf_x8r8g8b8 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_B8G8R8X8_UNORM,
|
||||
PIPE_TEXTURE_2D,
|
||||
PIPE_TEXTURE_USAGE_RENDER_TARGET, 0);
|
||||
pf_r5g6b5 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_B5G6R5_UNORM,
|
||||
PIPE_TEXTURE_2D,
|
||||
PIPE_TEXTURE_USAGE_RENDER_TARGET, 0);
|
||||
|
||||
/* we support buffers with different depths only if we can tell the driver
|
||||
* the actual depth of each of them. */
|
||||
if (screen->sPriv->dri2.loader
|
||||
&& (screen->sPriv->dri2.loader->base.version > 2)
|
||||
&& (screen->sPriv->dri2.loader->getBuffersWithFormat != NULL)) {
|
||||
/* We can only get a 16 or 32 bit depth buffer with getBuffersWithFormat */
|
||||
if (screen->sPriv->dri2.loader &&
|
||||
(screen->sPriv->dri2.loader->base.version > 2) &&
|
||||
(screen->sPriv->dri2.loader->getBuffersWithFormat != NULL)) {
|
||||
pf_z16 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z16_UNORM,
|
||||
PIPE_TEXTURE_2D,
|
||||
PIPE_TEXTURE_USAGE_DEPTH_STENCIL, 0);
|
||||
pf_z32 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z32_UNORM,
|
||||
PIPE_TEXTURE_2D,
|
||||
PIPE_TEXTURE_USAGE_DEPTH_STENCIL, 0);
|
||||
pf_r5g6b5 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_B5G6R5_UNORM,
|
||||
PIPE_TEXTURE_2D,
|
||||
PIPE_TEXTURE_USAGE_RENDER_TARGET, 0);
|
||||
} else {
|
||||
pf_z16 = FALSE;
|
||||
pf_z32 = FALSE;
|
||||
pf_r5g6b5 = FALSE;
|
||||
}
|
||||
|
||||
if (pf_z16) {
|
||||
|
|
@ -175,46 +176,48 @@ dri_fill_in_modes(struct dri_screen *screen,
|
|||
num_modes =
|
||||
depth_buffer_factor * back_buffer_factor * msaa_samples_factor * 4;
|
||||
|
||||
if (pixel_bits == 16 && pf_r5g6b5) {
|
||||
configs = driCreateConfigs(GL_RGB, GL_UNSIGNED_SHORT_5_6_5,
|
||||
depth_bits_array, stencil_bits_array,
|
||||
depth_buffer_factor, back_buffer_modes,
|
||||
back_buffer_factor,
|
||||
msaa_samples_array, msaa_samples_factor,
|
||||
GL_TRUE);
|
||||
if (pf_r5g6b5)
|
||||
configs_r5g6b5 = driCreateConfigs(GL_RGB, GL_UNSIGNED_SHORT_5_6_5,
|
||||
depth_bits_array, stencil_bits_array,
|
||||
depth_buffer_factor, back_buffer_modes,
|
||||
back_buffer_factor,
|
||||
msaa_samples_array, msaa_samples_factor,
|
||||
GL_TRUE);
|
||||
|
||||
if (pf_a8r8g8b8)
|
||||
configs_a8r8g8b8 = driCreateConfigs(GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV,
|
||||
depth_bits_array,
|
||||
stencil_bits_array,
|
||||
depth_buffer_factor,
|
||||
back_buffer_modes,
|
||||
back_buffer_factor,
|
||||
msaa_samples_array,
|
||||
msaa_samples_factor,
|
||||
GL_TRUE);
|
||||
|
||||
if (pf_x8r8g8b8)
|
||||
configs_x8r8g8b8 = driCreateConfigs(GL_BGR, GL_UNSIGNED_INT_8_8_8_8_REV,
|
||||
depth_bits_array,
|
||||
stencil_bits_array,
|
||||
depth_buffer_factor,
|
||||
back_buffer_modes,
|
||||
back_buffer_factor,
|
||||
msaa_samples_array,
|
||||
msaa_samples_factor,
|
||||
GL_TRUE);
|
||||
|
||||
if (pixel_bits == 16) {
|
||||
configs = configs_r5g6b5;
|
||||
if (configs_a8r8g8b8)
|
||||
configs = configs ? driConcatConfigs(configs, configs_a8r8g8b8) : configs_a8r8g8b8;
|
||||
if (configs_x8r8g8b8)
|
||||
configs = configs ? driConcatConfigs(configs, configs_x8r8g8b8) : configs_x8r8g8b8;
|
||||
} else {
|
||||
__DRIconfig **configs_a8r8g8b8 = NULL;
|
||||
__DRIconfig **configs_x8r8g8b8 = NULL;
|
||||
|
||||
if (pf_a8r8g8b8)
|
||||
configs_a8r8g8b8 = driCreateConfigs(GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV,
|
||||
depth_bits_array,
|
||||
stencil_bits_array,
|
||||
depth_buffer_factor,
|
||||
back_buffer_modes,
|
||||
back_buffer_factor,
|
||||
msaa_samples_array,
|
||||
msaa_samples_factor,
|
||||
GL_TRUE);
|
||||
if (pf_x8r8g8b8)
|
||||
configs_x8r8g8b8 = driCreateConfigs(GL_BGR, GL_UNSIGNED_INT_8_8_8_8_REV,
|
||||
depth_bits_array,
|
||||
stencil_bits_array,
|
||||
depth_buffer_factor,
|
||||
back_buffer_modes,
|
||||
back_buffer_factor,
|
||||
msaa_samples_array,
|
||||
msaa_samples_factor,
|
||||
GL_TRUE);
|
||||
|
||||
if (configs_a8r8g8b8 && configs_x8r8g8b8)
|
||||
configs = driConcatConfigs(configs_x8r8g8b8, configs_a8r8g8b8);
|
||||
else if (configs_a8r8g8b8)
|
||||
configs = configs_a8r8g8b8;
|
||||
else if (configs_x8r8g8b8)
|
||||
configs = configs_x8r8g8b8;
|
||||
else
|
||||
configs = NULL;
|
||||
configs = configs_a8r8g8b8;
|
||||
if (configs_x8r8g8b8)
|
||||
configs = configs ? driConcatConfigs(configs, configs_x8r8g8b8) : configs_x8r8g8b8;
|
||||
if (configs_r5g6b5)
|
||||
configs = configs ? driConcatConfigs(configs, configs_r5g6b5) : configs_r5g6b5;
|
||||
}
|
||||
|
||||
if (configs == NULL) {
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ struct stw_framebuffer
|
|||
/**
|
||||
* This mutex has two purposes:
|
||||
* - protect the access to the mutable data members below
|
||||
* - prevent the the framebuffer from being deleted while being accessed.
|
||||
* - prevent the framebuffer from being deleted while being accessed.
|
||||
*
|
||||
* It is OK to lock this mutex while holding the stw_device::fb_mutex lock,
|
||||
* but the opposite must never happen.
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ if env['platform'] == 'linux':
|
|||
svgadrm,
|
||||
svga,
|
||||
mesa,
|
||||
glsl,
|
||||
gallium,
|
||||
])
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
*or both at or below v. In addition, at least one of the ajacent verteces is
|
||||
*strictly below or above v.
|
||||
* A vertex is a relex vertex if the internals angle is strictly greater than
|
||||
*180. In other words, if the the signed area is negative:
|
||||
*180. In other words, if the signed area is negative:
|
||||
*(x1, y1), (x2, y2), (x3, y3) are the three vertices along a polygon, the
|
||||
*order is such that left hand side is inside the polygon. Then (x2,y2) is
|
||||
*reflex if:
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ static void CheckOrientation( GLUtesselator *tess )
|
|||
GLUhalfEdge *e;
|
||||
|
||||
/* When we compute the normal automatically, we choose the orientation
|
||||
* so that the the sum of the signed areas of all contours is non-negative.
|
||||
* so that the sum of the signed areas of all contours is non-negative.
|
||||
*/
|
||||
area = 0;
|
||||
for( f = fHead->next; f != fHead; f = f->next ) {
|
||||
|
|
|
|||
|
|
@ -698,7 +698,7 @@ setupLoaderExtensions(__DRIscreen *psp,
|
|||
* \param drm_version Version of the kernel DRM.
|
||||
* \param frame_buffer Data describing the location and layout of the
|
||||
* framebuffer.
|
||||
* \param pSAREA Pointer the the SAREA.
|
||||
* \param pSAREA Pointer to the SAREA.
|
||||
* \param fd Device handle for the DRM.
|
||||
* \param extensions ??
|
||||
* \param driver_modes Returns modes suppoted by the driver
|
||||
|
|
|
|||
|
|
@ -468,7 +468,7 @@ static void r128TexEnv( GLcontext *ctx, GLenum target,
|
|||
* certain point. It is better than completely ignoring the LOD
|
||||
* bias. Unfortunately there isn't much range in the bias, the
|
||||
* spec mentions strides that vary between 0.5 and 2.0 but these
|
||||
* numbers don't seem to relate the the GL LOD bias value at all.
|
||||
* numbers don't seem to relate to the GL LOD bias value at all.
|
||||
*/
|
||||
if ( param[0] >= 1.0 ) {
|
||||
bias = -128;
|
||||
|
|
|
|||
|
|
@ -690,7 +690,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
# define R200_PVS_CNTL_1_PROGRAM_START_SHIFT 0
|
||||
# define R200_PVS_CNTL_1_POS_END_SHIFT 10
|
||||
# define R200_PVS_CNTL_1_PROGRAM_END_SHIFT 20
|
||||
/* Addresses are relative the the vertex program parameters area. */
|
||||
/* Addresses are relative to the vertex program parameters area. */
|
||||
#define R200_VAP_PVS_CNTL_2 0x22d4
|
||||
# define R200_PVS_CNTL_2_PARAM_OFFSET_SHIFT 0
|
||||
# define R200_PVS_CNTL_2_PARAM_COUNT_SHIFT 16
|
||||
|
|
|
|||
|
|
@ -482,7 +482,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
# define R300_PVS_FIRST_INST_SHIFT 0
|
||||
# define R300_PVS_XYZW_VALID_INST_SHIFT 10
|
||||
# define R300_PVS_LAST_INST_SHIFT 20
|
||||
/* Addresses are relative the the vertex program parameters area. */
|
||||
/* Addresses are relative to the vertex program parameters area. */
|
||||
#define R300_VAP_PVS_CONST_CNTL 0x22D4
|
||||
# define R300_PVS_CONST_BASE_OFFSET_SHIFT 0
|
||||
# define R300_PVS_MAX_CONST_ADDR_SHIFT 16
|
||||
|
|
@ -1760,7 +1760,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
* The destination register index is in FPI1 (color) and FPI3 (alpha)
|
||||
* together with enable bits.
|
||||
* There are separate enable bits for writing into temporary registers
|
||||
* (DSTC_REG_* /DSTA_REG) and and program output registers (DSTC_OUTPUT_*
|
||||
* (DSTC_REG_* /DSTA_REG) and program output registers (DSTC_OUTPUT_*
|
||||
* /DSTA_OUTPUT). You can write to both at once, or not write at all (the
|
||||
* same index must be used for both).
|
||||
*
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@
|
|||
#include "radeon_debug.h"
|
||||
#include "r600_context.h"
|
||||
#include "r600_cmdbuf.h"
|
||||
#include "shader/programopt.c"
|
||||
#include "shader/programopt.h"
|
||||
|
||||
#include "r700_debug.h"
|
||||
#include "r700_vertprog.h"
|
||||
|
|
|
|||
|
|
@ -553,6 +553,8 @@ static radeon_mipmap_tree * get_biggest_matching_miptree(radeonTexObj *texObj,
|
|||
}
|
||||
|
||||
if (mtCount == 0) {
|
||||
free(mtSizes);
|
||||
free(mts);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1901,7 +1901,7 @@ void radeonUploadTexMatrix( r100ContextPtr rmesa,
|
|||
So: if we need the q coord in the end (solely determined by the texture
|
||||
target, i.e. 2d / 1d / texrect targets) we swap the third and 4th row.
|
||||
Additionally, if we don't have texgen but 4 tex coords submitted, we swap
|
||||
column 3 and 4 (for the 2d / 1d / texrect targets) since the the q coord
|
||||
column 3 and 4 (for the 2d / 1d / texrect targets) since the q coord
|
||||
will get submitted in the "wrong", i.e. 3rd, slot.
|
||||
If an app submits 3 coords for 2d targets, we assume it is saving on vertex
|
||||
size and using the texture matrix to swap the r and q coords around (ut2k3
|
||||
|
|
|
|||
|
|
@ -287,7 +287,7 @@ extern void XMesaCopySubBuffer( XMesaBuffer b,
|
|||
|
||||
|
||||
/*
|
||||
* Return a pointer to the the Pixmap or XImage being used as the back
|
||||
* Return a pointer to the Pixmap or XImage being used as the back
|
||||
* color buffer of an XMesaBuffer. This function is a way to get "under
|
||||
* the hood" of X/Mesa so one can manipulate the back buffer directly.
|
||||
* Input: b - the XMesaBuffer
|
||||
|
|
|
|||
|
|
@ -431,7 +431,7 @@ extern const int xmesa_kernel8[DITH_DY * DITH_DX];
|
|||
* If pixelformat==PF_HPCR:
|
||||
*
|
||||
* HP Color Recovery dithering (ad@lms.be 30/08/95)
|
||||
* HP has on it's 8-bit 700-series computers, a feature called
|
||||
* HP has on its 8-bit 700-series computers, a feature called
|
||||
* 'Color Recovery'. This allows near 24-bit output (so they say).
|
||||
* It is enabled by selecting the 8-bit TrueColor visual AND
|
||||
* corresponding colormap (see tkInitWindow) AND doing some special
|
||||
|
|
|
|||
|
|
@ -1072,7 +1072,7 @@ struct dd_function_table {
|
|||
* These are the initial values to be installed into dispatch by
|
||||
* mesa. If the T&L driver wants to modify the dispatch table
|
||||
* while installed, it must do so itself. It would be possible for
|
||||
* the vertexformat to install it's own initial values for these
|
||||
* the vertexformat to install its own initial values for these
|
||||
* functions, but this way there is an obvious list of what is
|
||||
* expected of the driver.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -476,7 +476,7 @@ fxt1_lloyd (GLfloat vec[][MAX_COMP], GLint nv,
|
|||
* for each sample color
|
||||
* sort to nearest vector.
|
||||
*
|
||||
* replace each vector with the centroid of it's matching colors.
|
||||
* replace each vector with the centroid of its matching colors.
|
||||
*
|
||||
* repeat until RMS doesn't improve.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ extern long counter_overhead;
|
|||
*/
|
||||
extern char *mesa_profile;
|
||||
|
||||
/* Modify the the number of tests if you like.
|
||||
/* Modify the number of tests if you like.
|
||||
* We take the minimum of all results, because every error should be
|
||||
* positive (time used by other processes, task switches etc).
|
||||
* It is assumed that all calculations are done in the cache.
|
||||
|
|
|
|||
|
|
@ -889,7 +889,7 @@ _math_matrix_rotate( GLmatrix *mat,
|
|||
* Y-axis to bring the axis vector parallel with the X-axis. The
|
||||
* rotation about the X-axis is then performed. Ry and Rz are
|
||||
* simply the respective inverse transforms to bring the arbitrary
|
||||
* axis back to it's original orientation. The first transforms
|
||||
* axis back to its original orientation. The first transforms
|
||||
* Rz' and Ry' are considered inverses, since the data from the
|
||||
* arbitrary axis gives you info on how to get to it, not how
|
||||
* to get away from it, and an inverse must be applied.
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ typedef int flex_int32_t;
|
|||
typedef unsigned char flex_uint8_t;
|
||||
typedef unsigned short int flex_uint16_t;
|
||||
typedef unsigned int flex_uint32_t;
|
||||
#endif /* ! C99 */
|
||||
|
||||
/* Limits of integral types. */
|
||||
#ifndef INT8_MIN
|
||||
|
|
@ -83,8 +84,6 @@ typedef unsigned int flex_uint32_t;
|
|||
#define UINT32_MAX (4294967295U)
|
||||
#endif
|
||||
|
||||
#endif /* ! C99 */
|
||||
|
||||
#endif /* ! FLEXINT_H */
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
@ -158,15 +157,7 @@ typedef void* yyscan_t;
|
|||
|
||||
/* Size of default input buffer. */
|
||||
#ifndef YY_BUF_SIZE
|
||||
#ifdef __ia64__
|
||||
/* On IA-64, the buffer size is 16k, not 8k.
|
||||
* Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
|
||||
* Ditto for the __ia64__ case accordingly.
|
||||
*/
|
||||
#define YY_BUF_SIZE 32768
|
||||
#else
|
||||
#define YY_BUF_SIZE 16384
|
||||
#endif /* __ia64__ */
|
||||
#endif
|
||||
|
||||
/* The state buf must be large enough to hold one state per character in the main buffer.
|
||||
|
|
@ -1161,7 +1152,7 @@ handle_ident(struct asm_parser_state *state, const char *text, YYSTYPE *lval)
|
|||
} while(0);
|
||||
|
||||
#define YY_EXTRA_TYPE struct asm_parser_state *
|
||||
#line 1165 "lex.yy.c"
|
||||
#line 1156 "lex.yy.c"
|
||||
|
||||
#define INITIAL 0
|
||||
|
||||
|
|
@ -1298,12 +1289,7 @@ static int input (yyscan_t yyscanner );
|
|||
|
||||
/* Amount of stuff to slurp up with each read. */
|
||||
#ifndef YY_READ_BUF_SIZE
|
||||
#ifdef __ia64__
|
||||
/* On IA-64, the buffer size is 16k, not 8k */
|
||||
#define YY_READ_BUF_SIZE 16384
|
||||
#else
|
||||
#define YY_READ_BUF_SIZE 8192
|
||||
#endif /* __ia64__ */
|
||||
#endif
|
||||
|
||||
/* Copy whatever the last rule matched to the standard output. */
|
||||
|
|
@ -1311,7 +1297,7 @@ static int input (yyscan_t yyscanner );
|
|||
/* This used to be an fputs(), but since the string might contain NUL's,
|
||||
* we now use fwrite().
|
||||
*/
|
||||
#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
|
||||
#define ECHO fwrite( yytext, yyleng, 1, yyout )
|
||||
#endif
|
||||
|
||||
/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
|
||||
|
|
@ -1322,7 +1308,7 @@ static int input (yyscan_t yyscanner );
|
|||
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
|
||||
{ \
|
||||
int c = '*'; \
|
||||
size_t n; \
|
||||
unsigned n; \
|
||||
for ( n = 0; n < max_size && \
|
||||
(c = getc( yyin )) != EOF && c != '\n'; ++n ) \
|
||||
buf[n] = (char) c; \
|
||||
|
|
@ -1410,7 +1396,7 @@ YY_DECL
|
|||
#line 157 "program_lexer.l"
|
||||
|
||||
|
||||
#line 1414 "lex.yy.c"
|
||||
#line 1400 "lex.yy.c"
|
||||
|
||||
yylval = yylval_param;
|
||||
|
||||
|
|
@ -2212,7 +2198,7 @@ case 142:
|
|||
YY_RULE_SETUP
|
||||
#line 326 "program_lexer.l"
|
||||
{
|
||||
yylval->real = _mesa_strtod(yytext, NULL);
|
||||
yylval->real = (float) _mesa_strtod(yytext, NULL);
|
||||
return REAL;
|
||||
}
|
||||
YY_BREAK
|
||||
|
|
@ -2224,7 +2210,7 @@ YY_DO_BEFORE_ACTION; /* set up yytext again */
|
|||
YY_RULE_SETUP
|
||||
#line 330 "program_lexer.l"
|
||||
{
|
||||
yylval->real = _mesa_strtod(yytext, NULL);
|
||||
yylval->real = (float) _mesa_strtod(yytext, NULL);
|
||||
return REAL;
|
||||
}
|
||||
YY_BREAK
|
||||
|
|
@ -2232,7 +2218,7 @@ case 144:
|
|||
YY_RULE_SETUP
|
||||
#line 334 "program_lexer.l"
|
||||
{
|
||||
yylval->real = _mesa_strtod(yytext, NULL);
|
||||
yylval->real = (float) _mesa_strtod(yytext, NULL);
|
||||
return REAL;
|
||||
}
|
||||
YY_BREAK
|
||||
|
|
@ -2240,7 +2226,7 @@ case 145:
|
|||
YY_RULE_SETUP
|
||||
#line 338 "program_lexer.l"
|
||||
{
|
||||
yylval->real = _mesa_strtod(yytext, NULL);
|
||||
yylval->real = (float) _mesa_strtod(yytext, NULL);
|
||||
return REAL;
|
||||
}
|
||||
YY_BREAK
|
||||
|
|
@ -2474,7 +2460,7 @@ YY_RULE_SETUP
|
|||
#line 481 "program_lexer.l"
|
||||
ECHO;
|
||||
YY_BREAK
|
||||
#line 2478 "lex.yy.c"
|
||||
#line 2464 "lex.yy.c"
|
||||
case YY_STATE_EOF(INITIAL):
|
||||
yyterminate();
|
||||
|
||||
|
|
@ -3242,8 +3228,8 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
|
|||
|
||||
/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
|
||||
* scan from a @e copy of @a bytes.
|
||||
* @param yybytes the byte buffer to scan
|
||||
* @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
|
||||
* @param bytes the byte buffer to scan
|
||||
* @param len the number of bytes in the buffer pointed to by @a bytes.
|
||||
* @param yyscanner The scanner object.
|
||||
* @return the newly allocated buffer state object.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -97,8 +97,8 @@
|
|||
#define COND_EQ 2 /**< equal to zero */
|
||||
#define COND_LT 3 /**< less than zero */
|
||||
#define COND_UN 4 /**< unordered (NaN) */
|
||||
#define COND_GE 5 /**< greater then or equal to zero */
|
||||
#define COND_LE 6 /**< less then or equal to zero */
|
||||
#define COND_GE 5 /**< greater than or equal to zero */
|
||||
#define COND_LE 6 /**< less than or equal to zero */
|
||||
#define COND_NE 7 /**< not equal to zero */
|
||||
#define COND_TR 8 /**< always true */
|
||||
#define COND_FL 9 /**< always false */
|
||||
|
|
|
|||
|
|
@ -324,19 +324,19 @@ ARRAYSHADOW2D { return_token_or_IDENTIFIER(require_ARB_fp && require
|
|||
return INTEGER;
|
||||
}
|
||||
{num}?{frac}{exp}? {
|
||||
yylval->real = _mesa_strtod(yytext, NULL);
|
||||
yylval->real = (float) _mesa_strtod(yytext, NULL);
|
||||
return REAL;
|
||||
}
|
||||
{num}"."/[^.] {
|
||||
yylval->real = _mesa_strtod(yytext, NULL);
|
||||
yylval->real = (float) _mesa_strtod(yytext, NULL);
|
||||
return REAL;
|
||||
}
|
||||
{num}{exp} {
|
||||
yylval->real = _mesa_strtod(yytext, NULL);
|
||||
yylval->real = (float) _mesa_strtod(yytext, NULL);
|
||||
return REAL;
|
||||
}
|
||||
{num}"."{exp} {
|
||||
yylval->real = _mesa_strtod(yytext, NULL);
|
||||
yylval->real = (float) _mesa_strtod(yytext, NULL);
|
||||
return REAL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ struct asm_symbol {
|
|||
*/
|
||||
unsigned param_binding_swizzle;
|
||||
|
||||
/* This is how many entries in the the program_parameter_list we take up
|
||||
/* This is how many entries in the program_parameter_list we take up
|
||||
* with our state tokens or constants. Note that this is _not_ the same as
|
||||
* the number of param registers we eventually use.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -695,7 +695,7 @@ vec3 normalize(const vec3 v)
|
|||
{
|
||||
// const float s = inversesqrt(dot(v, v));
|
||||
// __retVal = v * s;
|
||||
// XXX note, we _could_ use __retVal.w instead of tmp and and save a
|
||||
// XXX note, we _could_ use __retVal.w instead of tmp and save a
|
||||
// register, but that's actually a compilation error because v is a vec3
|
||||
// and the .w suffix is illegal. Oh well.
|
||||
float tmp;
|
||||
|
|
|
|||
|
|
@ -167,9 +167,7 @@ st_set_framebuffer_surface(struct st_framebuffer *stfb,
|
|||
uint surfIndex, struct pipe_surface *surf)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
static const GLuint invalid_size = 9999999;
|
||||
struct st_renderbuffer *strb;
|
||||
GLuint width, height, i;
|
||||
|
||||
/* sanity checks */
|
||||
assert(ST_SURFACE_FRONT_LEFT == BUFFER_FRONT_LEFT);
|
||||
|
|
@ -183,18 +181,17 @@ st_set_framebuffer_surface(struct st_framebuffer *stfb,
|
|||
strb = st_renderbuffer(stfb->Base.Attachment[surfIndex].Renderbuffer);
|
||||
|
||||
if (!strb) {
|
||||
if (surfIndex == ST_SURFACE_FRONT_LEFT) {
|
||||
/* Delayed creation when the window system supplies a fake front buffer */
|
||||
struct st_renderbuffer *strb_back
|
||||
= st_renderbuffer(stfb->Base.Attachment[ST_SURFACE_BACK_LEFT].Renderbuffer);
|
||||
struct gl_renderbuffer *rb
|
||||
= st_new_renderbuffer_fb(surf->format, strb_back->Base.NumSamples, FALSE);
|
||||
_mesa_add_renderbuffer(&stfb->Base, BUFFER_FRONT_LEFT, rb);
|
||||
strb = st_renderbuffer(rb);
|
||||
} else {
|
||||
/* fail */
|
||||
/* create new renderbuffer for this surface now */
|
||||
const GLuint numSamples = stfb->Base.Visual.samples;
|
||||
struct gl_renderbuffer *rb =
|
||||
st_new_renderbuffer_fb(surf->format, numSamples, FALSE);
|
||||
if (!rb) {
|
||||
/* out of memory */
|
||||
_mesa_warning(ctx, "Out of memory allocating renderbuffer");
|
||||
return;
|
||||
}
|
||||
_mesa_add_renderbuffer(&stfb->Base, surfIndex, rb);
|
||||
strb = st_renderbuffer(rb);
|
||||
}
|
||||
|
||||
/* replace the renderbuffer's surface/texture pointers */
|
||||
|
|
@ -206,39 +203,16 @@ st_set_framebuffer_surface(struct st_framebuffer *stfb,
|
|||
* But when we do, we need to start setting this dirty bit
|
||||
* to ensure the renderbuffer attachements are up-to-date
|
||||
* via update_framebuffer.
|
||||
* Core Mesa's state validation will update the parent framebuffer's
|
||||
* size info, etc.
|
||||
*/
|
||||
ctx->st->dirty.st |= ST_NEW_FRAMEBUFFER;
|
||||
ctx->NewState |= _NEW_BUFFERS;
|
||||
}
|
||||
|
||||
/* update renderbuffer's width/height */
|
||||
strb->Base.Width = surf->width;
|
||||
strb->Base.Height = surf->height;
|
||||
|
||||
/* Try to update the framebuffer's width/height from the renderbuffer
|
||||
* sizes. Before we start drawing, all the rbs _should_ be the same size.
|
||||
*/
|
||||
width = height = invalid_size;
|
||||
for (i = 0; i < BUFFER_COUNT; i++) {
|
||||
if (stfb->Base.Attachment[i].Renderbuffer) {
|
||||
if (width == invalid_size) {
|
||||
width = stfb->Base.Attachment[i].Renderbuffer->Width;
|
||||
height = stfb->Base.Attachment[i].Renderbuffer->Height;
|
||||
}
|
||||
else if (width != stfb->Base.Attachment[i].Renderbuffer->Width ||
|
||||
height != stfb->Base.Attachment[i].Renderbuffer->Height) {
|
||||
/* inconsistant renderbuffer sizes, bail out */
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (width != invalid_size) {
|
||||
/* OK, the renderbuffers are of a consistant size, so update the
|
||||
* parent framebuffer's size.
|
||||
*/
|
||||
stfb->Base.Width = width;
|
||||
stfb->Base.Height = height;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -526,7 +526,7 @@ _swrast_depth_clamp_span( GLcontext *ctx, SWspan *span )
|
|||
|
||||
/* Convert floating point values in [0,1] to device Z coordinates in
|
||||
* [0, DepthMax].
|
||||
* ex: If the the Z buffer has 24 bits, DepthMax = 0xffffff.
|
||||
* ex: If the Z buffer has 24 bits, DepthMax = 0xffffff.
|
||||
*
|
||||
* XXX this all falls apart if we have 31 or more bits of Z because
|
||||
* the triangle rasterization code produces unsigned Z values. Negative
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ struct loopback_attr {
|
|||
};
|
||||
|
||||
/* Don't emit ends and begins on wrapped primitives. Don't replay
|
||||
* wrapped vertices. If we get here, it's probably because the the
|
||||
* wrapped vertices. If we get here, it's probably because the
|
||||
* precalculated wrapping is wrong.
|
||||
*/
|
||||
static void loopback_prim( GLcontext *ctx,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue